[
  {
    "path": ".circleci/config.yml",
    "content": "defaults:\n  &defaults\n  docker:\n    # TODO: Try to replace this with `mythril/mythx-ci` image. That image is\n    # used for new integration testing, and it is build on top of the previous\n    # `mythril/dev_test_environment:0.0.43`, though a bit newer versions, thus\n    # there is a chance that it breaks some small things.\n    - image: norhh/mythril-ci\n\nversion: 2\njobs:\n  # Basic testing of a new commit to any branch.\n  test:\n    <<: *defaults\n    parallelism: 4\n    steps:\n      - checkout:\n          path: /home/mythril\n\n      # Uncomment, for local testing with circleci command, as it ignores\n      # path param in checkout command, and this symlink compenstates for that.\n      # - run: ln -s /root/project /home/mythril\n      - restore-cache:\n          keys:\n            - tox-env-{{ checksum \"/home/mythril/setup.py\" }}\n\n      - run:\n          name: Install tox envs\n          command: tox -vv --notest\n          working_directory: /home/mythril\n          environment:\n            LC_ALL: en_US.ASCII\n            LANG: en_US.ASCII\n\n      - save_cache:\n          key: tox-env-{{ checksum \"/home/mythril/setup.py\" }}\n          paths:\n            - .tox/py*\n            - /root/.cache/pip/wheels/\n\n      - run:\n          background: true\n          name: Launch of background geth instance\n          command: geth --syncmode full --http --http.api=\"db,eth,net,web3,personal\"\n\n      - run:\n          name: Unit-testing\n          command: |\n            TESTFILES=$(circleci tests glob tests/**/*test.py | circleci tests split --split-by=timings)\n            tox -- $TESTFILES\n          working_directory: /home/mythril\n          no_output_timeout: 10m\n          environment:\n            LANG: en_US.ASCII\n            MYTHRIL_DIR: '/home/mythril'\n            INFURA_ID: $INFURA_ID\n\n      - store_test_results:\n          path: /home/mythril/.tox/output\n\n      - store_artifacts:\n          path: /home/mythril/.tox/output\n\n      - run:\n          name: Ensuring that setup script is functional\n          command: python3 -m build\n          working_directory: /home/mythril\n\n      #- run:\n      #    name: Sonar analysis\n      #    command: if [ -z \"$CIRCLE_PR_NUMBER\" ]; then if [ -z \"$CIRCLE_TAG\" ]; then\n      #      sonar-scanner -Dsonar.projectKey=$SONAR_PROJECT_KEY\n      #      -Dsonar.organization=$SONAR_ORGANIZATION\n      #      -Dsonar.branch.name=$CIRCLE_BRANCH\n      #      -Dsonar.projectBaseDir=/home/mythril -Dsonar.sources=mythril\n      #      -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.tests=/home/mythril/tests\n      #      -Dsonar.login=$SONAR_LOGIN; fi; fi\n      # - run:\n      #     name: Integration tests\n      #     command: if [ -z \"$CIRCLE_PR_NUMBER\" ]; then ./run-integration-tests.sh; fi\n      #     working_directory: /home\n    # The resource_class feature allows configuring CPU and RAM resources for each job. Different resource classes are available for different executors. https://circleci.com/docs/2.0/configuration-reference/#resourceclass\n    resource_class: large\n  #  integration_tests:\n  #    docker:\n  #      - image: circleci/python:3.6.4\n  #    working_directory: ~/project\n  #    steps:\n  #      - checkout\n  #      - setup_remote_docker\n  #      - run:\n  #          name: Clone Edelweiss\n  #          command: git clone --recurse-submodules https://$GITHUB_TOKEN@github.com/Consensys/Edelweiss.git\n  #      - run:\n  #          name: Update SWC-registry\n  #          working_directory: ~/project/Edelweiss\n  #          command: git submodule update --recursive --remote\n  #      - run:\n  #          name: Build Edelweiss\n  #          command: |\n  #              docker build \\\n  #                --build-arg AWS_ACCESS_KEY_ID=$S3_AWS_ACCESS_KEY_ID \\\n  #                --build-arg AWS_SECRET_ACCESS_KEY=$S3_AWS_SECRET_ACCESS_KEY \\\n  #                --build-arg AWS_DEFAULT_REGION=us-east-1 --rm -t \"edelweiss-mythril:latest\" . -f Edelweiss/dockerfiles/mythril/Dockerfile\n  #      - run:\n  #          name: Run Edelweiss\n  #          command: |\n  #              docker run \\\n  #                -e CIRCLE_BRANCH=$CIRCLE_BRANCH \\\n  #                -e CIRCLE_SHA1=$CIRCLE_SHA1 \\\n  #                -e CIRCLE_BUILD_NUM=$CIRCLE_BUILD_NUM \\\n  #                -e CIRCLE_BUILD_URL=$CIRCLE_BUILD_URL \\\n  #                -e CIRCLE_WEBHOOK_URL=$CIRCLE_WEBHOOK_URL \\\n  #                -e MONGO_URL=$MONGO_URL \\\n  #                --rm edelweiss-mythril:latest \\\n  #                --timeout 90 \\\n  #                --output-dir /opt/edelweiss \\\n  #                --s3 \\\n  #                --dynamodb \\\n  #                --circle-ci CircleCI/mythril.csv \\\n  #                --ignore-false-positives $IGNORE_FALSE_POSITIVES \\\n  #                --ignore-regressions $IGNORE_REGRESSIONS\n  pypi_release:\n    <<: *defaults\n    steps:\n      - checkout:\n          path: /home/mythril\n      - run:\n          name: Verify Git tag vs. version\n          command: python3 setup.py verify\n          working_directory: /home/mythril\n      - run:\n          name: Build\n          command: python3 setup.py sdist\n          working_directory: /home/mythril\n      - run:\n          name: Deploy\n          command: twine upload dist/*\n          working_directory: /home/mythril\n\n  # Release of the mainstream (current stable) version as mythril/myth\n  # container.\n  dockerhub_release:\n    docker:\n      - image: docker:latest\n    steps:\n      - checkout\n      - setup_remote_docker\n      - run:\n          name: Install bash\n          command: apk add --no-cache bash\n      - run:\n          name: Building Docker Image\n          command: ./docker_build_and_deploy.sh mythril/myth\n    resource_class: arm.large\n\n  # Release of the latest development version as mythril/myth-dev container.\n  dockerhub_dev_release:\n    docker:\n      - image: docker:latest\n    steps:\n      - checkout\n      - setup_remote_docker\n      - run:\n          name: Install bash\n          command: apk add --no-cache bash\n      - run:\n          name: Building Docker Image\n          command: ./docker_build_and_deploy.sh mythril/myth-dev\n    # The resource_class feature allows configuring CPU and RAM resources for each job. Different resource classes are available for different executors. https://circleci.com/docs/2.0/configuration-reference/#resourceclass\n    resource_class: arm.xlarge\n\nworkflows:\n  version: 2\n  build:\n    jobs:\n      - test:\n          filters:\n            tags:\n              only: /.*/\n      - pypi_release:\n          filters:\n            branches:\n              ignore: /.*/\n            tags:\n              only: /v[0-9]+(\\.[0-9]+)*/\n          requires:\n            - test\n      - dockerhub_dev_release:\n          filters:\n            branches:\n              only: develop\n          requires:\n            - test\n      - dockerhub_release:\n          filters:\n            branches:\n              ignore: /.*/\n            tags:\n              only: /v[0-9]+(\\.[0-9]+)*/\n          requires:\n            - test\n"
  },
  {
    "path": ".dockerignore",
    "content": "/.*\n/build\n/docker-bake.hcl\n/Dockerfile\n"
  },
  {
    "path": ".drone.yml",
    "content": "kind: pipeline\nname: default\n\nplatform:\n    os: linux\n    arch: amd64\n\nsteps:\n- name: edelweiss_swc\n  image: mythx.azurecr.io/tools/edelweiss\n  environment:\n    IGNORE_FALSE_POSITIVES:\n      from_secret: IGNORE_FALSE_POSITIVES\n    IGNORE_REGRESSIONS:\n      from_secret: IGNORE_REGRESSIONS\n    AWS_DEFAULT_REGION:\n      from_secret: AWS_DEFAULT_REGION\n    AWS_ACCESS_KEY_ID:\n      from_secret: AWS_ACCESS_KEY_ID\n    AWS_SECRET_ACCESS_KEY:\n      from_secret: AWS_SECRET_ACCESS_KEY\n    MONGO_URL:\n      from_secret: MONGO_URL\n  commands:\n    # CIRCLE_* env vars is used by edelweiss cli to generate\n    # the reports storage directory structure\n    - export CIRCLE_BUILD_NUM=$DRONE_BUILD_NUMBER\n    - export CIRCLE_BUILD_URL=$DRONE_BUILD_LINK\n    - export CIRCLE_BRANCH=$DRONE_BRANCH\n    - export CIRCLE_SHA1=$DRONE_COMMIT_SHA\n    # install pip module from current dir\n    - pip3 install $(pwd)\n    # update SWC-registry\n    - cd /edelweiss\n    - git submodule update --init --recursive\n    - git submodule update --remote --recursive\n    # run edelewiss tests\n    # Temporarily stop Edelweiss drone\n    #- edelweiss-cli \n    #  -p mythril \n    #  --timeout 90 \n    #  --output-dir $(pwd) \n    #  --s3 \n    #  --dynamodb \n    #  --circle-ci CircleCI/mythril.csv \n    #  --ignore-false-positives $IGNORE_FALSE_POSITIVES \n    #  --ignore-regressions $IGNORE_REGRESSIONS\n  when:\n    branch:\n    - develop\n    - master\n    event:\n    - push\n    - tag\n\nimage_pull_secrets:\n    - DOCKER_CONFIG_JSON\n"
  },
  {
    "path": ".editorconfig",
    "content": "root = true\n\n[*]\nend_of_line = lf\ninsert_final_newline = true\n\n[*.py]\nindent_style = space\nindent_size = 4\ncharset = utf-8\n\n[*.jinja2]\ninsert_final_newline = false\n"
  },
  {
    "path": ".gitattributes",
    "content": "tests/testdata/* linguist-detectable=false\nstatic/* linguist-documentation\n\n# Solidity\n*.sol linguist-language=Solidity\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/analysis-module.md",
    "content": "---\nname: Analysis module\nabout: Create an analysis module feature request\n\n---\n\n<!-- Please remove any of the optional sections if they are not applicable. -->\n\n## Description\n\n<!-- Add a description of an vulnerability that should be\ndetected by a Mythril analysis module. -->\n\n## Tests\n\n<!-- This section is optional.\n\nSuggest how to test the feature, if it is not obvious. This might\nrequire certain Solidity source, bytecode, or a Truffle project. You\ncan also provide links to existing code. -->\n\n## Implementation details\n\n<!-- This section is optional.\n\nIf you have thoughts about how to implement the analysis, add\nthis here. -->\n\n## Links\n\n<!-- This section is optional.\n\nAdd links describing the issue or pointing to resources that can help\nin implementing the analysis.\n\nThanks for helping! -->\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/bug-report.md",
    "content": "---\nname: Bug report\nabout: Tell us about Mythril bugs to help us improve\n\n---\n\n<!-- Note: did you notice that there is now a template for requesting new features?\n\nPlease remove any of the optional sections if they are not applicable. -->\n\n## Description\n\n<!-- Replace this text with a clear and concise description of the bug. -->\n\n## How to Reproduce\n\n<!-- Please show both the input you gave and the\noutput you got in describing how to reproduce the bug.\n\nFor example:\n\n```console\n$ myth <command-line-options>\n==== Exception state ====\nType: ...\nContract: ...\nFunction name: ...\n...\n$\n```\n\nor perhaps:\n\n1. Go to '...'\n2. Click on '....'\n3. Scroll down to '....'\n4. See error\n\n\nIf there is a Solidity source code or a bytecode\nthat is involved, please provide that or links to it.\n\n-->\n\n## Expected behavior\n\n<!-- A clear and concise description of what you expected to happen. -->\n\n## Screenshots\n\n<!-- This section is optional.\n\nIf applicable, add screenshots to help explain your problem.\n\n-->\n\n## Environment\n\n<!-- This section sometimes is optional but helpful to us.\n\nPlease modify for your setup\n\n- Mythril version: output from  `myth version` or `pip show mythril`\n- Solidity compiler and version: `solc --version`\n- Python version: `python -V`\n- OS and Version: [e.g. Mac OS High Sierra]\n\n-->\n\n## Additional Environment or Context\n\n<!-- This section is optional.\n\nAdd any other context about the problem here or special environment setup.\n\nThanks for helping!\n\n-->\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE/feature-request.md",
    "content": "---\r\nname: Feature Request\r\nabout: Tell us about a new feature that would make Mythril better\r\n\r\n---\r\n\r\n## Description\r\n\r\n<!-- Give a short description of the feature. -->\r\n\r\n## Background\r\n\r\n<! -- Replace this text with any additional background for the\r\nfeature, for example: user scenarios, or the value of the feature. -->\r\n\r\n## Tests\r\n\r\n<!-- This section is optional.\r\n\r\nSuggestion how to test the feature, if it is not obvious.\r\n\r\nThis might require certain Solidity source, bytecode, or a Truffle\r\nproject. You can also provide links to existing code.\r\n\r\nThanks for helping!\r\n\r\n-->\r\n"
  },
  {
    "path": ".github/dependabot.yml",
    "content": "version: 2\nupdates:\n    - package-ecosystem: \"github-actions\"\n      directory: \"/\"\n      schedule:\n        interval: \"weekly\"\n      groups:\n        workflows:\n          patterns:\n            - '*'\n    - package-ecosystem: \"pip\"\n      directory: \"/\"\n      schedule:\n        interval: \"weekly\"\n"
  },
  {
    "path": ".github/workflows/container.yml",
    "content": "on:\n  pull_request:\n    paths:\n      - .github/workflows/container.yml\n      - Dockerfile\n      - docker_build_and_deploy.sh\n      - requirements.txt\n      - setup.py\n\nname: container\n\nconcurrency:\n  # Concurrency group that uses the workflow name and PR number if available\n  # or commit SHA as a fallback. If a new build is triggered under that\n  # concurrency group while a previous build is running it will be canceled.\n  # Repeated pushes to a PR will cancel all previous builds, while multiple\n  # merges to a branch will not cancel.\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}\n  cancel-in-progress: true\n\njobs:\n  test:\n    runs-on: ubuntu-latest\n    timeout-minutes: 60\n    steps:\n      - uses: actions/checkout@v4\n      - name: build and test\n        run: |\n          # when no DOCKERHUB_USERNAME is set, this only builds the\n          # container and runs the myth-smoke-test\n          ./docker_build_and_deploy.sh mythril/myth-dev\n"
  },
  {
    "path": ".github/workflows/pre-commit-hooks-test.yml",
    "content": "name: pre-commit\n\non:\n  push:\n    branches:\n      - master\n      - develop\n    tags:\n      - '*'\n  pull_request:\n    paths:\n      - .github/workflows/pre-commit-hooks-test.yml\n      - .pre-commit-hooks.yaml\n      - tests/pre-commit-hooks/*\n      - requirements.txt\n      - setup.py\n\njobs:\n  hooks-test:\n    runs-on: ubuntu-latest\n    name: test hooks\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-python@v5\n        with:\n          python-version: '3.12'\n      - name: Install pre-commit\n        run: |\n          python -m pip install pre-commit\n      - name: Test hooks\n        run: |\n          ./tests/pre-commit-hooks/test.sh\n"
  },
  {
    "path": ".github/workflows/pre-commit.yml",
    "content": "on:\n  push:\n    branches:\n      - master\n      - develop\n    tags:\n      - '*'\n  pull_request:\n\nname: pre-commit\n\nconcurrency:\n  # Concurrency group that uses the workflow name and PR number if available\n  # or commit SHA as a fallback. If a new build is triggered under that\n  # concurrency group while a previous build is running it will be canceled.\n  # Repeated pushes to a PR will cancel all previous builds, while multiple\n  # merges to a branch will not cancel.\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.sha }}\n  cancel-in-progress: true\n\njobs:\n  check:\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n      - uses: actions/setup-python@v5\n        with:\n          python-version: '3.9'\n      - uses: pre-commit/action@v3.0.1\n"
  },
  {
    "path": ".gitignore",
    "content": "\n# Created by https://www.gitignore.io/api/linux,macos,python,windows\n\n### Linux ###\n*~\n\n# temporary files which can be created if a process still has a handle open of a deleted file\n.fuse_hidden*\n\n# KDE directory preferences\n.directory\n\n# Linux trash folder which might appear on any partition or disk\n.Trash-*\n\n# .nfs files are created when an open file is removed but is still being accessed\n.nfs*\n\n### macOS ###\n*.DS_Store\n.AppleDouble\n.LSOverride\n\n# Icon must end with two \\r\nIcon\n\n# Thumbnails\n._*\n\n# Files that might appear in the root of a volume\n.DocumentRevisions-V100\n.fseventsd\n.Spotlight-V100\n.TemporaryItems\n.Trashes\n.VolumeIcon.icns\n.com.apple.timemachine.donotpresent\n\n# Directories potentially created on remote AFP share\n.AppleDB\n.AppleDesktop\nNetwork Trash Folder\nTemporary Items\n.apdisk\n\n### Python ###\n# Byte-compiled / optimized / DLL files\n__pycache__/\n*.py[cod]\n*$py.class\n\n# C extensions\n*.so\n\n# Distribution / packaging\n.Python\nbuild/\ndevelop-eggs/\ndist/\ndownloads/\neggs/\n.eggs/\nlib/\nlib64/\nparts/\nsdist/\nvar/\nwheels/\n*.egg-info/\n.installed.cfg\n*.egg\n\n# PyInstaller\n#  Usually these files are written by a python script from a template\n#  before PyInstaller builds the exe, so as to inject date/other infos into it.\n*.manifest\n*.spec\n\n# Installer logs\npip-log.txt\npip-delete-this-directory.txt\n\n# Unit test / coverage reports\nhtmlcov/\n.tox/\n.coverage\n.coverage.*\n.cache\n.pytest_cache/\nnosetests.xml\ncoverage.xml\n*.cover\n.hypothesis/\n\n# Translations\n*.mo\n*.pot\n\n# Flask stuff:\ninstance/\n.webassets-cache\n\n# Scrapy stuff:\n.scrapy\n\n# Sphinx documentation\ndocs/_build/\n\n# PyBuilder\ntarget/\n\n# Jupyter Notebook\n.ipynb_checkpoints\n\n# pyenv\n.python-version\n\n# celery beat schedule file\ncelerybeat-schedule.*\n\n# SageMath parsed files\n*.sage.py\n\n# Environments\n.env\n.venv\nenv/\nvenv/\nENV/\nenv.bak/\nvenv.bak/\n\n# Spyder project settings\n.spyderproject\n.spyproject\n\n# Rope project settings\n.ropeproject\n\n# mkdocs documentation\n/site\n\n# mypy\n.mypy_cache/\n\n### Windows ###\n# Windows thumbnail cache files\nThumbs.db\nehthumbs.db\nehthumbs_vista.db\n\n# Folder config file\nDesktop.ini\n\n# Recycle Bin used on file shares\n$RECYCLE.BIN/\n\n# Windows Installer files\n*.cab\n*.msi\n*.msm\n*.msp\n\n# Windows shortcuts\n*.lnk\n\n\n# End of https://www.gitignore.io/api/linux,macos,python,windows\n\n*.asm\n*.lock\n*.svg\nlol*\n.idea*\ncoverage_html_report/\ntests/testdata/outputs_current/\ntests/testdata/outputs_current_laser_result/\ntests/testdata/mythril_config_inputs/config.ini\n\n# VSCode\n.vscode\n"
  },
  {
    "path": ".pre-commit-config.yaml",
    "content": "# See https://pre-commit.com for more information\n# See https://pre-commit.com/hooks.html for more hooks\n# Apply to all files without commiting:\n#   pre-commit run --all-files\n# Update this file:\n#   pre-commit autoupdate\nrepos:\n-   repo: https://github.com/pre-commit/pre-commit-hooks\n    rev: v5.0.0\n    hooks:\n    -   id: check-toml\n    -   id: check-yaml\n-   repo: https://github.com/astral-sh/ruff-pre-commit\n    rev: v0.9.1\n    hooks:\n    # lint & attempt to correct failures\n    -   id: ruff\n        args: [--fix, --show-fixes]\n    # compatible replacement for black\n    -   id: ruff-format\n-   repo: https://github.com/scop/pre-commit-shfmt\n    rev: v3.10.0-2\n    hooks:\n    -   id: shfmt\n        args: [--write, --indent, '4']\n-   repo: https://github.com/shellcheck-py/shellcheck-py\n    rev: v0.10.0.1\n    hooks:\n    -   id: shellcheck\n-   repo: https://github.com/hadolint/hadolint\n    rev: v2.12.0\n    hooks:\n    -   id: hadolint-docker\n-   repo: https://github.com/macisamuele/language-formatters-pre-commit-hooks\n    rev: v2.14.0\n    hooks:\n    -   id: pretty-format-toml\n        args: [--autofix]\n-   repo: https://github.com/python-jsonschema/check-jsonschema\n    rev: 0.31.0\n    hooks:\n    -   id: check-circle-ci\n    -   id: check-github-workflows\n    -   id: check-dependabot\n-   repo: meta\n    hooks:\n    -   id: check-hooks-apply\n    -   id: check-useless-excludes\n"
  },
  {
    "path": ".pre-commit-hooks.yaml",
    "content": "- id: mythril\n  name: Mythril\n  description: Analyze EVM bytecode with Mythril\n  entry: myth\n  args:\n    - analyze\n  language: python\n  types: [\"solidity\"]\n"
  },
  {
    "path": "CONTRIBUTING.md",
    "content": "# Contributing to Mythril\nHi, 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.\n\n## Creating an issue\nIf you have found a problem with Mythril or want to propose a new feature then you can do this using GitHub issues. \nWe 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.\n\nIf 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).\n\n# Coding\nIf 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).\n\nBefore 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.\n\n## New ideas\nBefore 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.\n"
  },
  {
    "path": "Dockerfile",
    "content": "# syntax=docker/dockerfile:1\nARG PYTHON_VERSION=3.10\nARG INSTALLED_SOLC_VERSIONS\n\n\nFROM python:${PYTHON_VERSION} AS mythril-wheels\nWORKDIR /wheels\n\n# Enable cargo sparse-registry to prevent it using large amounts of memory in\n# docker builds, and speed up builds by downloading less.\n# https://github.com/rust-lang/cargo/issues/10781#issuecomment-1163819998\nENV CARGO_UNSTABLE_SPARSE_REGISTRY=true\n\nSHELL [\"/bin/bash\", \"-euo\", \"pipefail\", \"-c\"]\nRUN curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y\nENV PATH=/root/.cargo/bin:$PATH\n\nRUN --mount=source=requirements.txt,target=/run/requirements.txt \\\n  pip wheel -r /run/requirements.txt\n\nCOPY . /mythril\nRUN pip wheel --no-deps /mythril\n\n\n# Solidity Compiler Version Manager. This provides cross-platform solc builds.\n# It's used by foundry to provide solc. https://github.com/alloy-rs/svm-rs\nFROM rust:slim-bookworm AS solidity-compiler-version-manager\nRUN mkdir -p /svm-rs/bin && \\\n  cargo install svm-rs --root /svm-rs\n\n\nFROM python:${PYTHON_VERSION}-slim AS myth\nARG PYTHON_VERSION\n# Space-separated version string without leading 'v' (e.g. \"0.4.21 0.4.22\")\nARG INSTALLED_SOLC_VERSIONS\n\nCOPY --from=solidity-compiler-version-manager /svm-rs/bin/* /usr/local/bin/\n\nRUN --mount=from=mythril-wheels,source=/wheels,target=/wheels \\\n  export PYTHONDONTWRITEBYTECODE=1 && pip install --no-cache-dir /wheels/*.whl\n\nRUN adduser --disabled-password mythril\nUSER mythril\nWORKDIR /home/mythril\n\n# pre-install solc versions\nRUN set -x; [ -z \"${INSTALLED_SOLC_VERSIONS}\" ] || svm install ${INSTALLED_SOLC_VERSIONS}\n\nCOPY --chown=mythril:mythril \\\n  ./mythril/support/assets/signatures.db \\\n  /home/mythril/.mythril/signatures.db\n\nCOPY --chown=root:root --chmod=755 ./docker/docker-entrypoint.sh /\nCOPY --chown=root:root --chmod=755 \\\n  ./docker/sync-svm-solc-versions-with-solcx.sh \\\n  /usr/local/bin/sync-svm-solc-versions-with-solcx\nENTRYPOINT [\"/docker-entrypoint.sh\"]\n\n\n# Basic sanity checks to make sure the build is functional\nFROM myth AS myth-smoke-test-execution\nSHELL [\"/bin/bash\", \"-euo\", \"pipefail\", \"-c\"]\nWORKDIR /smoke-test\nCOPY --chmod=755 <<\"EOT\" /smoke-test.sh\n#!/usr/bin/env bash\nset -x -euo pipefail\n\n# Check solcx knows about svm solc versions\nsvm install 0.5.0\nsync-svm-solc-versions-with-solcx\npython -c '\nimport solcx\nprint(\"\\n\".join(str(v) for v in solcx.get_installed_solc_versions()))\n' | grep -P '^0\\.5\\.0$' || {\n  echo \"solcx did not report svm-installed solc version\";\n  exit 1\n}\n\n# Show installed packages and versions\npip list\n\n# Check myth can run\nmyth version\nmyth function-to-hash 'function transfer(address _to, uint256 _value) public returns (bool success)'\nmyth analyze /solidity_examples/origin.sol -t 1 > origin.log || true\ngrep 'SWC ID: 115' origin.log || {\n  error \"Failed to detect SWC ID: 115 in origin.sol\";\n  exit 1\n}\n\n# Check that the entrypoint works\n[[ $(/docker-entrypoint.sh version) == $(myth version) ]]\n[[ $(/docker-entrypoint.sh echo hi) == hi ]]\n[[ $(/docker-entrypoint.sh bash -c \"printf '>%s<' 'foo bar'\") == \">foo bar<\" ]]\nEOT\n\nRUN --mount=source=./solidity_examples,target=/solidity_examples \\\n  /smoke-test.sh 2>&1 | tee smoke-test.log\n\n\nFROM scratch AS myth-smoke-test\nCOPY --from=myth-smoke-test-execution /smoke-test/* /\n"
  },
  {
    "path": "LICENSE",
    "content": "The MIT License (MIT)\n\nCopyright (c) since 2017 Bernhard Mueller\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in all\ncopies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE\nSOFTWARE.\n\n"
  },
  {
    "path": "MANIFEST.in",
    "content": "include mythril/support/assets/*\ninclude mythril/analysis/templates/*\ninclude requirements.txt"
  },
  {
    "path": "README.md",
    "content": "# Mythril\n\n<p align=\"center\">\n\t<img src=\"/static/mythril_new.png\" height=\"320px\"/>\n</p>\n\n[![Discord](https://img.shields.io/discord/697535391594446898)](https://discord.com/invite/consensys)\n[![PyPI](https://badge.fury.io/py/mythril.svg)](https://pypi.python.org/pypi/mythril)\n[![Read the Docs](https://readthedocs.org/projects/mythril-classic/badge/?version=master)](https://mythril-classic.readthedocs.io/en/develop/)\n[![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)\n[![Sonarcloud - Maintainability](https://sonarcloud.io/api/project_badges/measure?project=mythril&metric=sqale_rating)](https://sonarcloud.io/dashboard?id=mythril)\n[![Pypi Installs](https://static.pepy.tech/badge/mythril)](https://pepy.tech/project/mythril)\n[![DockerHub Pulls](https://img.shields.io/docker/pulls/mythril/myth.svg)](https://cloud.docker.com/u/mythril/repository/docker/mythril/myth)\n\nMythril is a symbolic-execution-based security analysis tool for EVM bytecode. It detects security vulnerabilities in smart contracts built for Ethereum and other EVM-compatible blockchains.\n\nWhether 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).\n\n## Installation and setup\n\nGet it with [Docker](https://www.docker.com):\n\n```bash\n$ docker pull mythril/myth\n```\n\nInstall from Pypi (Python 3.7-3.10):\n\n```bash\n$ pip3 install mythril\n```\n\nUse it via pre-commit hook (replace `$GIT_TAG` with real tag):\n\n```YAML\n- repo: https://github.com/Consensys/mythril\n  rev: $GIT_TAG\n  hooks:\n    - id: mythril\n```\n\nAdditionally, set `args: [disassemble]` or `args: [read-storage]` to use a different command than `analyze`.\n\nSee the [docs](https://mythril-classic.readthedocs.io/en/master/installation.html) for more detailed instructions. \n\n## Usage\n\nRun:\n\n```\n$ myth analyze <solidity-file>\n```\n\nOr:\n\n```\n$ myth analyze -a <contract-address>\n```\n\nSpecify the maximum number of transactions to explore with `-t <number>`. You can also set a timeout with `--execution-timeout <seconds>`.\n\nHere is an example of running Mythril on the file `killbilly.sol` which is in the `solidity_examples` directory for `3` transactions:\n\n```\n> myth a killbilly.sol -t 3\n==== Unprotected Selfdestruct ====\nSWC ID: 106\nSeverity: High\nContract: KillBilly\nFunction name: commencekilling()\nPC address: 354\nEstimated Gas Usage: 974 - 1399\nAny sender can cause the contract to self-destruct.\nAny 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.\n--------------------\nIn file: killbilly.sol:22\n\nselfdestruct(msg.sender)\n\n--------------------\nInitial State:\n\nAccount: [CREATOR], balance: 0x2, nonce:0, storage:{}\nAccount: [ATTACKER], balance: 0x1001, nonce:0, storage:{}\n\nTransaction Sequence:\n\nCaller: [CREATOR], calldata: , decoded_data: , value: 0x0\nCaller: [ATTACKER], function: killerize(address), txdata: 0x9fa299cc000000000000000000000000deadbeefdeadbeefdeadbeefdeadbeefdeadbeef, decoded_data: ('0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef',), value: 0x0\nCaller: [ATTACKER], function: activatekillability(), txdata: 0x84057065, value: 0x0\nCaller: [ATTACKER], function: commencekilling(), txdata: 0x7c11da20, value: 0x0\n\n```\n\n\nInstructions for using Mythril are found on the [docs](https://mythril-classic.readthedocs.io/en/develop/). \n\nFor support or general discussions please checkout [diligence-mythx channel](https://discord.com/channels/697535391594446898/712829485350649886) in [ConsenSys Discord server](https://discord.gg/consensys)..\n\n## Building the Documentation\nMythril'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:\n\n```\ncd docs\nmake html\n```\n\nThis 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`.\n\n## Vulnerability Remediation\n\nVisit the [Smart Contract Vulnerability Classification Registry](https://swcregistry.io/) to find detailed information and remediation guidance for the vulnerabilities reported.\n"
  },
  {
    "path": "all_tests.sh",
    "content": "#!/bin/bash\n\nset -euo pipefail\n\necho -n \"Checking Python version... \"\npython -c 'import sys\nprint(sys.version)\nassert sys.version_info[0:2] >= (3,5), \\\n\"\"\"Please make sure you are using Python 3.5 or later.\nYou ran with {}\"\"\".format(sys.version)' || exit $?\n\nrm -rf ./tests/testdata/outputs_current/\nmkdir -p ./tests/testdata/outputs_current/\nrm -rf ./tests/testdata/outputs_current_laser_result/\nmkdir -p ./tests/testdata/outputs_current_laser_result/\nmkdir -p /tmp/test-reports\npytest --junitxml=/tmp/test-reports/junit.xml\n"
  },
  {
    "path": "coverage_report.sh",
    "content": "#!/bin/sh\n\npython --version\necho \"Please make sure you are using python 3.6.x\"\n\nrm -rf ./tests/testdata/outputs_current/\nmkdir -p ./tests/testdata/outputs_current/\nrm -rf ./tests/testdata/outputs_current_laser_result/\nmkdir -p ./tests/testdata/outputs_current_laser_result/\nrm -rf coverage_html_report\n\npy.test \\\n    --cov=mythril \\\n    --cov-config=tox.ini \\\n    --cov-report=html:coverage_reports/coverage_html_report \\\n    --cov-report=xml:coverage_reports/coverage_xml_report.xml\n"
  },
  {
    "path": "docker/docker-entrypoint.sh",
    "content": "#!/usr/bin/env bash\nset -euo pipefail\n\n# Install extra solc versions if SOLC is set\nif [[ ${SOLC:-} != \"\" ]]; then\n    read -ra solc_versions <<<\"${SOLC:?}\"\n    svm install \"${solc_versions[@]}\"\nfi\n# Always sync versions, as the should be at least one solc version installed\n# in the base image, and we may be running as root rather than the mythril user.\nsync-svm-solc-versions-with-solcx\n\n# By default we run myth with options from arguments we received. But if the\n# first argument is a valid program, we execute that instead so that people can\n# run other commands without overriding the entrypoint (e.g. bash).\nif command -v \"${1:-}\" >/dev/null; then\n    exec -- \"$@\"\nfi\nexec -- myth \"$@\"\n"
  },
  {
    "path": "docker/sync-svm-solc-versions-with-solcx.sh",
    "content": "#!/usr/bin/env bash\nset -euo pipefail\n\n# Let solcx know about the solc versions installed by svm.\n# We do this by symlinking svm's solc binaries into solcx's solc dir.\n[[ -e ~/.svm ]] || exit 0\nmkdir -p ~/.solcx\nreadarray -t svm_solc_bins <<<\"$(find ~/.svm -type f -name 'solc-*')\"\n[[ ${svm_solc_bins[0]} != \"\" ]] || exit 0\nfor svm_solc in \"${svm_solc_bins[@]}\"; do\n    name=$(basename \"${svm_solc:?}\")\n    version=\"${name#\"solc-\"}\" # strip solc- prefix\n    solcx_solc=~/.solcx/\"solc-v${version:?}\"\n    if [[ ! -e $solcx_solc ]]; then\n        ln -s \"${svm_solc:?}\" \"${solcx_solc:?}\"\n    fi\ndone\n"
  },
  {
    "path": "docker-bake.hcl",
    "content": "variable \"REGISTRY\" {\n  default = \"docker.io\"\n}\n\nvariable \"VERSION\" {\n  default = \"dev\"\n}\n\nvariable \"PYTHON_VERSION\" {\n  default = \"3.10\"\n}\n\nvariable \"INSTALLED_SOLC_VERSIONS\" {\n  default = \"0.8.19\"\n}\n\nfunction \"myth-tags\" {\n  params = [NAME]\n  result = formatlist(\"${REGISTRY}/${NAME}:%s\", split(\",\", VERSION))\n}\n\ngroup \"default\" {\n  targets = [\"myth\", \"myth-smoke-test\"]\n}\n\ntarget \"_myth-base\" {\n  target = \"myth\"\n  args = {\n    PYTHON_VERSION = PYTHON_VERSION\n    INSTALLED_SOLC_VERSIONS = INSTALLED_SOLC_VERSIONS\n  }\n  platforms = [\n    \"linux/amd64\",\n    \"linux/arm64\"\n  ]\n}\n\ntarget \"myth\" {\n  inherits = [\"_myth-base\"]\n  tags = myth-tags(\"mythril/myth\")\n}\n\ntarget \"myth-dev\" {\n  inherits = [\"_myth-base\"]\n  tags = myth-tags(\"mythril/myth-dev\")\n}\n\ntarget \"myth-smoke-test\" {\n  inherits = [\"_myth-base\"]\n  target = \"myth-smoke-test\"\n  output = [\"build/docker/smoke-test\"]\n}\n"
  },
  {
    "path": "docker_build_and_deploy.sh",
    "content": "#!/bin/bash\n\nset -eo pipefail\n\nNAME=$1\n\nif [[ ! $NAME =~ ^mythril/myth(-dev)?$ ]]; then\n    echo \"Error: unknown image name: $NAME\" >&2\n    exit 1\nfi\n\nif [ -n \"$CIRCLE_TAG\" ]; then\n    GIT_VERSION=${CIRCLE_TAG#?}\nelse\n    GIT_VERSION=${CIRCLE_SHA1}\nfi\n\nexport DOCKER_BUILDKIT=1\ndocker buildx create --use\n\n# Build and test all versions of the image. (The result will stay in the cache,\n# so the next build should be almost instant.)\ndocker buildx bake myth-smoke-test\n\nif [ -z \"$DOCKERHUB_USERNAME\" ]; then\n    echo \"Finishing without pushing to dockerhub\"\n    exit 0\nfi\n\necho \"$DOCKERHUB_PASSWORD\" | docker login -u \"$DOCKERHUB_USERNAME\" --password-stdin\n\n# strip mythril/ from NAME, e.g. myth or myth-dev\nBAKE_TARGET=\"${NAME#mythril/}\"\n\nVERSION=\"${GIT_VERSION:?},latest\" docker buildx bake --push \"${BAKE_TARGET:?}\"\n"
  },
  {
    "path": "docs/Makefile",
    "content": "# Minimal makefile for Sphinx documentation\n#\n\n# You can set these variables from the command line.\nSPHINXOPTS    =\nSPHINXBUILD   = sphinx-build\nSOURCEDIR     = source\nBUILDDIR      = build\n\n# Put it first so that \"make\" without argument is like \"make help\".\nhelp:\n\t@$(SPHINXBUILD) -M help \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)\n\n.PHONY: help Makefile\n\n# Catch-all target: route all unknown targets to Sphinx using the new\n# \"make mode\" option.  $(O) is meant as a shortcut for $(SPHINXOPTS).\n%: Makefile\n\t@$(SPHINXBUILD) -M $@ \"$(SOURCEDIR)\" \"$(BUILDDIR)\" $(SPHINXOPTS) $(O)"
  },
  {
    "path": "docs/make.bat",
    "content": "@ECHO OFF\r\n\r\npushd %~dp0\r\n\r\nREM Command file for Sphinx documentation\r\n\r\nif \"%SPHINXBUILD%\" == \"\" (\r\n\tset SPHINXBUILD=sphinx-build\r\n)\r\nset SOURCEDIR=source\r\nset BUILDDIR=build\r\n\r\nif \"%1\" == \"\" goto help\r\n\r\n%SPHINXBUILD% >NUL 2>NUL\r\nif errorlevel 9009 (\r\n\techo.\r\n\techo.The 'sphinx-build' command was not found. Make sure you have Sphinx\r\n\techo.installed, then set the SPHINXBUILD environment variable to point\r\n\techo.to the full path of the 'sphinx-build' executable. Alternatively you\r\n\techo.may add the Sphinx directory to PATH.\r\n\techo.\r\n\techo.If you don't have Sphinx installed, grab it from\r\n\techo.http://sphinx-doc.org/\r\n\texit /b 1\r\n)\r\n\r\n%SPHINXBUILD% -M %1 %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%\r\ngoto end\r\n\r\n:help\r\n%SPHINXBUILD% -M help %SOURCEDIR% %BUILDDIR% %SPHINXOPTS%\r\n\r\n:end\r\npopd\r\n"
  },
  {
    "path": "docs/source/about.rst",
    "content": "What is Mythril?\n========================\n\nMythril 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>`_.\n\nMythril 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.\n"
  },
  {
    "path": "docs/source/analysis-modules.rst",
    "content": "Analysis Modules\n================\n\nMythril's detection capabilities are written in modules in the `/analysis/module/modules <https://github.com/ConsenSys/mythril/tree/master/mythril/analysis/module/modules>`_ directory.\n\n\n.. toctree::\n   :maxdepth: 2\n\n   module-list.rst\n   create-module.rst\n"
  },
  {
    "path": "docs/source/conf.py",
    "content": "# -*- coding: utf-8 -*-\n#\n# Configuration file for the Sphinx documentation builder.\n#\n# This file does only contain a selection of the most common options. For a\n# full list see the documentation:\n# http://www.sphinx-doc.org/en/master/config\n\n# -- Path setup --------------------------------------------------------------\n\n# If extensions (or modules to document with autodoc) are in another directory,\n# add these directories to sys.path here. If the directory is relative to the\n# documentation root, use os.path.abspath to make it absolute, like shown here.\n\nimport os\nimport sys\n\nsys.path.insert(0, os.path.abspath(\"../../\"))\n\n\n# -- Project information -----------------------------------------------------\n\nproject = \"Mythril\"\ncopyright = \"2019, ConsenSys Diligence\"\nauthor = \"ConsenSys Dilligence\"\n\n# The short X.Y version\nversion = \"\"\n# The full version, including alpha/beta/rc tags\nfrom mythril.__version__ import __version__ as VERSION\n\nrelease = VERSION\n\n\n# -- General configuration ---------------------------------------------------\n\n# If your documentation needs a minimal Sphinx version, state it here.\n#\n# needs_sphinx = '1.0'\n\n# Add any Sphinx extension module names here, as strings. They can be\n# extensions coming with Sphinx (named 'sphinx.ext.*') or your custom\n# ones.\nextensions = [\n    \"sphinx.ext.autodoc\",\n    \"sphinx.ext.coverage\",\n    \"sphinx.ext.mathjax\",\n    \"sphinx.ext.viewcode\",\n]\n\n# Add any paths that contain templates here, relative to this directory.\ntemplates_path = [\"_templates\"]\n\n# The suffix(es) of source filenames.\n# You can specify multiple suffix as a list of string:\n#\n# source_suffix = ['.rst', '.md']\nsource_suffix = \".rst\"\n\n# The master toctree document.\nmaster_doc = \"index\"\n\n# The language for content autogenerated by Sphinx. Refer to documentation\n# for a list of supported languages.\n#\n# This is also used if you do content translation via gettext catalogs.\n# Usually you set \"language\" from the command line for these cases.\nlanguage = None\n\n# List of patterns, relative to source directory, that match files and\n# directories to ignore when looking for source files.\n# This pattern also affects html_static_path and html_extra_path.\nexclude_patterns = []\n\n# The name of the Pygments (syntax highlighting) style to use.\npygments_style = None\n\n\n# -- Options for HTML output -------------------------------------------------\n\n# The theme to use for HTML and HTML Help pages.  See the documentation for\n# a list of builtin themes.\n#\nhtml_theme = \"sphinx_rtd_theme\"\n\n# Theme options are theme-specific and customize the look and feel of a theme\n# further.  For a list of options available for each theme, see the\n# documentation.\n#\n# html_theme_options = {}\n\n# Add any paths that contain custom static files (such as style sheets) here,\n# relative to this directory. They are copied after the builtin static files,\n# so a file named \"default.css\" will overwrite the builtin \"default.css\".\nhtml_static_path = [\"_static\"]\n\n# Custom sidebar templates, must be a dictionary that maps document names\n# to template names.\n#\n# The default sidebars (for documents that don't match any pattern) are\n# defined by theme itself.  Builtin themes are using these templates by\n# default: ``['localtoc.html', 'relations.html', 'sourcelink.html',\n# 'searchbox.html']``.\n#\n# html_sidebars = {}\n\n\n# -- Options for HTMLHelp output ---------------------------------------------\n\n# Output file base name for HTML help builder.\nhtmlhelp_basename = \"Mythrildoc\"\n\n\n# -- Options for LaTeX output ------------------------------------------------\n\nlatex_elements = {\n    # The paper size ('letterpaper' or 'a4paper').\n    #\n    # 'papersize': 'letterpaper',\n    # The font size ('10pt', '11pt' or '12pt').\n    #\n    # 'pointsize': '10pt',\n    # Additional stuff for the LaTeX preamble.\n    #\n    # 'preamble': '',\n    # Latex figure (float) alignment\n    #\n    # 'figure_align': 'htbp',\n}\n\n# Grouping the document tree into LaTeX files. List of tuples\n# (source start file, target name, title,\n#  author, documentclass [howto, manual, or own class]).\nlatex_documents = [\n    (\n        master_doc,\n        \"Mythril.tex\",\n        \"Mythril Documentation\",\n        \"ConsenSys Dilligence\",\n        \"manual\",\n    )\n]\n\n\n# -- Options for manual page output ------------------------------------------\n\n# One entry per manual page. List of tuples\n# (source start file, name, description, authors, manual section).\nman_pages = [(master_doc, \"mythril\", \"Mythril Documentation\", [author], 1)]\n\n\n# -- Options for Texinfo output ----------------------------------------------\n\n# Grouping the document tree into Texinfo files. List of tuples\n# (source start file, target name, title, author,\n#  dir menu entry, description, category)\ntexinfo_documents = [\n    (\n        master_doc,\n        \"Mythril\",\n        \"Mythril Documentation\",\n        author,\n        \"Mythril\",\n        \"One line description of project.\",\n        \"Miscellaneous\",\n    )\n]\n\n\n# -- Options for Epub output -------------------------------------------------\n\n# Bibliographic Dublin Core info.\nepub_title = project\n\n# The unique identifier of the text. This can be a ISBN number\n# or the project homepage.\n#\n# epub_identifier = ''\n\n# A unique identification for the text.\n#\n# epub_uid = ''\n\n# A list of files that should not be packed into the epub file.\nepub_exclude_files = [\"search.html\"]\n\n\n# -- Extension configuration -------------------------------------------------\n"
  },
  {
    "path": "docs/source/create-module.rst",
    "content": "Creating a Module\n=================\n\nCreate 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.\n"
  },
  {
    "path": "docs/source/index.rst",
    "content": "Welcome to Mythril's documentation!\n===========================================\n\n.. toctree::\n   :maxdepth: 1\n   :caption: Table of Contents:\n\n   about\n   installation\n   tutorial\n   security-analysis\n   analysis-modules\n   mythril\n\n\nIndices and Tables\n==================\n\n* :ref:`genindex`\n* :ref:`modindex`\n* :ref:`search`\n\n"
  },
  {
    "path": "docs/source/installation.rst",
    "content": "Installation and Setup\n======================\n\nMythril can be setup using different methods.\n\n**************\nPyPI on Mac OS\n**************\n\n.. code-block:: bash\n\n   brew update\n   brew upgrade\n   brew tap ethereum/ethereum\n   brew install solidity\n   pip3 install mythril\n\n\n**************\nPyPI on Ubuntu\n**************\n\n.. code-block:: bash\n\n   # Update\n   sudo apt update\n\n   # Install solc\n   sudo apt install software-properties-common\n   sudo add-apt-repository ppa:ethereum/ethereum\n   sudo apt install solc\n\n   # Install libssl-dev, python3-dev, and python3-pip\n   sudo apt install libssl-dev python3-dev python3-pip\n\n   # Install mythril\n   pip3 install mythril\n   myth version\n\n\n******\nDocker\n******\n\nAll Mythril releases, starting from v0.18.3, are published to DockerHub as Docker images under the :code:`mythril/myth` name.\n\nAfter installing `Docker CE <https://docs.docker.com/install/>`_:\n\n   .. code-block:: bash\n\n      # Pull the latest release of mythril/myth\n      $ docker pull mythril/myth\n\nUse :code:`docker run mythril/myth` the same way you would use the :code:`myth` command\n\n   .. code-block:: bash\n\n      docker run mythril/myth --help\n      docker run mythril/myth disassemble -c \"0x6060\"\n\nTo 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:\n\n   .. code-block:: bash\n\n      docker run -v $(pwd):/tmp mythril/myth analyze /tmp/contract.sol\n"
  },
  {
    "path": "docs/source/module-list.rst",
    "content": "Modules\n=======\n\n***********************************\nDelegate Call To Untrusted Contract\n***********************************\n\nThe `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>`_.\n\n***********************************\nDependence on Predictable Variables\n***********************************\n\nThe `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>`_.\n\n\n***********\nEther Thief\n***********\n\nThe `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>`_.\n\n**********\nExceptions\n**********\n\nThe `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>`_.\n\n**************\nExternal Calls\n**************\n\nThe `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.\n\n*******\nInteger\n*******\n\nThe `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>`_.\n\n**************\nMultiple Sends\n**************\n\nThe `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.\n\n*******\nSuicide\n*******\n\nThe `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>`_.\n\n\n****************************\nState Change External Calls\n****************************\n\nThe `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.\n\n****************\nUnchecked Retval\n****************\n\nThe `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>`_.\n\n************************\nUser Supplied assertion\n************************\n\nThe `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)`.\n\n************************\nArbitrary Storage Write\n************************\n\nThe `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>`_.\n\n****************\nArbitrary Jump\n****************\n\nThe `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>`_.\n\n****************************\nTransaction Order Dependence\n****************************\n\nThe `transaction order dependence module <https://github.com/Consensys/mythril/blob/develop/mythril/analysis/module/modules/transaction_order_dependence.py>`_ detects `SWC-114 (Transaction Order Dependence) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-114>`_.\n\n****************************\nRequirement Violation\n****************************\n\nThe `Requirement Violation module <https://github.com/Consensys/mythril/blob/develop/mythril/analysis/module/modules/requirements_violation.py>`_ detects `SWC-123 (Requirement Violation) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-123>`_.\n\n****************************\nUnexpected Ether balance\n****************************\n\nThe `Unexpected Ether balance module <https://github.com/Consensys/mythril/blob/develop/mythril/analysis/module/modules/unexpected_ether.py>`_ detects `SWC-132 (Unexpected Ether balance) <https://smartcontractsecurity.github.io/SWC-registry/docs/SWC-132>`_.\n\n"
  },
  {
    "path": "docs/source/modules.rst",
    "content": "mythril\n=======\n\n.. toctree::\n   :maxdepth: 4\n\n   mythril\n"
  },
  {
    "path": "docs/source/mythril.analysis.module.modules.rst",
    "content": "mythril.analysis.module.modules package\n=======================================\n\nSubmodules\n----------\n\nmythril.analysis.module.modules.arbitrary\\_jump module\n------------------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.arbitrary_jump\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.modules.arbitrary\\_write module\n-------------------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.arbitrary_write\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.modules.delegatecall module\n---------------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.delegatecall\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.modules.dependence\\_on\\_origin module\n-------------------------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.dependence_on_origin\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.modules.dependence\\_on\\_predictable\\_vars module\n------------------------------------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.dependence_on_predictable_vars\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.modules.ether\\_thief module\n---------------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.ether_thief\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.modules.exceptions module\n-------------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.exceptions\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.modules.external\\_calls module\n------------------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.external_calls\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.modules.integer module\n----------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.integer\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.modules.multiple\\_sends module\n------------------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.multiple_sends\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.modules.state\\_change\\_external\\_calls module\n---------------------------------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.state_change_external_calls\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.modules.suicide module\n----------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.suicide\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.modules.unchecked\\_retval module\n--------------------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.unchecked_retval\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.modules.user\\_assertions module\n-------------------------------------------------------\n\n.. automodule:: mythril.analysis.module.modules.user_assertions\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.analysis.module.modules\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.analysis.module.rst",
    "content": "mythril.analysis.module package\n===============================\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   mythril.analysis.module.modules\n\nSubmodules\n----------\n\nmythril.analysis.module.base module\n-----------------------------------\n\n.. automodule:: mythril.analysis.module.base\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.loader module\n-------------------------------------\n\n.. automodule:: mythril.analysis.module.loader\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.module\\_helpers module\n----------------------------------------------\n\n.. automodule:: mythril.analysis.module.module_helpers\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.module.util module\n-----------------------------------\n\n.. automodule:: mythril.analysis.module.util\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.analysis.module\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.analysis.rst",
    "content": "mythril.analysis package\n========================\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   mythril.analysis.module\n\nSubmodules\n----------\n\nmythril.analysis.analysis\\_args module\n--------------------------------------\n\n.. automodule:: mythril.analysis.analysis_args\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.call\\_helpers module\n-------------------------------------\n\n.. automodule:: mythril.analysis.call_helpers\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.callgraph module\n---------------------------------\n\n.. automodule:: mythril.analysis.callgraph\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.issue\\_annotation module\n-----------------------------------------\n\n.. automodule:: mythril.analysis.issue_annotation\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.ops module\n---------------------------\n\n.. automodule:: mythril.analysis.ops\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.potential\\_issues module\n-----------------------------------------\n\n.. automodule:: mythril.analysis.potential_issues\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.report module\n------------------------------\n\n.. automodule:: mythril.analysis.report\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.security module\n--------------------------------\n\n.. automodule:: mythril.analysis.security\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.solver module\n------------------------------\n\n.. automodule:: mythril.analysis.solver\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.swc\\_data module\n---------------------------------\n\n.. automodule:: mythril.analysis.swc_data\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.symbolic module\n--------------------------------\n\n.. automodule:: mythril.analysis.symbolic\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.analysis.traceexplore module\n------------------------------------\n\n.. automodule:: mythril.analysis.traceexplore\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.analysis\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.concolic.rst",
    "content": "mythril.concolic package\n========================\n\nSubmodules\n----------\n\nmythril.concolic.concolic\\_execution module\n-------------------------------------------\n\n.. automodule:: mythril.concolic.concolic_execution\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.concolic.concrete\\_data module\n--------------------------------------\n\n.. automodule:: mythril.concolic.concrete_data\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.concolic.find\\_trace module\n-----------------------------------\n\n.. automodule:: mythril.concolic.find_trace\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.concolic\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.disassembler.rst",
    "content": "mythril.disassembler package\n============================\n\nSubmodules\n----------\n\nmythril.disassembler.asm module\n-------------------------------\n\n.. automodule:: mythril.disassembler.asm\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.disassembler.disassembly module\n---------------------------------------\n\n.. automodule:: mythril.disassembler.disassembly\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.disassembler\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.ethereum.interface.rpc.rst",
    "content": "mythril.ethereum.interface.rpc package\n======================================\n\nSubmodules\n----------\n\nmythril.ethereum.interface.rpc.base\\_client module\n--------------------------------------------------\n\n.. automodule:: mythril.ethereum.interface.rpc.base_client\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.ethereum.interface.rpc.client module\n--------------------------------------------\n\n.. automodule:: mythril.ethereum.interface.rpc.client\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.ethereum.interface.rpc.constants module\n-----------------------------------------------\n\n.. automodule:: mythril.ethereum.interface.rpc.constants\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.ethereum.interface.rpc.exceptions module\n------------------------------------------------\n\n.. automodule:: mythril.ethereum.interface.rpc.exceptions\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.ethereum.interface.rpc.utils module\n-------------------------------------------\n\n.. automodule:: mythril.ethereum.interface.rpc.utils\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.ethereum.interface.rpc\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.ethereum.interface.rst",
    "content": "mythril.ethereum.interface package\n==================================\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   mythril.ethereum.interface.rpc\n\nModule contents\n---------------\n\n.. automodule:: mythril.ethereum.interface\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.ethereum.rst",
    "content": "mythril.ethereum package\n========================\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   mythril.ethereum.interface\n\nSubmodules\n----------\n\nmythril.ethereum.evmcontract module\n-----------------------------------\n\n.. automodule:: mythril.ethereum.evmcontract\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.ethereum.util module\n----------------------------\n\n.. automodule:: mythril.ethereum.util\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.ethereum\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.interfaces.rst",
    "content": "mythril.interfaces package\n==========================\n\nSubmodules\n----------\n\nmythril.interfaces.cli module\n-----------------------------\n\n.. automodule:: mythril.interfaces.cli\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.interfaces.epic module\n------------------------------\n\n.. automodule:: mythril.interfaces.epic\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.interfaces\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.laser.ethereum.function_managers.rst",
    "content": "mythril.laser.ethereum.function\\_managers package\n=================================================\n\nSubmodules\n----------\n\nmythril.laser.ethereum.function\\_managers.exponent\\_function\\_manager module\n----------------------------------------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.function_managers.exponent_function_manager\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.function\\_managers.keccak\\_function\\_manager module\n--------------------------------------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.function_managers.keccak_function_manager\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.laser.ethereum.function_managers\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.laser.ethereum.rst",
    "content": "mythril.laser.ethereum package\n==============================\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   mythril.laser.ethereum.function_managers\n   mythril.laser.ethereum.state\n   mythril.laser.ethereum.strategy\n   mythril.laser.ethereum.transaction\n\nSubmodules\n----------\n\nmythril.laser.ethereum.call module\n----------------------------------\n\n.. automodule:: mythril.laser.ethereum.call\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.cfg module\n---------------------------------\n\n.. automodule:: mythril.laser.ethereum.cfg\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.evm\\_exceptions module\n---------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.evm_exceptions\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.instruction\\_data module\n-----------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.instruction_data\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.instructions module\n------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.instructions\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.natives module\n-------------------------------------\n\n.. automodule:: mythril.laser.ethereum.natives\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.svm module\n---------------------------------\n\n.. automodule:: mythril.laser.ethereum.svm\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.time\\_handler module\n-------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.time_handler\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.util module\n----------------------------------\n\n.. automodule:: mythril.laser.ethereum.util\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.laser.ethereum\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.laser.ethereum.state.rst",
    "content": "mythril.laser.ethereum.state package\n====================================\n\nSubmodules\n----------\n\nmythril.laser.ethereum.state.account module\n-------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.state.account\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.state.annotation module\n----------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.state.annotation\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.state.calldata module\n--------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.state.calldata\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.state.constraints module\n-----------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.state.constraints\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.state.environment module\n-----------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.state.environment\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.state.global\\_state module\n-------------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.state.global_state\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.state.machine\\_state module\n--------------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.state.machine_state\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.state.memory module\n------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.state.memory\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.state.return\\_data module\n------------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.state.return_data\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.state.world\\_state module\n------------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.state.world_state\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.laser.ethereum.state\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.laser.ethereum.strategy.extensions.rst",
    "content": "mythril.laser.ethereum.strategy.extensions package\n==================================================\n\nSubmodules\n----------\n\nmythril.laser.ethereum.strategy.extensions.bounded\\_loops module\n----------------------------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.strategy.extensions.bounded_loops\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.laser.ethereum.strategy.extensions\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.laser.ethereum.strategy.rst",
    "content": "mythril.laser.ethereum.strategy package\n=======================================\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   mythril.laser.ethereum.strategy.extensions\n\nSubmodules\n----------\n\nmythril.laser.ethereum.strategy.basic module\n--------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.strategy.basic\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.strategy.beam module\n-------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.strategy.beam\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.strategy.concolic module\n-----------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.strategy.concolic\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.laser.ethereum.strategy\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.laser.ethereum.transaction.rst",
    "content": "mythril.laser.ethereum.transaction package\n==========================================\n\nSubmodules\n----------\n\nmythril.laser.ethereum.transaction.concolic module\n--------------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.transaction.concolic\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.transaction.symbolic module\n--------------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.transaction.symbolic\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.ethereum.transaction.transaction\\_models module\n-------------------------------------------------------------\n\n.. automodule:: mythril.laser.ethereum.transaction.transaction_models\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.laser.ethereum.transaction\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.laser.plugin.plugins.coverage.rst",
    "content": "mythril.laser.plugin.plugins.coverage package\n=============================================\n\nSubmodules\n----------\n\nmythril.laser.plugin.plugins.coverage.coverage\\_plugin module\n-------------------------------------------------------------\n\n.. automodule:: mythril.laser.plugin.plugins.coverage.coverage_plugin\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.plugin.plugins.coverage.coverage\\_strategy module\n---------------------------------------------------------------\n\n.. automodule:: mythril.laser.plugin.plugins.coverage.coverage_strategy\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.laser.plugin.plugins.coverage\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.laser.plugin.plugins.rst",
    "content": "mythril.laser.plugin.plugins package\n====================================\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   mythril.laser.plugin.plugins.coverage\n   mythril.laser.plugin.plugins.summary_backup\n\nSubmodules\n----------\n\nmythril.laser.plugin.plugins.benchmark module\n---------------------------------------------\n\n.. automodule:: mythril.laser.plugin.plugins.benchmark\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.plugin.plugins.call\\_depth\\_limiter module\n--------------------------------------------------------\n\n.. automodule:: mythril.laser.plugin.plugins.call_depth_limiter\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.plugin.plugins.dependency\\_pruner module\n------------------------------------------------------\n\n.. automodule:: mythril.laser.plugin.plugins.dependency_pruner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.plugin.plugins.instruction\\_profiler module\n---------------------------------------------------------\n\n.. automodule:: mythril.laser.plugin.plugins.instruction_profiler\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.plugin.plugins.mutation\\_pruner module\n----------------------------------------------------\n\n.. automodule:: mythril.laser.plugin.plugins.mutation_pruner\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.plugin.plugins.plugin\\_annotations module\n-------------------------------------------------------\n\n.. automodule:: mythril.laser.plugin.plugins.plugin_annotations\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.laser.plugin.plugins\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.laser.plugin.plugins.summary_backup.rst",
    "content": "mythril.laser.plugin.plugins.summary\\_backup package\n====================================================\n\nModule contents\n---------------\n\n.. automodule:: mythril.laser.plugin.plugins.summary_backup\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.laser.plugin.rst",
    "content": "mythril.laser.plugin package\n============================\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   mythril.laser.plugin.plugins\n\nSubmodules\n----------\n\nmythril.laser.plugin.builder module\n-----------------------------------\n\n.. automodule:: mythril.laser.plugin.builder\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.plugin.interface module\n-------------------------------------\n\n.. automodule:: mythril.laser.plugin.interface\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.plugin.loader module\n----------------------------------\n\n.. automodule:: mythril.laser.plugin.loader\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.plugin.signals module\n-----------------------------------\n\n.. automodule:: mythril.laser.plugin.signals\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.laser.plugin\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.laser.rst",
    "content": "mythril.laser package\n=====================\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   mythril.laser.ethereum\n   mythril.laser.plugin\n   mythril.laser.smt\n\nSubmodules\n----------\n\nmythril.laser.execution\\_info module\n------------------------------------\n\n.. automodule:: mythril.laser.execution_info\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.laser\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.laser.smt.rst",
    "content": "mythril.laser.smt package\n=========================\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   mythril.laser.smt.solver\n\nSubmodules\n----------\n\nmythril.laser.smt.array module\n------------------------------\n\n.. automodule:: mythril.laser.smt.array\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.smt.bitvec module\n-------------------------------\n\n.. automodule:: mythril.laser.smt.bitvec\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.smt.bitvec\\_helper module\n---------------------------------------\n\n.. automodule:: mythril.laser.smt.bitvec_helper\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.smt.bool module\n-----------------------------\n\n.. automodule:: mythril.laser.smt.bool\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.smt.expression module\n-----------------------------------\n\n.. automodule:: mythril.laser.smt.expression\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.smt.function module\n---------------------------------\n\n.. automodule:: mythril.laser.smt.function\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.smt.model module\n------------------------------\n\n.. automodule:: mythril.laser.smt.model\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.laser.smt\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.laser.smt.solver.rst",
    "content": "mythril.laser.smt.solver package\n================================\n\nSubmodules\n----------\n\nmythril.laser.smt.solver.independence\\_solver module\n----------------------------------------------------\n\n.. automodule:: mythril.laser.smt.solver.independence_solver\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.smt.solver.solver module\n--------------------------------------\n\n.. automodule:: mythril.laser.smt.solver.solver\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.laser.smt.solver.solver\\_statistics module\n--------------------------------------------------\n\n.. automodule:: mythril.laser.smt.solver.solver_statistics\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.laser.smt.solver\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.mythril.rst",
    "content": "mythril.mythril package\n=======================\n\nSubmodules\n----------\n\nmythril.mythril.mythril\\_analyzer module\n----------------------------------------\n\n.. automodule:: mythril.mythril.mythril_analyzer\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.mythril.mythril\\_config module\n--------------------------------------\n\n.. automodule:: mythril.mythril.mythril_config\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.mythril.mythril\\_disassembler module\n--------------------------------------------\n\n.. automodule:: mythril.mythril.mythril_disassembler\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.mythril\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.plugin.rst",
    "content": "mythril.plugin package\n======================\n\nSubmodules\n----------\n\nmythril.plugin.discovery module\n-------------------------------\n\n.. automodule:: mythril.plugin.discovery\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.plugin.interface module\n-------------------------------\n\n.. automodule:: mythril.plugin.interface\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.plugin.loader module\n----------------------------\n\n.. automodule:: mythril.plugin.loader\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.plugin\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.rst",
    "content": "mythril package\n===============\n\nSubpackages\n-----------\n\n.. toctree::\n   :maxdepth: 4\n\n   mythril.analysis\n   mythril.concolic\n   mythril.disassembler\n   mythril.ethereum\n   mythril.interfaces\n   mythril.laser\n   mythril.mythril\n   mythril.plugin\n   mythril.solidity\n   mythril.support\n\nSubmodules\n----------\n\nmythril.exceptions module\n-------------------------\n\n.. automodule:: mythril.exceptions\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.solidity.rst",
    "content": "mythril.solidity package\n========================\n\nSubmodules\n----------\n\nmythril.solidity.soliditycontract module\n----------------------------------------\n\n.. automodule:: mythril.solidity.soliditycontract\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.solidity\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/mythril.support.rst",
    "content": "mythril.support package\n=======================\n\nSubmodules\n----------\n\nmythril.support.loader module\n-----------------------------\n\n.. automodule:: mythril.support.loader\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.support.lock module\n---------------------------\n\n.. automodule:: mythril.support.lock\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.support.model module\n----------------------------\n\n.. automodule:: mythril.support.model\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.support.opcodes module\n------------------------------\n\n.. automodule:: mythril.support.opcodes\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.support.signatures module\n---------------------------------\n\n.. automodule:: mythril.support.signatures\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.support.source\\_support module\n--------------------------------------\n\n.. automodule:: mythril.support.source_support\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.support.start\\_time module\n----------------------------------\n\n.. automodule:: mythril.support.start_time\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.support.support\\_args module\n------------------------------------\n\n.. automodule:: mythril.support.support_args\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nmythril.support.support\\_utils module\n-------------------------------------\n\n.. automodule:: mythril.support.support_utils\n   :members:\n   :undoc-members:\n   :show-inheritance:\n\nModule contents\n---------------\n\n.. automodule:: mythril.support\n   :members:\n   :undoc-members:\n   :show-inheritance:\n"
  },
  {
    "path": "docs/source/security-analysis.rst",
    "content": "Security Analysis\n=================\n\nRunning :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.\n\n***********************\nAnalyzing Solidity Code\n***********************\n\nIn 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.\n\n.. code-block:: bash\n\n   $ myth analyze ether_send.sol\n   ==== Unprotected Ether Withdrawal ====\n   SWC ID: 105\n   Severity: High\n   Contract: Crowdfunding\n   Function name: withdrawfunds()\n   PC address: 730\n   Estimated Gas Usage: 1132 - 1743\n   Anyone can withdraw ETH from the contract account.\n   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.\n   --------------------\n   In file: tests/testdata/input_contracts/ether_send.sol:21\n\n   msg.sender.transfer(address(this).balance)\n\n   --------------------\n\nIf 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:\n\n.. code-block:: bash\n\n   myth analyze OmiseGo.sol:OMGToken\n\nSpecifying Solc Versions\n########################\n\nYou 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.\n\n\nOutput Formats\n##############\n\nBy default, analysis results are printed to the terminal in text format. You can change the output format with the :code:`-o` argument:\n\n.. code-block:: bash\n\n   myth analyze underflow.sol -o jsonv2\n\nAvailable 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.\n\n****************************\nAnalyzing On-Chain Contracts\n****************************\n\nWhen 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.\n\n+-------------------------------------------------+-------------------------------------------------+\n| :code:`--rpc ganache`                           | Connect to local Ganache                        |\n+-------------------------------------------------+-------------------------------------------------+\n| :code:`--rpc infura-[netname] --infura-id <ID>` | Connect to mainnet, rinkeby, kovan, or ropsten. |\n+-------------------------------------------------+-------------------------------------------------+\n| :code:`--rpc host:port`                         | Connect to custom rpc                           |\n+-------------------------------------------------+-------------------------------------------------+\n| :code:`--rpctls <True/False>`                   | RPC connection over TLS (default: False)        |\n+-------------------------------------------------+-------------------------------------------------+\n\nTo specify a contract address, use :code:`-a <address>`\n\nAnalyze mainnet contract via INFURA:\n\n.. code-block:: bash\n\n   myth analyze -a 0x5c436ff914c458983414019195e0f4ecbef9e6dd --infura-id <ID>\n\nYou can also use the environment variable `INFURA_ID` instead of the cmd line argument or set it in ~/.mythril/config.ini.\n\n.. code-block:: bash\n\n   myth -v4 analyze -a 0xEbFD99838cb0c132016B9E117563CB41f2B02264 --infura-id <ID>\n\n******************\nSpeed vs. Coverage\n******************\n\nThe 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.\n\nThe 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.\n-\n"
  },
  {
    "path": "docs/source/tutorial.rst",
    "content": "Tutorial\n======================\n\n******************************************\nIntroduction\n******************************************\nMythril 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.\nThis 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. \n\n\n******************************************\nExecuting Mythril on Simple Contracts\n******************************************\n\nTo 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.\n\n\n\n\n   .. code-block:: solidity\n\n        contract Exceptions {\n\n            uint256[8] myarray;\n            uint counter = 0;\n            function assert1() public pure {\n                uint256 i = 1;\n                assert(i == 0);\n            }\n            function counter_increase() public {\n                counter+=1;\n            }\n            function assert5(uint input_x) public view{\n                require(counter>2);\n                assert(input_x > 10);\n            }\n            function assert2() public pure {\n                uint256 i = 1;\n                assert(i > 0);\n            }\n\n            function assert3(uint256 input) public pure {\n                assert(input != 23);\n            }\n\n            function require_is_fine(uint256 input) public pure {\n                require(input != 23);\n            }\n\n            function this_is_fine(uint256 input) public pure {\n                if (input > 0) {\n                    uint256 i = 1/input;\n                }\n            }\n\n            function this_is_find_2(uint256 index) public view {\n                if (index < 8) {\n                    uint256 i = myarray[index];\n                }\n            }\n\n        }\n\nThe 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:\n\n    .. code-block:: bash\n\n        $ myth analyze <file_path>\n\nThe output will show the vulnerabilities in the contract. In the case of the \"Exceptions\" contract, Mythril detected two instances of assertion violations.\n\n\n    .. code-block:: none\n\n        ==== Exception State ====\n        SWC ID: 110\n        Severity: Medium\n        Contract: Exceptions\n        Function name: assert1()\n        PC address: 708\n        Estimated Gas Usage: 207 - 492\n        An assertion violation was triggered.\n        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).\n        --------------------\n        In file: solidity_examples/exceptions.sol:7\n\n        assert(i == 0)\n\n        --------------------\n        Initial State:\n\n        Account: [CREATOR], balance: 0x2, nonce:0, storage:{}\n        Account: [ATTACKER], balance: 0x0, nonce:0, storage:{}\n\n        Transaction Sequence:\n\n        Caller: [CREATOR], calldata: , value: 0x0\n        Caller: [ATTACKER], function: assert1(), txdata: 0xb34c3610, value: 0x0\n\n        ==== Exception State ====\n        SWC ID: 110\n        Severity: Medium\n        Contract: Exceptions\n        Function name: assert3(uint256)\n        PC address: 708\n        Estimated Gas Usage: 482 - 767\n        An assertion violation was triggered.\n        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).\n        --------------------\n        In file: solidity_examples/exceptions.sol:20\n\n        assert(input != 23)\n\n        --------------------\n        Initial State:\n\n        Account: [CREATOR], balance: 0x40207f9b0, nonce:0, storage:{}\n        Account: [ATTACKER], balance: 0x0, nonce:0, storage:{}\n\n        Transaction Sequence:\n\n        Caller: [CREATOR], calldata: , value: 0x0\n        Caller: [SOMEGUY], function: assert3(uint256), txdata: 0x546455b50000000000000000000000000000000000000000000000000000000000000017, value: 0x0\n\n\nOne 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. \nTo detect this vulnerability, the transaction count can be increased to four using the ``-t`` option, as shown below:\n\n.. code-block:: bash\n\n    $ myth analyze <file_path> -t 4\n\nThis gives the following execution output:\n\n    .. code-block:: none\n\n        ==== Exception State ====\n        SWC ID: 110\n        Severity: Medium\n        Contract: Exceptions\n        Function name: assert1()\n        PC address: 731\n        Estimated Gas Usage: 207 - 492\n        An assertion violation was triggered.\n        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).\n        --------------------\n        In file: solidity_examples/exceptions.sol:7\n\n        assert(i == 0)\n\n        --------------------\n        Initial State:\n\n        Account: [CREATOR], balance: 0x2, nonce:0, storage:{}\n        Account: [ATTACKER], balance: 0x0, nonce:0, storage:{}\n\n        Transaction Sequence:\n\n        Caller: [CREATOR], calldata: , value: 0x0\n        Caller: [ATTACKER], function: assert1(), txdata: 0xb34c3610, value: 0x0\n\n        ==== Exception State ====\n        SWC ID: 110\n        Severity: Medium\n        Contract: Exceptions\n        Function name: assert3(uint256)\n        PC address: 731\n        Estimated Gas Usage: 504 - 789\n        An assertion violation was triggered.\n        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).\n        --------------------\n        In file: solidity_examples/exceptions.sol:22\n\n        assert(input != 23)\n\n        --------------------\n        Initial State:\n\n        Account: [CREATOR], balance: 0x3, nonce:0, storage:{}\n        Account: [ATTACKER], balance: 0x0, nonce:0, storage:{}\n\n        Transaction Sequence:\n\n        Caller: [CREATOR], calldata: , value: 0x0\n        Caller: [ATTACKER], function: assert3(uint256), txdata: 0x546455b50000000000000000000000000000000000000000000000000000000000000017, value: 0x0\n\n        ==== Exception State ====\n        SWC ID: 110\n        Severity: Medium\n        Contract: Exceptions\n        Function name: assert5(uint256)\n        PC address: 731\n        Estimated Gas Usage: 1302 - 1587\n        An assertion violation was triggered.\n        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).\n        --------------------\n        In file: solidity_examples/exceptions.sol:14\n\n        assert(input_x > 10)\n\n        --------------------\n        Initial State:\n\n        Account: [CREATOR], balance: 0x20000000, nonce:0, storage:{}\n        Account: [ATTACKER], balance: 0x1000000, nonce:0, storage:{}\n\n        Transaction Sequence:\n\n        Caller: [CREATOR], calldata: , value: 0x0\n        Caller: [ATTACKER], function: counter_increase(), txdata: 0xe47b0253, value: 0x0\n        Caller: [CREATOR], function: counter_increase(), txdata: 0xe47b0253, value: 0x0\n        Caller: [CREATOR], function: counter_increase(), txdata: 0xe47b0253, value: 0x0\n        Caller: [ATTACKER], function: assert5(uint256), txdata: 0x1d5d53dd0000000000000000000000000000000000000000000000000000000000000003, value: 0x0\n\n\n\n\nFor the violation in the 4th transaction, the input value should be less than 10. The transaction data generated by Mythril for the\n4th transaction is ``0x1d5d53dd0000000000000000000000000000000000000000000000000000000000000003``, the first 4 bytes ``1d5d53dd``\ncorrespond to the function signature hence the input generated by Mythril is ``0000000000000000000000000000000000000000000000000000000000000003``\nin hex, which is 3. For automated resolution of the input try using a different output format such as JSON.\n\n    .. code-block:: bash\n\n        $ myth analyze <file_path> -o json\n\nThis leads to the following output:\n\n    .. code-block:: json\n\n        {\n            \"error\": null,\n            \"issues\": [{\n                \"address\": 731,\n                \"code\": \"assert(i == 0)\",\n                \"contract\": \"Exceptions\",\n                \"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).\",\n                \"filename\": \"solidity_examples/exceptions.sol\",\n                \"function\": \"assert1()\",\n                \"lineno\": 7,\n                \"max_gas_used\": 492,\n                \"min_gas_used\": 207,\n                \"severity\": \"Medium\",\n                \"sourceMap\": \":::i\",\n                \"swc-id\": \"110\",\n                \"title\": \"Exception State\",\n                \"tx_sequence\": {\n                    \"initialState\": {\n                        \"accounts\": {\n                            \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\": {\n                                \"balance\": \"0x2\",\n                                \"code\": \"\",\n                                \"nonce\": 0,\n                                \"storage\": \"{}\"\n                            },\n                            \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\": {\n                                \"balance\": \"0x0\",\n                                \"code\": \"\",\n                                \"nonce\": 0,\n                                \"storage\": \"{}\"\n                            }\n                        }\n                    },\n                    \"steps\": [{\n                        \"address\": \"\",\n                        \"calldata\": \"\",\n                        \"input\": \"0x6080604052600060085534801561001557600080fd5b506103f7806100256000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b34c36101161005b578063b34c3610146100fd578063b630d70614610107578063e47b025314610123578063f44f13d81461012d57610088565b806301d4277c1461008d5780631d5d53dd146100a9578063546455b5146100c557806378375f14146100e1575b600080fd5b6100a760048036038101906100a29190610251565b610137565b005b6100c360048036038101906100be9190610251565b61015e565b005b6100df60048036038101906100da9190610251565b610181565b005b6100fb60048036038101906100f69190610251565b610196565b005b6101056101a7565b005b610121600480360381019061011c9190610251565b6101c1565b005b61012b6101e0565b005b6101356101fc565b005b600881101561015b5760008082600881106101555761015461027e565b5b01549050505b50565b60026008541161016d57600080fd5b600a811161017e5761017d6102ad565b5b50565b6017811415610193576101926102ad565b5b50565b60178114156101a457600080fd5b50565b600060019050600081146101be576101bd6102ad565b5b50565b60008111156101dd5760008160016101d9919061033a565b9050505b50565b6001600860008282546101f3919061036b565b92505081905550565b60006001905060008111610213576102126102ad565b5b50565b600080fd5b6000819050919050565b61022e8161021b565b811461023957600080fd5b50565b60008135905061024b81610225565b92915050565b60006020828403121561026757610266610216565b5b60006102758482850161023c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006103458261021b565b91506103508361021b565b9250826103605761035f6102dc565b5b828204905092915050565b60006103768261021b565b91506103818361021b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156103b6576103b561030b565b5b82820190509291505056fea2646970667358221220b474c01fa60d997027e1ceb779bcb2b34b6752282e0ea3a038a08b889fe0163f64736f6c634300080c0033\",\n                        \"name\": \"unknown\",\n                        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n                        \"value\": \"0x0\"\n                    }, {\n                        \"address\": \"0x901d12ebe1b195e5aa8748e62bd7734ae19b51f\",\n                        \"calldata\": \"0xb34c3610\",\n                        \"input\": \"0xb34c3610\",\n                        \"name\": \"assert1()\",\n                        \"origin\": \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\",\n                        \"resolved_input\": null,\n                        \"value\": \"0x0\"\n                    }]\n                }\n            }, {\n                \"address\": 731,\n                \"code\": \"assert(input != 23)\",\n                \"contract\": \"Exceptions\",\n                \"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).\",\n                \"filename\": \"solidity_examples/exceptions.sol\",\n                \"function\": \"assert3(uint256)\",\n                \"lineno\": 22,\n                \"max_gas_used\": 789,\n                \"min_gas_used\": 504,\n                \"severity\": \"Medium\",\n                \"sourceMap\": \":::i\",\n                \"swc-id\": \"110\",\n                \"title\": \"Exception State\",\n                \"tx_sequence\": {\n                    \"initialState\": {\n                        \"accounts\": {\n                            \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\": {\n                                \"balance\": \"0x3\",\n                                \"code\": \"\",\n                                \"nonce\": 0,\n                                \"storage\": \"{}\"\n                            },\n                            \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\": {\n                                \"balance\": \"0x0\",\n                                \"code\": \"\",\n                                \"nonce\": 0,\n                                \"storage\": \"{}\"\n                            }\n                        }\n                    },\n                    \"steps\": [{\n                        \"address\": \"\",\n                        \"calldata\": \"\",\n                        \"input\": \"0x6080604052600060085534801561001557600080fd5b506103f7806100256000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b34c36101161005b578063b34c3610146100fd578063b630d70614610107578063e47b025314610123578063f44f13d81461012d57610088565b806301d4277c1461008d5780631d5d53dd146100a9578063546455b5146100c557806378375f14146100e1575b600080fd5b6100a760048036038101906100a29190610251565b610137565b005b6100c360048036038101906100be9190610251565b61015e565b005b6100df60048036038101906100da9190610251565b610181565b005b6100fb60048036038101906100f69190610251565b610196565b005b6101056101a7565b005b610121600480360381019061011c9190610251565b6101c1565b005b61012b6101e0565b005b6101356101fc565b005b600881101561015b5760008082600881106101555761015461027e565b5b01549050505b50565b60026008541161016d57600080fd5b600a811161017e5761017d6102ad565b5b50565b6017811415610193576101926102ad565b5b50565b60178114156101a457600080fd5b50565b600060019050600081146101be576101bd6102ad565b5b50565b60008111156101dd5760008160016101d9919061033a565b9050505b50565b6001600860008282546101f3919061036b565b92505081905550565b60006001905060008111610213576102126102ad565b5b50565b600080fd5b6000819050919050565b61022e8161021b565b811461023957600080fd5b50565b60008135905061024b81610225565b92915050565b60006020828403121561026757610266610216565b5b60006102758482850161023c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006103458261021b565b91506103508361021b565b9250826103605761035f6102dc565b5b828204905092915050565b60006103768261021b565b91506103818361021b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156103b6576103b561030b565b5b82820190509291505056fea2646970667358221220b474c01fa60d997027e1ceb779bcb2b34b6752282e0ea3a038a08b889fe0163f64736f6c634300080c0033\",\n                        \"name\": \"unknown\",\n                        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n                        \"value\": \"0x0\"\n                    }, {\n                        \"address\": \"0x901d12ebe1b195e5aa8748e62bd7734ae19b51f\",\n                        \"calldata\": \"0x546455b50000000000000000000000000000000000000000000000000000000000000017\",\n                        \"input\": \"0x546455b50000000000000000000000000000000000000000000000000000000000000017\",\n                        \"name\": \"assert3(uint256)\",\n                        \"origin\": \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\",\n                        \"resolved_input\": [23],\n                        \"value\": \"0x0\"\n                    }]\n                }\n            }, {\n                \"address\": 731,\n                \"code\": \"assert(input_x > 10)\",\n                \"contract\": \"Exceptions\",\n                \"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).\",\n                \"filename\": \"solidity_examples/exceptions.sol\",\n                \"function\": \"assert5(uint256)\",\n                \"lineno\": 14,\n                \"max_gas_used\": 1587,\n                \"min_gas_used\": 1302,\n                \"severity\": \"Medium\",\n                \"sourceMap\": \":::i\",\n                \"swc-id\": \"110\",\n                \"title\": \"Exception State\",\n                \"tx_sequence\": {\n                    \"initialState\": {\n                        \"accounts\": {\n                            \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\": {\n                                \"balance\": \"0x0\",\n                                \"code\": \"\",\n                                \"nonce\": 0,\n                                \"storage\": \"{}\"\n                            },\n                            \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\": {\n                                \"balance\": \"0x0\",\n                                \"code\": \"\",\n                                \"nonce\": 0,\n                                \"storage\": \"{}\"\n                            }\n                        }\n                    },\n                    \"steps\": [{\n                        \"address\": \"\",\n                        \"calldata\": \"\",\n                        \"input\": \"0x6080604052600060085534801561001557600080fd5b506103f7806100256000396000f3fe608060405234801561001057600080fd5b50600436106100885760003560e01c8063b34c36101161005b578063b34c3610146100fd578063b630d70614610107578063e47b025314610123578063f44f13d81461012d57610088565b806301d4277c1461008d5780631d5d53dd146100a9578063546455b5146100c557806378375f14146100e1575b600080fd5b6100a760048036038101906100a29190610251565b610137565b005b6100c360048036038101906100be9190610251565b61015e565b005b6100df60048036038101906100da9190610251565b610181565b005b6100fb60048036038101906100f69190610251565b610196565b005b6101056101a7565b005b610121600480360381019061011c9190610251565b6101c1565b005b61012b6101e0565b005b6101356101fc565b005b600881101561015b5760008082600881106101555761015461027e565b5b01549050505b50565b60026008541161016d57600080fd5b600a811161017e5761017d6102ad565b5b50565b6017811415610193576101926102ad565b5b50565b60178114156101a457600080fd5b50565b600060019050600081146101be576101bd6102ad565b5b50565b60008111156101dd5760008160016101d9919061033a565b9050505b50565b6001600860008282546101f3919061036b565b92505081905550565b60006001905060008111610213576102126102ad565b5b50565b600080fd5b6000819050919050565b61022e8161021b565b811461023957600080fd5b50565b60008135905061024b81610225565b92915050565b60006020828403121561026757610266610216565b5b60006102758482850161023c565b91505092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60006103458261021b565b91506103508361021b565b9250826103605761035f6102dc565b5b828204905092915050565b60006103768261021b565b91506103818361021b565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156103b6576103b561030b565b5b82820190509291505056fea2646970667358221220b474c01fa60d997027e1ceb779bcb2b34b6752282e0ea3a038a08b889fe0163f64736f6c634300080c0033\",\n                        \"name\": \"unknown\",\n                        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n                        \"value\": \"0x0\"\n                    }, {\n                        \"address\": \"0x901d12ebe1b195e5aa8748e62bd7734ae19b51f\",\n                        \"calldata\": \"0xe47b0253\",\n                        \"input\": \"0xe47b0253\",\n                        \"name\": \"counter_increase()\",\n                        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n                        \"resolved_input\": null,\n                        \"value\": \"0x0\"\n                    }, {\n                        \"address\": \"0x901d12ebe1b195e5aa8748e62bd7734ae19b51f\",\n                        \"calldata\": \"0xe47b0253\",\n                        \"input\": \"0xe47b0253\",\n                        \"name\": \"counter_increase()\",\n                        \"origin\": \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\",\n                        \"resolved_input\": null,\n                        \"value\": \"0x0\"\n                    }, {\n                        \"address\": \"0x901d12ebe1b195e5aa8748e62bd7734ae19b51f\",\n                        \"calldata\": \"0xe47b0253\",\n                        \"input\": \"0xe47b0253\",\n                        \"name\": \"counter_increase()\",\n                        \"origin\": \"0xaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa\",\n                        \"resolved_input\": null,\n                        \"value\": \"0x0\"\n                    }, {\n                        \"address\": \"0x901d12ebe1b195e5aa8748e62bd7734ae19b51f\",\n                        \"calldata\": \"0x1d5d53dd0000000000000000000000000000000000000000000000000000000000000003\",\n                        \"input\": \"0x1d5d53dd0000000000000000000000000000000000000000000000000000000000000003\",\n                        \"name\": \"assert5(uint256)\",\n                        \"origin\": \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\",\n                        \"resolved_input\": [3],\n                        \"value\": \"0x0\"\n                    }]\n                }\n            }],\n            \"success\": true\n        }\n\nWe can observe that the \"resolved_input\" field for the final transaction resolves to ``[3]``. Although this resolution\nfails in some circumstances where output generated by Mythril is although executable on the bytecode, it cannot be decoded due \nto not being a valid ABI.\n\nThere are interesting options such as ``--execution-timeout <seconds>`` and ``--solver-timeout <milliseconds>`` \nwhich can be increased for better results. The default execution-timeout and solver-timeout are 86400 seconds and\n25000 milliseconds respectively.\n\n\n\n\n\n********************************************************\nExecuting Mythril on Contracts with Imports\n********************************************************\n\nWhen 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.\n\nConsider the following Solidity contract, which imports the PRC20 contract from the ``@openzeppelin/contracts/token/PRC20/PRC20.sol`` file:\n\n\n    .. code-block:: solidity\n\n        import \"@openzeppelin/contracts/token/PRC20/PRC20.sol\";\n\n        contract Nothing is PRC20{\n            string x_0 = \"\";\n\n            bytes3 x_1 = \"A\";\n\n            bytes5 x_2 = \"E\";\n\n            bytes5 x_3 = \"\";\n\n            bytes3 x_4 = \"I\";\n\n            bytes3 x_5 = \"U\";\n\n            bytes3 x_6 = \"O\";\n\n            bytes3 x_7 = \"0\";\n\n            bytes3 x_8 = \"U\";\n\n            bytes3 x_9 = \"U\";\n            function stringCompare(string memory a, string memory b) internal pure returns (bool) {\n                if(bytes(a).length != bytes(b).length) {\n                    return false;\n                } else {\n                    return keccak256(bytes(a)) == keccak256(bytes(b));\n                }\n            }\n\n            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){\n                if (!stringCompare(g_0, x_0)) return false;\n                        \n                        \n                if (g_5 != x_5) return false;\n                        \n                if (g_6 != x_6) return false;\n                        \n                if (g_7 != x_7) return false;\n                        \n                if (g_8 != x_8) return false;\n                        \n                if (g_9 != x_9) return false;\n                \n                if (g_10 != x_9) return false;\n\n                if (g_11 != x_9) return false;\n\n                return true;\n\n            }\n        }\n\n\nWhen this contract is directly executed by using the following command:\n\n    .. code-block:: bash\n\n        $ myth analyze <file_path>\n\nWe encounter the following error:\n\n    .. code-block:: none\n\n        mythril.interfaces.cli [ERROR]: Solc experienced a fatal error.\n\n        ParserError: Source \"@openzeppelin/contracts/token/PRC20/PRC20.sol\" not found: File not found. Searched the following locations: \"\".\n        --> <file_path>:1:1:\n        |\n        1 | import \"@openzeppelin/contracts/token/PRC20/PRC20.sol\";\n        | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\n\n\nThis error occurs because Solidity cannot locate the ``PRC20.sol`` file. \nTo solve this issue, you need to provide remapping information to Mythril, which will relay it to the Solidity compiler. \nRemapping involves mapping an import statement to the path that contains the corresponding file.\n\nIn 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:\n\n\n    .. code-block:: json\n\n        {\n        \"remappings\": [ \"@openzeppelin/contracts/token/PRC20/=node_modules/PRC20/\"]\n        }\n\nThis JSON file maps the prefix ``@openzeppelin/contracts/token/PRC20/`` to the path ``node_modules/PRC20/`` in the file system. \nWhen you run Mythril, you can use the ``--solc-json`` option to provide the remapping file:\n\n\n    .. code-block:: bash\n\n        $ myth analyze {file_path} --solc-json {json_file_path}\n\n\nWith this command, Mythril will be able to locate the ``PRC20.sol`` file, and the analysis should proceed without errors. \n\nFor 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>`_.\n\n********************************************************\nExecuting Mythril by Restricting Transaction Sequences\n********************************************************\nMythril is a security analysis tool that can be used to search certain transaction sequences. \nThe `--transaction-sequences` argument can be used to direct the search. \nYou should provide a list of transactions that are sequenced in the same order that they will be executed in the contract.\nFor 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``, \nthe 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.\n\nYou 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.\n\nHere is an example contract that demonstrates how to use Mythril with ``--transaction-sequences``.\n\nConsider the following contract:\n\n\n\n\n    .. code-block:: solidity\n\n        pragma solidity ^0.5.0;\n\n\n        contract Rubixi {\n            //Declare variables for storage critical to contract\n            uint private balance = 0;\n            uint private collectedFees = 0;\n            uint private feePercent = 10;\n            uint private pyramidMultiplier = 300;\n            uint private payoutOrder = 0;\n\n            address payable private creator;\n\n            modifier onlyowner {\n                if (msg.sender == creator) _;\n            }\n\n            struct Participant {\n                address payable etherAddress;\n                uint payout;\n            }\n\n            //Fallback function\n            function() external payable {\n                init();\n            }\n\n            //Sets creator\n            function dynamicPyramid() public {\n                creator = msg.sender;\n            }\n\n            Participant[] private participants;\n\n            //Fee functions for creator\n            function collectAllFees() public onlyowner {\n                require(collectedFees > 0);\n                creator.transfer(collectedFees);\n                collectedFees = 0;\n            }\n\n            function collectFeesInEther(uint _amt) public onlyowner {\n                _amt *= 1 ether;\n                if (_amt > collectedFees) collectAllFees();\n\n                require(collectedFees > 0);\n\n                creator.transfer(_amt);\n                collectedFees -= _amt;\n            }\n\n            function collectPercentOfFees(uint _pcent) public onlyowner {\n                require(collectedFees > 0 && _pcent <= 100);\n\n                uint feesToCollect = collectedFees / 100 * _pcent;\n                creator.transfer(feesToCollect);\n                collectedFees -= feesToCollect;\n            }\n\n            //Functions for changing variables related to the contract\n            function changeOwner(address payable _owner) public onlyowner {\n                creator = _owner;\n            }\n\n            function changeMultiplier(uint _mult) public onlyowner {\n                require(_mult <= 300 &&  _mult >= 120);\n                pyramidMultiplier = _mult;\n            }\n\n            function changeFeePercentage(uint _fee) public onlyowner {\n                require(_fee <= 10);\n                feePercent = _fee;\n            }\n\n            //Functions to provide information to end-user using JSON interface or other interfaces\n            function currentMultiplier() public view returns (uint multiplier, string memory info) {\n                multiplier = pyramidMultiplier;\n                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.\";\n            }\n\n            function currentFeePercentage() public view returns (uint fee, string memory info) {\n                fee = feePercent;\n                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%)\";\n            }\n\n            function currentPyramidBalanceApproximately() public view returns (uint pyramidBalance, string memory info) {\n                pyramidBalance = balance / 1 ether;\n                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\";\n            }\n\n            function nextPayoutWhenPyramidBalanceTotalsApproximately() public view returns (uint balancePayout) {\n                balancePayout = participants[payoutOrder].payout / 1 ether;\n            }\n\n            function feesSeperateFromBalanceApproximately() public view returns (uint fees) {\n                fees = collectedFees / 1 ether;\n            }\n\n            function totalParticipants() public view returns (uint count) {\n                count = participants.length;\n            }\n\n            function numberOfParticipantsWaitingForPayout() public view returns (uint count) {\n                count = participants.length - payoutOrder;\n            }\n\n            function participantDetails(uint orderInPyramid) public view returns (address addr, uint payout) {\n                if (orderInPyramid <= participants.length) {\n                    addr = participants[orderInPyramid].etherAddress;\n                    payout = participants[orderInPyramid].payout / 1 ether;\n                }\n            }\n\n            //init function run on fallback\n            function init() private {\n                //Ensures only tx with value of 1 ether or greater are processed and added to pyramid\n                if (msg.value < 1 ether) {\n                    collectedFees += msg.value;\n                    return;\n                }\n\n                uint _fee = feePercent;\n                // 50% fee rebate on any ether value of 50 or greater\n                if (msg.value >= 50 ether) _fee /= 2;\n\n                addPayout(_fee);\n            }\n\n            //Function called for valid tx to the contract\n            function addPayout(uint _fee) private {\n                //Adds new address to participant array\n                participants.push(Participant(msg.sender, (msg.value * pyramidMultiplier) / 100));\n\n                // These statements ensure a quicker payout system to\n                // later pyramid entrants, so the pyramid has a longer lifespan\n                if (participants.length == 10) pyramidMultiplier = 200;\n                else if (participants.length == 25) pyramidMultiplier = 150;\n\n                // collect fees and update contract balance\n                balance += (msg.value * (100 - _fee)) / 100;\n                collectedFees += (msg.value * _fee) / 100;\n\n                //Pays earlier participiants if balance sufficient\n                while (balance > participants[payoutOrder].payout) {\n                    uint payoutToSend = participants[payoutOrder].payout;\n                    participants[payoutOrder].etherAddress.transfer(payoutToSend);\n\n                    balance -= participants[payoutOrder].payout;\n                    payoutOrder += 1;\n                }\n            }\n        }\n\n\nSince this contract has ``16`` functions, it is infeasible to execute uninteresting functions such as ``feesSeperateFromBalanceApproximately()``.\nTo successfully explore useful transaction sequences we can use Mythril's ``--transaction-sequences`` argument.\n\n.. code-block:: bash\n\n    $ myth analyze rubixi.sol -t 3 --transaction-sequences [[\"0x89b8ae9b\"],[-1],[\"0x686f2c90\",\"0xb4022950\",\"0x4229616d\"]]\n\nThe 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)``.\nMake sure to use ``-t 3`` argument, since the length of the transaction sequence should match with the transaction count argument.\n"
  },
  {
    "path": "mypy-stubs/z3/__init__.pyi",
    "content": "from typing import (\n    Any,\n    Iterable,\n    Iterator,\n    List,\n    Optional,\n    Sequence,\n    Tuple,\n    TypeVar,\n    Union,\n    overload,\n)\n\nfrom .z3types import Ast, ContextObj\n\nclass Context: ...\nclass Z3PPObject: ...\n\nclass AstRef(Z3PPObject):\n    @overload\n    def __init__(self, ast: Ast, ctx: Context) -> None:\n        self.ast: Ast = ...\n        self.ctx: Context = ...\n\n    @overload\n    def __init__(self, ast: Ast) -> None:\n        self.ast: Ast = ...\n        self.ctx: Context = ...\n\n    def ctx_ref(self) -> ContextObj: ...\n    def as_ast(self) -> Ast: ...\n    def children(self) -> List[AstRef]: ...\n    def eq(self, other: AstRef) -> bool: ...\n    # TODO: Cannot add __eq__ currently: mypy complains conflict with\n    # object.__eq__ signature\n    # def __eq__(self, other: object) -> ArithRef:  ...\n\nclass SortRef(AstRef): ...\n\nclass FuncDeclRef(AstRef):\n    def arity(self) -> int: ...\n    def name(self) -> str: ...\n    def __call__(self, *args: ExprRef) -> ExprRef: ...\n\nclass ExprRef(AstRef):\n    def sort(self) -> SortRef: ...\n    def decl(self) -> FuncDeclRef: ...\n\nclass BoolSortRef(SortRef): ...\nclass ArraySortRef(SortRef): ...\nclass BoolRef(ExprRef): ...\n\ndef is_true(a: BoolRef) -> bool: ...\ndef is_false(a: BoolRef) -> bool: ...\ndef is_int_value(a: AstRef) -> bool: ...\ndef substitute(a: AstRef, *m: Tuple[AstRef, AstRef]) -> AstRef: ...\ndef simplify(a: AstRef, *args: Any, **kwargs: Any) -> AstRef: ...\n\nclass ArithSortRef(SortRef): ...\n\nclass ArithRef(ExprRef):\n    def __neg__(self) -> ExprRef: ...\n    def __le__(self, other: ArithRef) -> BoolRef: ...\n    def __lt__(self, other: ArithRef) -> BoolRef: ...\n    def __ge__(self, other: ArithRef) -> BoolRef: ...\n    def __gt__(self, other: ArithRef) -> BoolRef: ...\n    def __add__(self, other: ArithRef) -> ArithRef: ...\n    def __sub__(self, other: ArithRef) -> ArithRef: ...\n    def __mul__(self, other: ArithRef) -> ArithRef: ...\n    def __div__(self, other: ArithRef) -> ArithRef: ...\n    def __truediv__(self, other: ArithRef) -> ArithRef: ...\n    def __mod__(self, other: ArithRef) -> ArithRef: ...\n\nclass BitVecSortRef(SortRef): ...\n\nclass BitVecRef(ExprRef):\n    def size(self) -> int: ...\n    def __add__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...\n    def __radd__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...\n    def __mul__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...\n    def __rmul__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...\n    def __sub__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...\n    def __rsub__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...\n    def __or__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...\n    def __ror__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...\n    def __and__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...\n    def __rand__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...\n    def __xor__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...\n    def __rxor__(self, other: Union[BitVecRef, int]) -> BitVecRef: ...\n    def __pos__(self) -> BitVecRef: ...\n    def __neg__(self) -> BitVecRef: ...\n    def __invert__(self) -> BitVecRef: ...\n    def __div__(self, other: BitVecRef) -> BitVecRef: ...\n    def __rdiv__(self, other: BitVecRef) -> BitVecRef: ...\n    def __truediv__(self, other: BitVecRef) -> BitVecRef: ...\n    def __rtruediv__(self, other: BitVecRef) -> BitVecRef: ...\n    def __mod__(self, other: BitVecRef) -> BitVecRef: ...\n    def __rmod__(self, other: BitVecRef) -> BitVecRef: ...\n    def __le__(self, other: BitVecRef) -> BoolRef: ...\n    def __lt__(self, other: BitVecRef) -> BoolRef: ...\n    def __ge__(self, other: BitVecRef) -> BoolRef: ...\n    def __gt__(self, other: BitVecRef) -> BoolRef: ...\n    def __rshift__(self, other: BitVecRef) -> BitVecRef: ...\n    def __lshift__(self, other: BitVecRef) -> BitVecRef: ...\n    def __rrshift__(self, other: BitVecRef) -> BitVecRef: ...\n    def __rlshift__(self, other: BitVecRef) -> BitVecRef: ...\n\nclass BitVecNumRef(BitVecRef):\n    def as_long(self) -> int: ...\n    def as_signed_long(self) -> int: ...\n    def as_string(self) -> str: ...\n\nclass IntNumRef(ArithRef):\n    def as_long(self) -> int: ...\n    def as_string(self) -> str: ...\n\nclass SeqSortRef(ExprRef): ...\nclass SeqRef(ExprRef): ...\nclass ReSortRef(ExprRef): ...\nclass ReRef(ExprRef): ...\nclass ArrayRef(ExprRef): ...\nclass CheckSatResult: ...\n\nclass ModelRef(Z3PPObject):\n    def __getitem__(self, k: FuncDeclRef) -> IntNumRef: ...\n    def decls(self) -> Iterable[FuncDeclRef]: ...\n    def __iter__(self) -> Iterator[FuncDeclRef]: ...\n\nclass FuncEntry:\n    def num_args(self) -> int: ...\n    def arg_value(self, idx: int) -> ExprRef: ...\n    def value(self) -> ExprRef: ...\n\nclass FuncInterp(Z3PPObject):\n    def else_value(self) -> ExprRef: ...\n    def num_entries(self) -> int: ...\n    def arity(self) -> int: ...\n    def entry(self, idx: int) -> FuncEntry: ...\n\nclass Goal(Z3PPObject): ...\n\nclass Solver(Z3PPObject):\n    ctx: Context\n    def __init__(self, ctx: Optional[Context] = None) -> None: ...\n    def to_smt2(self) -> str: ...\n    def check(self) -> CheckSatResult: ...\n    def push(self) -> None: ...\n    def pop(self, num: Optional[int] = 1) -> None: ...\n    def model(self) -> ModelRef: ...\n    def set(self, *args: Any, **kwargs: Any) -> None: ...\n    @overload\n    def add(self, *args: Union[BoolRef, Goal]) -> None: ...\n    @overload\n    def add(self, args: Sequence[Union[BoolRef, Goal]]) -> None: ...\n    def reset(self) -> None: ...\n\nclass Optimize(Z3PPObject):\n    ctx: Context\n    def __init__(self, ctx: Optional[Context] = None) -> None: ...\n    def check(self) -> CheckSatResult: ...\n    def push(self) -> None: ...\n    def pop(self) -> None: ...\n    def model(self) -> ModelRef: ...\n    def set(self, *args: Any, **kwargs: Any) -> None: ...\n    @overload\n    def add(self, *args: Union[BoolRef, Goal]) -> None: ...\n    @overload\n    def add(self, args: Sequence[Union[BoolRef, Goal]]) -> None: ...\n    def minimize(self, element: ExprRef) -> None: ...\n    def maximize(self, element: ExprRef) -> None: ...\n\nsat: CheckSatResult = ...\nunsat: CheckSatResult = ...\n\n@overload\ndef Int(name: str) -> ArithRef: ...\n@overload\ndef Int(name: str, ctx: Context) -> ArithRef: ...\n@overload\ndef Bool(name: str) -> BoolRef: ...\n@overload\ndef Bool(name: str, ctx: Context) -> BoolRef: ...\n@overload\ndef parse_smt2_string(s: str) -> ExprRef: ...\n@overload\ndef parse_smt2_string(s: str, ctx: Context) -> ExprRef: ...\ndef Array(name: str, domain: SortRef, range: SortRef) -> ArrayRef: ...\ndef K(domain: SortRef, v: Union[ExprRef, int, bool, str]) -> ArrayRef: ...\n\n# Can't give more precise types here since func signature is\n# a vararg list of ExprRef optionally followed by a Context\ndef Or(*args: Any) -> BoolRef: ...\ndef And(*args: Any) -> BoolRef: ...\ndef Not(p: BoolRef, ctx: Optional[Context] = None) -> BoolRef: ...\ndef Implies(a: BoolRef, b: BoolRef, ctx: Context) -> BoolRef: ...\n\nT = TypeVar(\"T\", bound=ExprRef)\n\ndef If(a: BoolRef, b: T, c: T, ctx: Optional[Context] = None) -> T: ...\ndef ULE(a: T, b: T) -> BoolRef: ...\ndef ULT(a: T, b: T) -> BoolRef: ...\ndef UGE(a: T, b: T) -> BoolRef: ...\ndef UGT(a: T, b: T) -> BoolRef: ...\ndef UDiv(a: T, b: T) -> T: ...\ndef URem(a: T, b: T) -> T: ...\ndef SRem(a: T, b: T) -> T: ...\ndef LShR(a: T, b: T) -> T: ...\ndef RotateLeft(a: T, b: T) -> T: ...\ndef RotateRight(a: T, b: T) -> T: ...\ndef SignExt(n: int, a: BitVecRef) -> BitVecRef: ...\ndef ZeroExt(n: int, a: BitVecRef) -> BitVecRef: ...\n@overload\ndef Concat(args: List[Union[SeqRef, str]]) -> SeqRef: ...\n@overload\ndef Concat(*args: Union[SeqRef, str]) -> SeqRef: ...\n@overload\ndef Concat(args: List[ReRef]) -> ReRef: ...\n@overload\ndef Concat(*args: ReRef) -> ReRef: ...\n@overload\ndef Concat(args: List[BitVecRef]) -> BitVecRef: ...\n@overload\ndef Concat(*args: BitVecRef) -> BitVecRef: ...\n@overload\ndef Extract(\n    high: Union[SeqRef], lo: Union[int, ArithRef], a: Union[int, ArithRef]\n) -> SeqRef: ...\n@overload\ndef Extract(\n    high: Union[int, ArithRef], lo: Union[int, ArithRef], a: BitVecRef\n) -> BitVecRef: ...\n@overload\ndef Sum(arg: BitVecRef, *args: Union[BitVecRef, int]) -> BitVecRef: ...\n@overload\ndef Sum(arg: Union[List[BitVecRef], int]) -> BitVecRef: ...\n@overload\ndef Sum(arg: ArithRef, *args: Union[ArithRef, int]) -> ArithRef: ...\n\n# Can't include this overload as it overlaps with the second overload.\n# @overload\n# def Sum(arg: Union[List[ArithRef], int]) -> ArithRef:  ...\n\ndef Function(name: str, *sig: SortRef) -> FuncDeclRef: ...\ndef IntVal(val: int, ctx: Optional[Context] = None) -> IntNumRef: ...\ndef BoolVal(val: bool, ctx: Optional[Context] = None) -> BoolRef: ...\ndef BitVecVal(\n    val: int, bv: Union[int, BitVecSortRef], ctx: Optional[Context] = None\n) -> BitVecRef: ...\ndef BitVec(\n    val: str, bv: Union[int, BitVecSortRef], ctx: Optional[Context] = None\n) -> BitVecRef: ...\ndef IntSort(ctx: Optional[Context] = None) -> ArithSortRef: ...\ndef BoolSort(ctx: Optional[Context] = None) -> BoolSortRef: ...\ndef ArraySort(domain: SortRef, range: SortRef) -> ArraySortRef: ...\ndef BitVecSort(domain: int, ctx: Optional[Context] = None) -> BoolSortRef: ...\ndef ForAll(vs: List[ExprRef], expr: ExprRef) -> ExprRef: ...\ndef Select(arr: ExprRef, ind: ExprRef) -> ExprRef: ...\ndef Update(arr: ArrayRef, ind: ExprRef, newVal: ExprRef) -> ArrayRef: ...\ndef Store(arr: ArrayRef, ind: ExprRef, newVal: ExprRef) -> ArrayRef: ...\ndef BVAddNoOverflow(a: BitVecRef, b: BitVecRef, signed: bool) -> BoolRef: ...\ndef BVAddNoUnderflow(a: BitVecRef, b: BitVecRef) -> BoolRef: ...\ndef BVSubNoOverflow(a: BitVecRef, b: BitVecRef) -> BoolRef: ...\ndef BVSubNoUnderflow(a: BitVecRef, b: BitVecRef, signed: bool) -> BoolRef: ...\ndef BVSDivNoOverflow(a: BitVecRef, b: BitVecRef) -> BoolRef: ...\ndef BVSNegNoOverflow(a: BitVecRef) -> BoolRef: ...\ndef BVMulNoOverflow(a: BitVecRef, b: BitVecRef, signed: bool) -> BoolRef: ...\ndef BVMulNoUnderflow(a: BitVecRef, b: BitVecRef) -> BoolRef: ...\n"
  },
  {
    "path": "mypy-stubs/z3/z3core.pyi",
    "content": "from .z3types import Ast, ContextObj\n\ndef Z3_mk_eq(ctx: ContextObj, a: Ast, b: Ast) -> Ast: ...\ndef Z3_mk_div(ctx: ContextObj, a: Ast, b: Ast) -> Ast: ...\n"
  },
  {
    "path": "mypy-stubs/z3/z3types.pyi",
    "content": "from typing import Any\n\nclass Z3Exception(Exception):\n    def __init__(self, a: Any) -> None:\n        self.value = a\n        ...\n\nclass ContextObj: ...\nclass Ast: ...\n"
  },
  {
    "path": "myth",
    "content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\"\"\"mythril.py: Bug hunting on the Ethereum blockchain\nhttp://www.github.com/ConsenSys/mythril\n\"\"\"\n\nfrom sys import exit\n\nimport mythril.interfaces.cli\n\nif __name__ == \"__main__\":\n    mythril.interfaces.cli.main()\n    exit()\n"
  },
  {
    "path": "mythril/__init__.py",
    "content": "# We use RsT document formatting in docstring. For example :param to mark parameters.\n# See PEP 287\n__docformat__ = \"restructuredtext\"\nimport logging\n\nfrom mythril.plugin.loader import MythrilPluginLoader\n\n# Accept mythril.VERSION to get mythril's current version number\nfrom .__version__ import __version__ as VERSION\n\nlog = logging.getLogger(__name__)\n"
  },
  {
    "path": "mythril/__main__.py",
    "content": "#!/usr/bin/env python3\n# -*- coding: UTF-8 -*-\nimport mythril.interfaces.cli\n\nif __name__ == \"__main__\":\n    mythril.interfaces.cli.main()\n"
  },
  {
    "path": "mythril/__version__.py",
    "content": "\"\"\"This file contains the current Mythril version.\n\nThis file is suitable for sourcing inside POSIX shell, e.g. bash as well\nas for importing into Python.\n\"\"\"\n\n__version__ = \"v0.24.8\"\n"
  },
  {
    "path": "mythril/analysis/__init__.py",
    "content": ""
  },
  {
    "path": "mythril/analysis/analysis_args.py",
    "content": ""
  },
  {
    "path": "mythril/analysis/call_helpers.py",
    "content": "\"\"\"This module provides helper functions for the analysis modules to deal with\ncall functionality.\"\"\"\n\nfrom typing import Union\n\nfrom mythril.analysis.ops import Call, VarType, get_variable\nfrom mythril.laser.ethereum.natives import PRECOMPILE_COUNT\nfrom mythril.laser.ethereum.state.global_state import GlobalState\n\n\ndef get_call_from_state(state: GlobalState) -> Union[Call, None]:\n    \"\"\"\n\n    :param state:\n    :return:\n    \"\"\"\n    instruction = state.get_current_instruction()\n\n    op = instruction[\"opcode\"]\n    stack = state.mstate.stack\n\n    if op in (\"CALL\", \"CALLCODE\"):\n        gas, to, value, meminstart, meminsz, _, _ = (\n            get_variable(stack[-1]),\n            get_variable(stack[-2]),\n            get_variable(stack[-3]),\n            get_variable(stack[-4]),\n            get_variable(stack[-5]),\n            get_variable(stack[-6]),\n            get_variable(stack[-7]),\n        )\n\n        if to.type == VarType.CONCRETE and 0 < to.val <= PRECOMPILE_COUNT:\n            return None\n\n        if meminstart.type == VarType.CONCRETE and meminsz.type == VarType.CONCRETE:\n            return Call(\n                state.node,\n                state,\n                None,\n                op,\n                to,\n                gas,\n                value,\n                state.mstate.memory[meminstart.val : meminsz.val * 4],\n            )\n        else:\n            return Call(state.node, state, None, op, to, gas, value)\n\n    else:\n        gas, to, meminstart, meminsz, _, _ = (\n            get_variable(stack[-1]),\n            get_variable(stack[-2]),\n            get_variable(stack[-3]),\n            get_variable(stack[-4]),\n            get_variable(stack[-5]),\n            get_variable(stack[-6]),\n        )\n\n        return Call(state.node, state, None, op, to, gas)\n"
  },
  {
    "path": "mythril/analysis/callgraph.py",
    "content": "\"\"\"This module contains the configuration and functions to create call\ngraphs.\"\"\"\n\nimport re\nfrom typing import Dict, List\n\nfrom jinja2 import Environment, PackageLoader, select_autoescape\nfrom z3 import Z3Exception\n\nfrom mythril.laser.ethereum.svm import NodeFlags\nfrom mythril.laser.smt import simplify\n\ndefault_opts = {\n    \"autoResize\": True,\n    \"height\": \"100%\",\n    \"width\": \"100%\",\n    \"manipulation\": False,\n    \"layout\": {\n        \"improvedLayout\": True,\n        \"hierarchical\": {\n            \"enabled\": True,\n            \"levelSeparation\": 450,\n            \"nodeSpacing\": 200,\n            \"treeSpacing\": 100,\n            \"blockShifting\": True,\n            \"edgeMinimization\": True,\n            \"parentCentralization\": False,\n            \"direction\": \"LR\",\n            \"sortMethod\": \"directed\",\n        },\n    },\n    \"nodes\": {\n        \"color\": \"#000000\",\n        \"borderWidth\": 1,\n        \"borderWidthSelected\": 2,\n        \"chosen\": True,\n        \"shape\": \"box\",\n        \"font\": {\"align\": \"left\", \"color\": \"#FFFFFF\"},\n    },\n    \"edges\": {\n        \"font\": {\n            \"color\": \"#FFFFFF\",\n            \"face\": \"arial\",\n            \"background\": \"none\",\n            \"strokeWidth\": 0,\n            \"strokeColor\": \"#ffffff\",\n            \"align\": \"horizontal\",\n            \"multi\": False,\n            \"vadjust\": 0,\n        }\n    },\n    \"physics\": {\"enabled\": False},\n}\n\nphrack_opts = {\n    \"nodes\": {\n        \"color\": \"#000000\",\n        \"borderWidth\": 1,\n        \"borderWidthSelected\": 1,\n        \"shapeProperties\": {\"borderDashes\": False, \"borderRadius\": 0},\n        \"chosen\": True,\n        \"shape\": \"box\",\n        \"font\": {\"face\": \"courier new\", \"align\": \"left\", \"color\": \"#000000\"},\n    },\n    \"edges\": {\n        \"font\": {\n            \"color\": \"#000000\",\n            \"face\": \"courier new\",\n            \"background\": \"none\",\n            \"strokeWidth\": 0,\n            \"strokeColor\": \"#ffffff\",\n            \"align\": \"horizontal\",\n            \"multi\": False,\n            \"vadjust\": 0,\n        }\n    },\n}\n\ndefault_colors = [\n    {\n        \"border\": \"#26996f\",\n        \"background\": \"#2f7e5b\",\n        \"highlight\": {\"border\": \"#26996f\", \"background\": \"#28a16f\"},\n    },\n    {\n        \"border\": \"#9e42b3\",\n        \"background\": \"#842899\",\n        \"highlight\": {\"border\": \"#9e42b3\", \"background\": \"#933da6\"},\n    },\n    {\n        \"border\": \"#b82323\",\n        \"background\": \"#991d1d\",\n        \"highlight\": {\"border\": \"#b82323\", \"background\": \"#a61f1f\"},\n    },\n    {\n        \"border\": \"#4753bf\",\n        \"background\": \"#3b46a1\",\n        \"highlight\": {\"border\": \"#4753bf\", \"background\": \"#424db3\"},\n    },\n    {\n        \"border\": \"#26996f\",\n        \"background\": \"#2f7e5b\",\n        \"highlight\": {\"border\": \"#26996f\", \"background\": \"#28a16f\"},\n    },\n    {\n        \"border\": \"#9e42b3\",\n        \"background\": \"#842899\",\n        \"highlight\": {\"border\": \"#9e42b3\", \"background\": \"#933da6\"},\n    },\n    {\n        \"border\": \"#b82323\",\n        \"background\": \"#991d1d\",\n        \"highlight\": {\"border\": \"#b82323\", \"background\": \"#a61f1f\"},\n    },\n    {\n        \"border\": \"#4753bf\",\n        \"background\": \"#3b46a1\",\n        \"highlight\": {\"border\": \"#4753bf\", \"background\": \"#424db3\"},\n    },\n]\n\nphrack_color = {\n    \"border\": \"#000000\",\n    \"background\": \"#ffffff\",\n    \"highlight\": {\"border\": \"#000000\", \"background\": \"#ffffff\"},\n}\n\n\ndef extract_nodes(statespace) -> List[Dict]:\n    \"\"\"\n    Extract nodes from the given statespace and create a list of node dictionaries\n    with visual attributes for graph representation.\n\n    :param statespace: The statespace object containing nodes and states information.\n    :return: A list of dictionaries representing each node with its attributes.\n    \"\"\"\n    nodes = []\n    color_map = {}\n    for node_key, node in statespace.nodes.items():\n        instructions = [state.get_current_instruction() for state in node.states]\n        code_split = []\n\n        for instruction in instructions:\n            address = instruction[\"address\"]\n            opcode = instruction[\"opcode\"]\n            if opcode.startswith(\"PUSH\"):\n                code_line = f\"{address} {opcode} {instruction.get('argument', '')}\"\n            elif (\n                opcode.startswith(\"JUMPDEST\")\n                and NodeFlags.FUNC_ENTRY in node.flags\n                and address == node.start_addr\n            ):\n                code_line = node.function_name\n            else:\n                code_line = f\"{address} {opcode}\"\n\n            code_line = re.sub(r\"([0-9a-f]{8})[0-9a-f]+\", r\"\\1(...)\", code_line)\n            code_split.append(code_line)\n\n        truncated_code = (\n            \"\\n\".join(code_split)\n            if len(code_split) < 7\n            else \"\\n\".join(code_split[:6]) + \"\\n(click to expand +)\"\n        )\n\n        contract_name = node.get_cfg_dict()[\"contract_name\"]\n        if contract_name not in color_map:\n            color = default_colors[len(color_map) % len(default_colors)]\n            color_map[contract_name] = color\n\n        nodes.append(\n            {\n                \"id\": str(node_key),\n                \"color\": color_map.get(contract_name, default_colors[0]),\n                \"size\": 150,\n                \"fullLabel\": \"\\n\".join(code_split),\n                \"label\": truncated_code,\n                \"truncLabel\": truncated_code,\n                \"isExpanded\": False,\n            }\n        )\n\n    return nodes\n\n\ndef extract_edges(statespace):\n    \"\"\"\n\n    :param statespace:\n    :return:\n    \"\"\"\n    edges = []\n    for edge in statespace.edges:\n        if edge.condition is None:\n            label = \"\"\n        else:\n            try:\n                label = str(simplify(edge.condition)).replace(\"\\n\", \"\")\n            except Z3Exception:\n                label = str(edge.condition).replace(\"\\n\", \"\")\n\n        label = re.sub(\n            r\"([^_])([\\d]{2}\\d+)\", lambda m: m.group(1) + hex(int(m.group(2))), label\n        )\n\n        edges.append(\n            {\n                \"from\": str(edge.as_dict[\"from\"]),\n                \"to\": str(edge.as_dict[\"to\"]),\n                \"arrows\": \"to\",\n                \"label\": label,\n                \"smooth\": {\"type\": \"cubicBezier\"},\n            }\n        )\n    return edges\n\n\ndef generate_graph(\n    statespace,\n    title=\"Mythril / Ethereum LASER Symbolic VM\",\n    physics=False,\n    phrackify=False,\n):\n    \"\"\"\n\n    :param statespace:\n    :param title:\n    :param physics:\n    :param phrackify:\n    :return:\n    \"\"\"\n    env = Environment(\n        loader=PackageLoader(\"mythril.analysis\"),\n        autoescape=select_autoescape([\"html\", \"xml\"]),\n    )\n    template = env.get_template(\"callgraph.html\")\n\n    graph_opts = default_opts\n\n    graph_opts[\"physics\"][\"enabled\"] = physics\n\n    return template.render(\n        title=title,\n        nodes=extract_nodes(statespace),\n        edges=extract_edges(statespace),\n        phrackify=phrackify,\n        opts=graph_opts,\n    )\n"
  },
  {
    "path": "mythril/analysis/issue_annotation.py",
    "content": "from copy import deepcopy\nfrom typing import List\n\nfrom mythril.analysis.report import Issue\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.smt import SMTBool as Bool\n\n\nclass IssueAnnotation(StateAnnotation):\n    def __init__(self, conditions: List[Bool], issue: Issue, detector):\n        \"\"\"\n        Issue Annotation to propagate issues\n        - conditions: A list of independent conditions [a, b, c, ...]\n                      Each of these have to be independently be satisfied\n        - issue: The issue of the annotation\n        - detector: The detection module\n        \"\"\"\n        self.conditions = conditions\n        self.issue = issue\n        self.detector = detector\n\n    def persist_to_world_state(self) -> bool:\n        return True\n\n    @property\n    def persist_over_calls(self) -> bool:\n        return True\n\n    def __copy__(self):\n        return IssueAnnotation(\n            conditions=deepcopy(self.conditions),\n            issue=self.issue,\n            detector=self.detector,\n        )\n\n    def check_merge_annotation(self, annotation: \"IssueAnnotation\") -> bool:\n        if self.conditions == annotation.conditions:\n            return False\n        if self.issue.address != annotation.issue.address:\n            return False\n        if type(self.detector) != type(annotation.detector):\n            return False\n\n        return True\n\n    def merge_annotation(self, annotation: \"IssueAnnotation\") -> \"IssueAnnotation\":\n        return self\n"
  },
  {
    "path": "mythril/analysis/module/__init__.py",
    "content": "from mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.module.loader import ModuleLoader\nfrom mythril.analysis.module.util import (\n    get_detection_module_hooks,\n    reset_callback_modules,\n)\n"
  },
  {
    "path": "mythril/analysis/module/base.py",
    "content": "\"\"\"Mythril Detection Modules\n\nThis module includes an definition of the DetectionModule interface.\nDetectionModules implement different analysis rules to find weaknesses and vulnerabilities.\n\"\"\"\n\nimport logging\nfrom abc import ABC, abstractmethod\nfrom enum import Enum\nfrom typing import List, Optional, Set, Tuple\n\nfrom mythril.analysis.report import Issue\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.support.support_args import args\nfrom mythril.support.support_utils import get_code_hash\n\n# Get logger instance\nlog = logging.getLogger(__name__)\n\n\nclass EntryPoint(Enum):\n    \"\"\"EntryPoint Enum\n\n    This enum is used to signify the entry_point of detection modules.\n    See also the class documentation of DetectionModule\n    \"\"\"\n\n    POST = 1\n    CALLBACK = 2\n\n\nclass DetectionModule(ABC):\n    \"\"\"The base detection module.\n\n    All custom-built detection modules must inherit from this class.\n\n    There are several class properties that expose information about the detection modules\n\n    :param name: The name of the detection module\n    :param swc_id: The SWC ID associated with the weakness that the module detects\n    :param description: A description of the detection module, and what it detects\n    :param entry_point: Mythril can run callback style detection modules, or modules that search the statespace.\n                [IMPORTANT] POST entry points severely slow down the analysis, try to always use callback style modules\n    :param pre_hooks: A list of instructions to hook the laser vm for (pre execution of the instruction)\n    :param post_hooks: A list of instructions to hook the laser vm for (post execution of the instruction)\n    \"\"\"\n\n    name = \"Detection Module Name / Title\"\n    swc_id = \"SWC-000\"\n    description = \"Detection module description\"\n    entry_point: EntryPoint = EntryPoint.CALLBACK\n    pre_hooks: List[str] = []\n    post_hooks: List[str] = []\n\n    def __init__(self) -> None:\n        self.issues: List[Issue] = []\n        self.cache: Set[Tuple[int, str]] = set()\n        self.auto_cache = True\n\n    def reset_module(self):\n        \"\"\"Resets the storage of this module\"\"\"\n        self.issues = []\n\n    def update_cache(self, issues=None):\n        \"\"\"\n        Updates cache with param issues, updates against self.issues, if the param is None\n        :param issues: The issues used to update the cache\n        \"\"\"\n        issues = issues or self.issues\n        for issue in issues:\n            self.cache.add((issue.address, issue.bytecode_hash))\n\n    def execute(self, target: GlobalState) -> Optional[List[Issue]]:\n        \"\"\"The entry point for execution, which is being called by Mythril.\n\n        :param target: The target of the analysis, either a global state (callback) or the entire statespace (post)\n        :return: List of encountered issues\n        \"\"\"\n\n        log.debug(\"Entering analysis module: {}\".format(self.__class__.__name__))\n\n        if (\n            target.get_current_instruction()[\"address\"],\n            get_code_hash(target.environment.code.bytecode),\n        ) in self.cache and self.auto_cache:\n            log.debug(\n                f\"Issue in cache for the analysis module: {self.__class__.__name__}, address: {target.get_current_instruction()['address']}\"\n            )\n            return []\n\n        result = self._execute(target)\n        log.debug(\"Exiting analysis module: {}\".format(self.__class__.__name__))\n\n        if result and not args.use_issue_annotations:\n            if self.auto_cache:\n                self.update_cache(result)\n            self.issues += result\n\n        return result\n\n    @abstractmethod\n    def _execute(self, target) -> Optional[List[Issue]]:\n        \"\"\"Module main method (override this)\n\n        :param target: The target of the analysis, either a global state (callback) or the entire statespace (post)\n        :return: List of encountered issues\n        \"\"\"\n        pass\n\n    def __repr__(self) -> str:\n        return (\n            \"<\"\n            \"DetectionModule \"\n            \"name={0.name} \"\n            \"swc_id={0.swc_id} \"\n            \"pre_hooks={0.pre_hooks} \"\n            \"post_hooks={0.post_hooks} \"\n            \"description={0.description}\"\n            \">\"\n        ).format(self)\n"
  },
  {
    "path": "mythril/analysis/module/loader.py",
    "content": "from typing import List, Optional\n\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.module.modules.arbitrary_jump import ArbitraryJump\nfrom mythril.analysis.module.modules.arbitrary_write import ArbitraryStorage\nfrom mythril.analysis.module.modules.delegatecall import ArbitraryDelegateCall\nfrom mythril.analysis.module.modules.dependence_on_origin import TxOrigin\nfrom mythril.analysis.module.modules.dependence_on_predictable_vars import (\n    PredictableVariables,\n)\nfrom mythril.analysis.module.modules.ether_thief import EtherThief\nfrom mythril.analysis.module.modules.exceptions import Exceptions\nfrom mythril.analysis.module.modules.external_calls import ExternalCalls\nfrom mythril.analysis.module.modules.integer import IntegerArithmetics\nfrom mythril.analysis.module.modules.multiple_sends import MultipleSends\nfrom mythril.analysis.module.modules.requirements_violation import RequirementsViolation\nfrom mythril.analysis.module.modules.state_change_external_calls import (\n    StateChangeAfterCall,\n)\nfrom mythril.analysis.module.modules.suicide import AccidentallyKillable\nfrom mythril.analysis.module.modules.transaction_order_dependence import (\n    TransactionOrderDependence,\n)\nfrom mythril.analysis.module.modules.unchecked_retval import UncheckedRetval\nfrom mythril.analysis.module.modules.unexpected_ether import UnexpectedEther\nfrom mythril.analysis.module.modules.user_assertions import UserAssertions\nfrom mythril.exceptions import DetectorNotFoundError\nfrom mythril.support.support_args import args\nfrom mythril.support.support_utils import Singleton\n\n\nclass ModuleLoader(object, metaclass=Singleton):\n    \"\"\"ModuleLoader\n\n    The module loader class implements a singleton loader for detection modules.\n\n    By default it will load the detection modules in the mythril package.\n    Additional detection modules can be loaded using the register_module function call implemented by the ModuleLoader\n    \"\"\"\n\n    def __init__(self):\n        self._modules = []\n        self._register_mythril_modules()\n\n    def register_module(self, detection_module: DetectionModule):\n        \"\"\"Registers a detection module with the module loader\"\"\"\n        if not isinstance(detection_module, DetectionModule):\n            raise ValueError(\"The passed variable is not a valid detection module\")\n        self._modules.append(detection_module)\n\n    def get_detection_modules(\n        self,\n        entry_point: Optional[EntryPoint] = None,\n        white_list: Optional[List[str]] = None,\n    ) -> List[DetectionModule]:\n        \"\"\"Gets registered detection modules\n\n        :param entry_point: If specified: only return detection modules with this entry point\n        :param white_list: If specified: only return whitelisted detection modules\n        :return: The selected detection modules\n        \"\"\"\n\n        result = self._modules[:]\n\n        if white_list:\n            # Sanity check\n\n            available_names = [type(module).__name__ for module in result]\n\n            for name in white_list:\n                if name not in available_names:\n                    raise DetectorNotFoundError(\n                        \"Invalid detection module: {}\".format(name)\n                    )\n\n            result = [\n                module for module in result if type(module).__name__ in white_list\n            ]\n        if args.use_integer_module is False:\n            result = [\n                module\n                for module in result\n                if type(module).__name__ != \"IntegerArithmetics\"\n            ]\n        if entry_point:\n            result = [module for module in result if module.entry_point == entry_point]\n\n        return result\n\n    def _register_mythril_modules(self):\n        self._modules.extend(\n            [\n                AccidentallyKillable(),\n                ArbitraryJump(),\n                ArbitraryStorage(),\n                ArbitraryDelegateCall(),\n                EtherThief(),\n                Exceptions(),\n                ExternalCalls(),\n                IntegerArithmetics(),\n                MultipleSends(),\n                PredictableVariables(),\n                RequirementsViolation(),\n                StateChangeAfterCall(),\n                TransactionOrderDependence(),\n                TxOrigin(),\n                UncheckedRetval(),\n                UnexpectedEther(),\n                UserAssertions(),\n            ]\n        )\n"
  },
  {
    "path": "mythril/analysis/module/module_helpers.py",
    "content": "import traceback\n\n\ndef is_prehook() -> bool:\n    \"\"\"Check if we are in prehook.  One of Bernhard's trademark hacks!\n    Let's leave it to this for now, unless we need to check prehook for\n    a lot more modules.\n    \"\"\"\n\n    assert (\"pre_hook\" in traceback.format_stack()[-5]) or (\n        \"post_hook\" in traceback.format_stack()[-5]\n    )\n    return \"pre_hook\" in traceback.format_stack()[-5]\n"
  },
  {
    "path": "mythril/analysis/module/modules/__init__.py",
    "content": "\n"
  },
  {
    "path": "mythril/analysis/module/modules/arbitrary_jump.py",
    "content": "\"\"\"This module contains the detection code for Arbitrary jumps.\"\"\"\n\nimport logging\n\nfrom mythril.analysis.issue_annotation import IssueAnnotation\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint, Issue\nfrom mythril.analysis.solver import UnsatError, get_transaction_sequence\nfrom mythril.analysis.swc_data import ARBITRARY_JUMP\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import And, BitVec, symbol_factory\nfrom mythril.support.model import get_model\n\nlog = logging.getLogger(__name__)\n\nDESCRIPTION = \"\"\"\n\nSearch for jumps to arbitrary locations in the bytecode\n\"\"\"\n\n\ndef is_unique_jumpdest(jump_dest: BitVec, state: GlobalState) -> bool:\n    \"\"\"\n    Handles cases where jump_dest evaluates to a single concrete value\n    \"\"\"\n\n    try:\n        model = get_model(state.world_state.constraints)\n    except UnsatError:\n        return True\n    concrete_jump_dest = model.eval(jump_dest.raw, model_completion=True)\n    try:\n        model = get_model(\n            state.world_state.constraints\n            + [symbol_factory.BitVecVal(concrete_jump_dest.as_long(), 256) != jump_dest]\n        )\n    except UnsatError:\n        return True\n    return False\n\n\nclass ArbitraryJump(DetectionModule):\n    \"\"\"This module searches for JUMPs to a user-specified location.\"\"\"\n\n    name = \"Caller can redirect execution to arbitrary bytecode locations\"\n    swc_id = ARBITRARY_JUMP\n    description = DESCRIPTION\n    entry_point = EntryPoint.CALLBACK\n    pre_hooks = [\"JUMP\", \"JUMPI\"]\n\n    def reset_module(self):\n        \"\"\"\n        Resets the module by clearing everything\n        :return:\n        \"\"\"\n        super().reset_module()\n\n    def _execute(self, state: GlobalState) -> None:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        return self._analyze_state(state)\n\n    def _analyze_state(self, state):\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n\n        jump_dest = state.mstate.stack[-1]\n\n        if jump_dest.symbolic is False:\n            return []\n\n        if is_unique_jumpdest(jump_dest, state) is True:\n            return []\n\n        try:\n            transaction_sequence = get_transaction_sequence(\n                state, state.world_state.constraints\n            )\n        except UnsatError:\n            return []\n        log.info(\"Detected arbitrary jump dest\")\n        issue = Issue(\n            contract=state.environment.active_account.contract_name,\n            function_name=state.environment.active_function_name,\n            address=state.get_current_instruction()[\"address\"],\n            swc_id=ARBITRARY_JUMP,\n            title=\"Jump to an arbitrary instruction\",\n            severity=\"High\",\n            bytecode=state.environment.code.bytecode,\n            description_head=\"The caller can redirect execution to arbitrary bytecode locations.\",\n            description_tail=\"It is possible to redirect the control flow to arbitrary locations in the code. \"\n            \"This may allow an attacker to bypass security controls or manipulate the business logic of the \"\n            \"smart contract. Avoid using low-level-operations and assembly to prevent this issue.\",\n            gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),\n            transaction_sequence=transaction_sequence,\n        )\n        state.annotate(\n            IssueAnnotation(\n                conditions=[And(*state.world_state.constraints)],\n                issue=issue,\n                detector=self,\n            )\n        )\n\n        return [issue]\n\n\ndetector = ArbitraryJump()\n"
  },
  {
    "path": "mythril/analysis/module/modules/arbitrary_write.py",
    "content": "\"\"\"This module contains the detection code for arbitrary storage write.\"\"\"\n\nimport logging\n\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.potential_issues import (\n    PotentialIssue,\n    get_potential_issues_annotation,\n)\nfrom mythril.analysis.swc_data import WRITE_TO_ARBITRARY_STORAGE\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import symbol_factory\n\nlog = logging.getLogger(__name__)\n\nDESCRIPTION = \"\"\"\n\nSearch for any writes to an arbitrary storage slot\n\"\"\"\n\n\nclass ArbitraryStorage(DetectionModule):\n    \"\"\"This module searches for a feasible write to an arbitrary storage slot.\"\"\"\n\n    name = \"Caller can write to arbitrary storage locations\"\n    swc_id = WRITE_TO_ARBITRARY_STORAGE\n    description = DESCRIPTION\n    entry_point = EntryPoint.CALLBACK\n    pre_hooks = [\"SSTORE\"]\n\n    def reset_module(self):\n        \"\"\"\n        Resets the module by clearing everything\n        :return:\n        \"\"\"\n        super().reset_module()\n\n    def _execute(self, state: GlobalState) -> None:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        potential_issues = self._analyze_state(state)\n\n        annotation = get_potential_issues_annotation(state)\n        annotation.potential_issues.extend(potential_issues)\n\n    def _analyze_state(self, state):\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n\n        write_slot = state.mstate.stack[-1]\n        constraints = state.world_state.constraints + [\n            write_slot == symbol_factory.BitVecVal(324345425435, 256)\n        ]\n\n        potential_issue = PotentialIssue(\n            contract=state.environment.active_account.contract_name,\n            function_name=state.environment.active_function_name,\n            address=state.get_current_instruction()[\"address\"],\n            swc_id=WRITE_TO_ARBITRARY_STORAGE,\n            title=\"Write to an arbitrary storage location\",\n            severity=\"High\",\n            bytecode=state.environment.code.bytecode,\n            description_head=\"The caller can write to arbitrary storage locations.\",\n            description_tail=\"It is possible to write to arbitrary storage locations. By modifying the values of \"\n            \"storage variables, attackers may bypass security controls or manipulate the business logic of \"\n            \"the smart contract.\",\n            detector=self,\n            constraints=constraints,\n        )\n        return [potential_issue]\n\n\ndetector = ArbitraryStorage()\n"
  },
  {
    "path": "mythril/analysis/module/modules/delegatecall.py",
    "content": "\"\"\"This module contains the detection code for insecure delegate call usage.\"\"\"\n\nimport logging\nfrom typing import List\n\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.potential_issues import (\n    PotentialIssue,\n    get_potential_issues_annotation,\n)\nfrom mythril.analysis.swc_data import DELEGATECALL_TO_UNTRUSTED_CONTRACT\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.transaction.symbolic import ACTORS\nfrom mythril.laser.ethereum.transaction.transaction_models import (\n    ContractCreationTransaction,\n)\nfrom mythril.laser.smt import UGT, symbol_factory\n\nlog = logging.getLogger(__name__)\n\n\nclass ArbitraryDelegateCall(DetectionModule):\n    \"\"\"This module detects delegatecall to a user-supplied address.\"\"\"\n\n    name = \"Delegatecall to a user-specified address\"\n    swc_id = DELEGATECALL_TO_UNTRUSTED_CONTRACT\n    description = \"Check for invocations of delegatecall to a user-supplied address.\"\n    entry_point = EntryPoint.CALLBACK\n    pre_hooks = [\"DELEGATECALL\"]\n\n    def _execute(self, state: GlobalState) -> None:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        potential_issues = self._analyze_state(state)\n\n        annotation = get_potential_issues_annotation(state)\n        annotation.potential_issues.extend(potential_issues)\n\n    def _analyze_state(self, state: GlobalState) -> List[PotentialIssue]:\n        \"\"\"\n        :param state: the current state\n        :return: returns the issues for that corresponding state\n        \"\"\"\n        gas = state.mstate.stack[-1]\n        to = state.mstate.stack[-2]\n\n        constraints = [\n            to == ACTORS.attacker,\n            UGT(gas, symbol_factory.BitVecVal(2300, 256)),\n            state.new_bitvec(\n                \"retval_{}\".format(state.get_current_instruction()[\"address\"]), 256\n            )\n            == 1,\n        ]\n\n        for tx in state.world_state.transaction_sequence:\n            if not isinstance(tx, ContractCreationTransaction):\n                constraints.append(tx.caller == ACTORS.attacker)\n\n        try:\n            address = state.get_current_instruction()[\"address\"]\n\n            logging.debug(\n                \"[DELEGATECALL] Detected potential delegatecall to a user-supplied address : {}\".format(\n                    address\n                )\n            )\n\n            description_head = \"The contract delegates execution to another contract with a user-supplied address.\"\n            description_tail = (\n                \"The smart contract delegates execution to a user-supplied address.This could allow an attacker to \"\n                \"execute arbitrary code in the context of this contract account and manipulate the state of the \"\n                \"contract account or execute actions on its behalf.\"\n            )\n\n            return [\n                PotentialIssue(\n                    contract=state.environment.active_account.contract_name,\n                    function_name=state.environment.active_function_name,\n                    address=address,\n                    swc_id=DELEGATECALL_TO_UNTRUSTED_CONTRACT,\n                    bytecode=state.environment.code.bytecode,\n                    title=\"Delegatecall to user-supplied address\",\n                    severity=\"High\",\n                    description_head=description_head,\n                    description_tail=description_tail,\n                    constraints=constraints,\n                    detector=self,\n                )\n            ]\n\n        except UnsatError:\n            return []\n\n\ndetector = ArbitraryDelegateCall()\n"
  },
  {
    "path": "mythril/analysis/module/modules/dependence_on_origin.py",
    "content": "\"\"\"This module contains the detection code for predictable variable\ndependence.\"\"\"\n\nimport logging\nfrom copy import copy\nfrom typing import List\n\nfrom mythril.analysis import solver\nfrom mythril.analysis.issue_annotation import IssueAnnotation\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.report import Issue\nfrom mythril.analysis.swc_data import TX_ORIGIN_USAGE\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import And\n\nlog = logging.getLogger(__name__)\n\n\nclass TxOriginAnnotation:\n    \"\"\"Symbol annotation added to a variable that is initialized with a call to the ORIGIN instruction.\"\"\"\n\n    def __init__(self) -> None:\n        pass\n\n\nclass TxOrigin(DetectionModule):\n    \"\"\"This module detects whether control flow decisions are made based on the transaction origin.\"\"\"\n\n    name = \"Control flow depends on tx.origin\"\n    swc_id = TX_ORIGIN_USAGE\n    description = \"Check whether control flow decisions are influenced by tx.origin\"\n    entry_point = EntryPoint.CALLBACK\n\n    pre_hooks = [\"JUMPI\"]\n    post_hooks = [\"ORIGIN\"]\n\n    def _execute(self, state: GlobalState) -> List[Issue]:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        return self._analyze_state(state)\n\n    def _analyze_state(self, state: GlobalState) -> List[Issue]:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n\n        issues = []\n\n        if state.get_current_instruction()[\"opcode\"] == \"JUMPI\":\n            # We're in JUMPI prehook\n\n            for annotation in state.mstate.stack[-2].annotations:\n                if isinstance(annotation, TxOriginAnnotation):\n                    constraints = copy(state.world_state.constraints)\n\n                    try:\n                        transaction_sequence = solver.get_transaction_sequence(\n                            state, constraints\n                        )\n                    except UnsatError:\n                        continue\n\n                    description = (\n                        \"The tx.origin environment variable has been found to influence a control flow decision. \"\n                        \"Note that using tx.origin as a security control might cause a situation where a user \"\n                        \"inadvertently authorizes a smart contract to perform an action on their behalf. It is \"\n                        \"recommended to use msg.sender instead.\"\n                    )\n\n                    severity = \"Low\"\n\n                    \"\"\"\n                    Note: We report the location of the JUMPI instruction. Usually this maps to an if or\n                    require statement.\n                    \"\"\"\n\n                    issue = Issue(\n                        contract=state.environment.active_account.contract_name,\n                        function_name=state.environment.active_function_name,\n                        address=state.get_current_instruction()[\"address\"],\n                        swc_id=TX_ORIGIN_USAGE,\n                        bytecode=state.environment.code.bytecode,\n                        title=\"Dependence on tx.origin\",\n                        severity=severity,\n                        description_head=\"Use of tx.origin as a part of authorization control.\",\n                        description_tail=description,\n                        gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),\n                        transaction_sequence=transaction_sequence,\n                    )\n                    state.annotate(\n                        IssueAnnotation(\n                            conditions=[And(*constraints)], issue=issue, detector=self\n                        )\n                    )\n\n                    issues.append(issue)\n\n        else:\n            # In ORIGIN posthook\n\n            state.mstate.stack[-1].annotate(TxOriginAnnotation())\n\n        return issues\n\n\ndetector = TxOrigin()\n"
  },
  {
    "path": "mythril/analysis/module/modules/dependence_on_predictable_vars.py",
    "content": "\"\"\"This module contains the detection code for predictable variable\ndependence.\"\"\"\n\nimport logging\nfrom typing import List, cast\n\nfrom mythril.analysis import solver\nfrom mythril.analysis.issue_annotation import IssueAnnotation\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.module.module_helpers import is_prehook\nfrom mythril.analysis.report import Issue\nfrom mythril.analysis.swc_data import TIMESTAMP_DEPENDENCE, WEAK_RANDOMNESS\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import ULT, And, symbol_factory\n\nlog = logging.getLogger(__name__)\n\npredictable_ops = [\"COINBASE\", \"GASLIMIT\", \"TIMESTAMP\", \"NUMBER\"]\n\n\nclass PredictableValueAnnotation:\n    \"\"\"Symbol annotation used if a variable is initialized from a predictable environment variable.\"\"\"\n\n    def __init__(self, operation: str) -> None:\n        self.operation = operation\n\n\nclass OldBlockNumberUsedAnnotation(StateAnnotation):\n    \"\"\"Symbol annotation used if a variable is initialized from a predictable environment variable.\"\"\"\n\n    def __init__(self) -> None:\n        pass\n\n\nclass PredictableVariables(DetectionModule):\n    \"\"\"This module detects whether control flow decisions are made using predictable\n    parameters.\"\"\"\n\n    name = \"Control flow depends on a predictable environment variable\"\n    swc_id = \"{} {}\".format(TIMESTAMP_DEPENDENCE, WEAK_RANDOMNESS)\n    description = (\n        \"Check whether control flow decisions are influenced by block.coinbase,\"\n        \"block.gaslimit, block.timestamp or block.number.\"\n    )\n    entry_point = EntryPoint.CALLBACK\n    pre_hooks = [\"JUMPI\", \"BLOCKHASH\"]\n    post_hooks = [\"BLOCKHASH\"] + predictable_ops\n\n    def _execute(self, state: GlobalState) -> List[Issue]:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        return self._analyze_state(state)\n\n    def _analyze_state(self, state: GlobalState) -> List[Issue]:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n\n        issues = []\n\n        if is_prehook():\n            opcode = state.get_current_instruction()[\"opcode\"]\n\n            if opcode == \"JUMPI\":\n                # Look for predictable state variables in jump condition\n\n                for annotation in state.mstate.stack[-2].annotations:\n                    if isinstance(annotation, PredictableValueAnnotation):\n                        constraints = state.world_state.constraints\n                        try:\n                            transaction_sequence = solver.get_transaction_sequence(\n                                state, constraints\n                            )\n                        except UnsatError:\n                            continue\n                        description = (\n                            annotation.operation\n                            + \" is used to determine a control flow decision. \"\n                        )\n                        description += (\n                            \"Note that the values of variables like coinbase, gaslimit, block number and timestamp are \"\n                            \"predictable and can be manipulated by a malicious miner. Also keep in mind that \"\n                            \"attackers know hashes of earlier blocks. Don't use any of those environment variables \"\n                            \"as sources of randomness and be aware that use of these variables introduces \"\n                            \"a certain level of trust into miners.\"\n                        )\n\n                        \"\"\"\n                        Usually report low severity except in cases where the hash of a previous block is used to\n                        determine control flow. \n                        \"\"\"\n\n                        severity = \"Low\"\n\n                        swc_id = (\n                            TIMESTAMP_DEPENDENCE\n                            if \"timestamp\" in annotation.operation\n                            else WEAK_RANDOMNESS\n                        )\n\n                        issue = Issue(\n                            contract=state.environment.active_account.contract_name,\n                            function_name=state.environment.active_function_name,\n                            address=state.get_current_instruction()[\"address\"],\n                            swc_id=swc_id,\n                            bytecode=state.environment.code.bytecode,\n                            title=\"Dependence on predictable environment variable\",\n                            severity=severity,\n                            description_head=\"A control flow decision is made based on {}.\".format(\n                                annotation.operation\n                            ),\n                            description_tail=description,\n                            gas_used=(\n                                state.mstate.min_gas_used,\n                                state.mstate.max_gas_used,\n                            ),\n                            transaction_sequence=transaction_sequence,\n                        )\n                        state.annotate(\n                            IssueAnnotation(\n                                conditions=[And(*constraints)],\n                                issue=issue,\n                                detector=self,\n                            )\n                        )\n                        issues.append(issue)\n\n            elif opcode == \"BLOCKHASH\":\n                param = state.mstate.stack[-1]\n\n                constraint = [\n                    ULT(param, state.environment.block_number),\n                    ULT(\n                        state.environment.block_number,\n                        symbol_factory.BitVecVal(2**255, 256),\n                    ),\n                ]\n\n                # Why the second constraint? Because without it Z3 returns a solution where param overflows.\n\n                try:\n                    solver.get_model(\n                        state.world_state.constraints + constraint  # type: ignore\n                    )\n\n                    state.annotate(OldBlockNumberUsedAnnotation())\n\n                except UnsatError:\n                    pass\n\n        else:\n            # we're in post hook\n\n            opcode = state.environment.code.instruction_list[state.mstate.pc - 1][\n                \"opcode\"\n            ]\n\n            if opcode == \"BLOCKHASH\":\n                # if we're in the post hook of a BLOCKHASH op, check if an old block number was used to create it.\n\n                annotations = cast(\n                    List[OldBlockNumberUsedAnnotation],\n                    list(state.get_annotations(OldBlockNumberUsedAnnotation)),\n                )\n\n                if len(annotations):\n                    # We can append any block constraint here\n                    state.mstate.stack[-1].annotate(\n                        PredictableValueAnnotation(\"The block hash of a previous block\")\n                    )\n            else:\n                # Always create an annotation when COINBASE, GASLIMIT, TIMESTAMP or NUMBER is executed.\n\n                state.mstate.stack[-1].annotate(\n                    PredictableValueAnnotation(\n                        \"The block.{} environment variable\".format(opcode.lower())\n                    )\n                )\n\n        return issues\n\n\ndetector = PredictableVariables()\n"
  },
  {
    "path": "mythril/analysis/module/modules/ether_thief.py",
    "content": "\"\"\"This module contains the detection code for unauthorized ether\nwithdrawal.\"\"\"\n\nimport logging\nfrom copy import copy\n\nfrom mythril.analysis import solver\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.potential_issues import (\n    PotentialIssue,\n    get_potential_issues_annotation,\n)\nfrom mythril.analysis.swc_data import UNPROTECTED_ETHER_WITHDRAWAL\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.transaction.symbolic import ACTORS\nfrom mythril.laser.smt import UGT\n\nlog = logging.getLogger(__name__)\n\nDESCRIPTION = \"\"\"\nSearch for cases where Ether can be withdrawn to a user-specified address.\nAn issue is reported if there is a valid end state where the attacker has successfully\nincreased their Ether balance.\n\"\"\"\n\n\nclass EtherThief(DetectionModule):\n    \"\"\"This module search for cases where Ether can be withdrawn to a user-\n    specified address.\"\"\"\n\n    name = \"Any sender can withdraw ETH from the contract account\"\n    swc_id = UNPROTECTED_ETHER_WITHDRAWAL\n    description = DESCRIPTION\n    entry_point = EntryPoint.CALLBACK\n    post_hooks = [\"CALL\", \"STATICCALL\"]\n\n    def reset_module(self):\n        \"\"\"\n        Resets the module by clearing everything\n        :return:\n        \"\"\"\n        super().reset_module()\n\n    def _execute(self, state: GlobalState) -> None:\n        \"\"\"\n        :param state:\n        :return:\n        \"\"\"\n        potential_issues = self._analyze_state(state)\n\n        annotation = get_potential_issues_annotation(state)\n        annotation.potential_issues.extend(potential_issues)\n\n    def _analyze_state(self, state):\n        \"\"\"\n        :param state:\n        :return:\n        \"\"\"\n        state = copy(state)\n        instruction = state.get_current_instruction()\n\n        constraints = copy(state.world_state.constraints)\n\n        constraints += [\n            UGT(\n                state.world_state.balances[ACTORS.attacker],\n                state.world_state.starting_balances[ACTORS.attacker],\n            ),\n            state.environment.sender == ACTORS.attacker,\n            state.current_transaction.caller == state.current_transaction.origin,\n        ]\n\n        try:\n            # Pre-solve so we only add potential issues if the attacker's balance is increased.\n\n            solver.get_model(constraints)\n            potential_issue = PotentialIssue(\n                contract=state.environment.active_account.contract_name,\n                function_name=state.environment.active_function_name,\n                address=instruction[\"address\"]\n                - 1,  # In post hook we use offset of previous instruction\n                swc_id=UNPROTECTED_ETHER_WITHDRAWAL,\n                title=\"Unprotected Ether Withdrawal\",\n                severity=\"High\",\n                bytecode=state.environment.code.bytecode,\n                description_head=\"Any sender can withdraw Ether from the contract account.\",\n                description_tail=\"Arbitrary senders other than the contract creator can profitably extract Ether \"\n                \"from the contract account. Verify the business logic carefully and make sure that appropriate \"\n                \"security controls are in place to prevent unexpected loss of funds.\",\n                detector=self,\n                constraints=constraints,\n            )\n\n            return [potential_issue]\n        except UnsatError:\n            return []\n\n\ndetector = EtherThief()\n"
  },
  {
    "path": "mythril/analysis/module/modules/exceptions.py",
    "content": "\"\"\"This module contains the detection code for reachable exceptions.\"\"\"\n\nimport logging\nfrom typing import List, Optional, cast\n\nfrom mythril.analysis import solver\nfrom mythril.analysis.issue_annotation import IssueAnnotation\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.report import Issue\nfrom mythril.analysis.swc_data import ASSERT_VIOLATION\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum import util\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import And\nfrom mythril.support.support_utils import get_code_hash\n\nlog = logging.getLogger(__name__)\n\n# The function signature of Panic(uint256)\nPANIC_SIGNATURE = [78, 72, 123, 113]\n\n\nclass LastJumpAnnotation(StateAnnotation):\n    \"\"\"State Annotation used if an overflow is both possible and used in the annotated path\"\"\"\n\n    def __init__(self, last_jump: Optional[int] = None) -> None:\n        self.last_jump: int = last_jump\n\n    def __copy__(self):\n        new_annotation = LastJumpAnnotation(self.last_jump)\n        return new_annotation\n\n\nclass Exceptions(DetectionModule):\n    \"\"\"\"\"\"\n\n    name = \"Assertion violation\"\n    swc_id = ASSERT_VIOLATION\n    description = \"Checks whether any exception states are reachable.\"\n    entry_point = EntryPoint.CALLBACK\n    pre_hooks = [\"INVALID\", \"JUMP\", \"REVERT\"]\n\n    def __init__(self):\n        super().__init__()\n        self.auto_cache = False\n\n    def _execute(self, state: GlobalState) -> List[Issue]:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        issues = self._analyze_state(state)\n        for issue in issues:\n            self.cache.add((issue.source_location, issue.bytecode_hash))\n        return issues\n\n    def _analyze_state(self, state) -> List[Issue]:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        opcode = state.get_current_instruction()[\"opcode\"]\n        address = state.get_current_instruction()[\"address\"]\n\n        annotations = cast(\n            List[LastJumpAnnotation],\n            [a for a in state.get_annotations(LastJumpAnnotation)],\n        )\n        if len(annotations) == 0:\n            state.annotate(LastJumpAnnotation())\n            annotations = cast(\n                List[LastJumpAnnotation],\n                [a for a in state.get_annotations(LastJumpAnnotation)],\n            )\n\n        if opcode == \"JUMP\":\n            annotations[0].last_jump = address\n            return []\n\n        if opcode == \"REVERT\" and not is_assertion_failure(state):\n            return []\n\n        cache_address = annotations[0].last_jump\n        if (\n            cache_address,\n            get_code_hash(state.environment.code.bytecode),\n        ) in self.cache:\n            return []\n\n        log.debug(\n            \"ASSERT_FAIL/REVERT in function \" + state.environment.active_function_name\n        )\n\n        try:\n            description_tail = (\n                \"It is possible to trigger an assertion violation. Note that Solidity assert() statements should \"\n                \"only be used to check invariants. Review the transaction trace generated for this issue and \"\n                \"either make sure your program logic is correct, or use require() instead of assert() if your goal \"\n                \"is to constrain user inputs or enforce preconditions. Remember to validate inputs from both callers \"\n                \"(for instance, via passed arguments) and callees (for instance, via return values).\"\n            )\n            transaction_sequence = solver.get_transaction_sequence(\n                state, state.world_state.constraints\n            )\n\n            issue = Issue(\n                contract=state.environment.active_account.contract_name,\n                function_name=state.environment.active_function_name,\n                address=address,\n                swc_id=ASSERT_VIOLATION,\n                title=\"Exception State\",\n                severity=\"Medium\",\n                description_head=\"An assertion violation was triggered.\",\n                description_tail=description_tail,\n                bytecode=state.environment.code.bytecode,\n                transaction_sequence=transaction_sequence,\n                gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),\n                source_location=cache_address,\n            )\n            state.annotate(\n                IssueAnnotation(\n                    conditions=[And(*state.world_state.constraints)],\n                    issue=issue,\n                    detector=self,\n                )\n            )\n\n            return [issue]\n\n        except UnsatError:\n            log.debug(\"no model found\")\n\n        return []\n\n\ndef is_assertion_failure(global_state):\n    state = global_state.mstate\n    offset, length = state.stack[-1], state.stack[-2]\n    try:\n        return_data = state.memory[\n            util.get_concrete_int(offset) : util.get_concrete_int(offset + length)\n        ]\n    except TypeError:\n        return False\n\n    return return_data[:4] == PANIC_SIGNATURE and return_data[-1] == 1\n\n\ndetector = Exceptions()\n"
  },
  {
    "path": "mythril/analysis/module/modules/external_calls.py",
    "content": "\"\"\"This module contains the detection code for potentially insecure low-level\ncalls.\"\"\"\n\nimport logging\nfrom copy import copy\n\nfrom mythril.analysis import solver\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.potential_issues import (\n    PotentialIssue,\n    get_potential_issues_annotation,\n)\nfrom mythril.analysis.swc_data import REENTRANCY\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.natives import PRECOMPILE_COUNT\nfrom mythril.laser.ethereum.state.constraints import Constraints\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.transaction.symbolic import ACTORS\nfrom mythril.laser.smt import UGT, BitVec, Or, symbol_factory\n\nlog = logging.getLogger(__name__)\n\nDESCRIPTION = \"\"\"\n\nSearch for external calls with unrestricted gas to a user-specified address.\n\n\"\"\"\n\n\ndef _is_precompile_call(global_state: GlobalState):\n    to: BitVec = global_state.mstate.stack[-2]\n    constraints: Constraints = copy(global_state.world_state.constraints)\n    constraints += [\n        Or(\n            to < symbol_factory.BitVecVal(1, 256),\n            to > symbol_factory.BitVecVal(PRECOMPILE_COUNT, 256),\n        )\n    ]\n\n    try:\n        solver.get_model(constraints)\n        return False\n    except UnsatError:\n        return True\n\n\nclass ExternalCalls(DetectionModule):\n    \"\"\"This module searches for low level calls (e.g. call.value()) that\n    forward all gas to the callee.\"\"\"\n\n    name = \"External call to another contract\"\n    swc_id = REENTRANCY\n    description = DESCRIPTION\n    entry_point = EntryPoint.CALLBACK\n    pre_hooks = [\"CALL\"]\n\n    def _execute(self, state: GlobalState) -> None:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n\n        potential_issues = self._analyze_state(state)\n\n        annotation = get_potential_issues_annotation(state)\n        annotation.potential_issues.extend(potential_issues)\n\n    def _analyze_state(self, state: GlobalState):\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        if state.environment.active_function_name == \"constructor\":\n            return []\n\n        gas = state.mstate.stack[-1]\n        to = state.mstate.stack[-2]\n\n        address = state.get_current_instruction()[\"address\"]\n\n        try:\n            constraints = Constraints(\n                [UGT(gas, symbol_factory.BitVecVal(2300, 256)), to == ACTORS.attacker]\n            )\n\n            solver.get_transaction_sequence(\n                state, constraints + state.world_state.constraints\n            )\n\n            description_head = \"A call to a user-supplied address is executed.\"\n            description_tail = (\n                \"An external message call to an address specified by the caller is executed. Note that \"\n                \"the callee account might contain arbitrary code and could re-enter any function \"\n                \"within this contract. Reentering the contract in an intermediate state may lead to \"\n                \"unexpected behaviour. Make sure that no state modifications \"\n                \"are executed after this call and/or reentrancy guards are in place.\"\n            )\n\n            issue = PotentialIssue(\n                contract=state.environment.active_account.contract_name,\n                function_name=state.environment.active_function_name,\n                address=address,\n                swc_id=REENTRANCY,\n                title=\"External Call To User-Supplied Address\",\n                bytecode=state.environment.code.bytecode,\n                severity=\"Low\",\n                description_head=description_head,\n                description_tail=description_tail,\n                constraints=constraints,\n                detector=self,\n            )\n\n        except UnsatError:\n            log.debug(\"[EXTERNAL_CALLS] No model found.\")\n            return []\n\n        return [issue]\n\n\ndetector = ExternalCalls()\n"
  },
  {
    "path": "mythril/analysis/module/modules/integer.py",
    "content": "\"\"\"This module contains the detection code for integer overflows and\nunderflows.\"\"\"\n\nimport logging\nfrom copy import copy\nfrom math import ceil, log2\nfrom typing import List, Set, cast\n\nfrom mythril.analysis import solver\nfrom mythril.analysis.issue_annotation import IssueAnnotation\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.report import Issue\nfrom mythril.analysis.swc_data import INTEGER_OVERFLOW_AND_UNDERFLOW\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import (\n    And,\n    BitVec,\n    BVAddNoOverflow,\n    BVMulNoOverflow,\n    BVSubNoUnderflow,\n    Expression,\n    If,\n    Not,\n    symbol_factory,\n)\nfrom mythril.laser.smt import (\n    SMTBool as Bool,\n)\n\nlog = logging.getLogger(__name__)\n\n\nclass OverUnderflowAnnotation:\n    \"\"\"Symbol Annotation used if a BitVector can overflow\"\"\"\n\n    def __init__(\n        self, overflowing_state: GlobalState, operator: str, constraint: Bool\n    ) -> None:\n        self.overflowing_state = overflowing_state\n        self.operator = operator\n        self.constraint = constraint\n\n    def __deepcopy__(self, memodict={}):\n        new_annotation = copy(self)\n        return new_annotation\n\n\nclass OverUnderflowStateAnnotation(StateAnnotation):\n    \"\"\"State Annotation used if an overflow is both possible and used in the annotated path\"\"\"\n\n    def __init__(self) -> None:\n        self.overflowing_state_annotations: Set[OverUnderflowAnnotation] = set()\n\n    def __copy__(self):\n        new_annotation = OverUnderflowStateAnnotation()\n\n        new_annotation.overflowing_state_annotations = copy(\n            self.overflowing_state_annotations\n        )\n\n        return new_annotation\n\n\nclass IntegerArithmetics(DetectionModule):\n    \"\"\"This module searches for integer over- and underflows.\"\"\"\n\n    name = \"Integer overflow or underflow\"\n    swc_id = INTEGER_OVERFLOW_AND_UNDERFLOW\n    description = (\n        \"For every SUB instruction, check if there's a possible state \"\n        \"where op1 > op0. For every ADD, MUL instruction, check if \"\n        \"there's a possible state where op1 + op0 > 2^32 - 1\"\n    )\n    entry_point = EntryPoint.CALLBACK\n    pre_hooks = [\n        \"ADD\",\n        \"MUL\",\n        \"EXP\",\n        \"SUB\",\n        \"SSTORE\",\n        \"JUMPI\",\n        \"STOP\",\n        \"RETURN\",\n        \"CALL\",\n    ]\n\n    def __init__(self) -> None:\n        \"\"\"\n        Cache satisfiability of overflow constraints\n        \"\"\"\n        super().__init__()\n\n        self._ostates_satisfiable: Set[GlobalState] = set()\n        self._ostates_unsatisfiable: Set[GlobalState] = set()\n\n    def reset_module(self):\n        \"\"\"\n        Resets the module\n        :return:\n        \"\"\"\n        super().reset_module()\n        self._ostates_satisfiable = set()\n        self._ostates_unsatisfiable = set()\n\n    def _execute(self, state: GlobalState) -> List[Issue]:\n        \"\"\"Executes analysis module for integer underflow and integer overflow.\n\n        :param state: Statespace to analyse\n        :return: Found issues\n        \"\"\"\n\n        opcode = state.get_current_instruction()[\"opcode\"]\n\n        funcs = {\n            \"ADD\": [self._handle_add],\n            \"SUB\": [self._handle_sub],\n            \"MUL\": [self._handle_mul],\n            \"SSTORE\": [self._handle_sstore],\n            \"JUMPI\": [self._handle_jumpi],\n            \"CALL\": [self._handle_call],\n            \"RETURN\": [self._handle_return, self._handle_transaction_end],\n            \"STOP\": [self._handle_transaction_end],\n            \"EXP\": [self._handle_exp],\n        }\n        results = []\n        for func in funcs[opcode]:\n            result = func(state)\n            if result and len(result) > 0:\n                results += result\n        return results\n\n    def _get_args(self, state):\n        stack = state.mstate.stack\n        op0, op1 = (\n            self._make_bitvec_if_not(stack, -1),\n            self._make_bitvec_if_not(stack, -2),\n        )\n        return op0, op1\n\n    def _handle_add(self, state):\n        op0, op1 = self._get_args(state)\n        c = Not(BVAddNoOverflow(op0, op1, False))\n\n        annotation = OverUnderflowAnnotation(state, \"addition\", c)\n        op0.annotate(annotation)\n\n    def _handle_mul(self, state):\n        op0, op1 = self._get_args(state)\n        c = Not(BVMulNoOverflow(op0, op1, False))\n\n        annotation = OverUnderflowAnnotation(state, \"multiplication\", c)\n        op0.annotate(annotation)\n\n    def _handle_sub(self, state):\n        op0, op1 = self._get_args(state)\n        c = Not(BVSubNoUnderflow(op0, op1, False))\n\n        annotation = OverUnderflowAnnotation(state, \"subtraction\", c)\n        op0.annotate(annotation)\n\n    def _handle_exp(self, state):\n        op0, op1 = self._get_args(state)\n\n        if (op1.symbolic is False and op1.value == 0) or (\n            op0.symbolic is False and op0.value < 2\n        ):\n            return\n        if op0.symbolic and op1.symbolic:\n            constraint = And(\n                op1 > symbol_factory.BitVecVal(256, 256),\n                op0 > symbol_factory.BitVecVal(1, 256),\n            )\n        elif op0.symbolic:\n            constraint = op0 >= symbol_factory.BitVecVal(\n                2 ** ceil(256 / op1.value), 256\n            )\n        else:\n            constraint = op1 >= symbol_factory.BitVecVal(\n                ceil(256 / log2(op0.value)), 256\n            )\n\n        annotation = OverUnderflowAnnotation(state, \"exponentiation\", constraint)\n        op0.annotate(annotation)\n\n    @staticmethod\n    def _make_bitvec_if_not(stack, index):\n        value = stack[index]\n        if isinstance(value, BitVec):\n            return value\n        if isinstance(value, Bool):\n            return If(value, 1, 0)\n        stack[index] = symbol_factory.BitVecVal(value, 256)\n        return stack[index]\n\n    @staticmethod\n    def _get_title(_type):\n        return \"Integer {}\".format(_type)\n\n    @staticmethod\n    def _handle_sstore(state: GlobalState) -> None:\n        stack = state.mstate.stack\n        value = stack[-2]\n\n        if not isinstance(value, Expression):\n            return\n\n        state_annotation = _get_overflowunderflow_state_annotation(state)\n        for annotation in value.annotations:\n            if isinstance(annotation, OverUnderflowAnnotation):\n                state_annotation.overflowing_state_annotations.add(annotation)\n\n    @staticmethod\n    def _handle_jumpi(state):\n        stack = state.mstate.stack\n        value = stack[-2]\n\n        state_annotation = _get_overflowunderflow_state_annotation(state)\n\n        for annotation in value.annotations:\n            if isinstance(annotation, OverUnderflowAnnotation):\n                state_annotation.overflowing_state_annotations.add(annotation)\n\n    @staticmethod\n    def _handle_call(state):\n        stack = state.mstate.stack\n        value = stack[-3]\n\n        state_annotation = _get_overflowunderflow_state_annotation(state)\n\n        for annotation in value.annotations:\n            if isinstance(annotation, OverUnderflowAnnotation):\n                state_annotation.overflowing_state_annotations.add(annotation)\n\n    @staticmethod\n    def _handle_return(state: GlobalState) -> None:\n        \"\"\"\n        Adds all the annotations into the state which correspond to the\n        locations in the memory returned by RETURN opcode.\n        :param state: The Global State\n        \"\"\"\n\n        stack = state.mstate.stack\n        offset, length = stack[-1], stack[-2]\n\n        state_annotation = _get_overflowunderflow_state_annotation(state)\n\n        for element in state.mstate.memory[offset : offset + length]:\n            if not isinstance(element, Expression):\n                continue\n\n            for annotation in element.annotations:\n                if isinstance(annotation, OverUnderflowAnnotation):\n                    state_annotation.overflowing_state_annotations.add(annotation)\n\n    def _handle_transaction_end(self, state: GlobalState) -> List[Issue]:\n        state_annotation = _get_overflowunderflow_state_annotation(state)\n        issues = []\n        for annotation in state_annotation.overflowing_state_annotations:\n            ostate = annotation.overflowing_state\n\n            if ostate in self._ostates_unsatisfiable:\n                continue\n\n            if ostate not in self._ostates_satisfiable:\n                try:\n                    constraints = ostate.world_state.constraints + [\n                        annotation.constraint\n                    ]\n                    solver.get_model(constraints)\n                    self._ostates_satisfiable.add(ostate)\n                except:\n                    self._ostates_unsatisfiable.add(ostate)\n                    continue\n\n            log.debug(\n                \"Checking overflow in {} at transaction end address {}, ostate address {}\".format(\n                    state.get_current_instruction()[\"opcode\"],\n                    state.get_current_instruction()[\"address\"],\n                    ostate.get_current_instruction()[\"address\"],\n                )\n            )\n\n            try:\n                constraints = state.world_state.constraints + [annotation.constraint]\n                transaction_sequence = solver.get_transaction_sequence(\n                    state, constraints\n                )\n            except UnsatError:\n                continue\n\n            description_head = \"The arithmetic operator can {}.\".format(\n                \"underflow\" if annotation.operator == \"subtraction\" else \"overflow\"\n            )\n            description_tail = \"It is possible to cause an integer overflow or underflow in the arithmetic operation. \"\n            \"Prevent this by constraining inputs using the require() statement or use the OpenZeppelin \"\n            \"SafeMath library for integer arithmetic operations. \"\n            \"Refer to the transaction trace generated for this issue to reproduce the issue.\"\n\n            issue = Issue(\n                contract=ostate.environment.active_account.contract_name,\n                function_name=ostate.environment.active_function_name,\n                address=ostate.get_current_instruction()[\"address\"],\n                swc_id=INTEGER_OVERFLOW_AND_UNDERFLOW,\n                bytecode=ostate.environment.code.bytecode,\n                title=\"Integer Arithmetic Bugs\",\n                severity=\"High\",\n                description_head=description_head,\n                description_tail=description_tail,\n                gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),\n                transaction_sequence=transaction_sequence,\n            )\n            state.annotate(\n                IssueAnnotation(\n                    issue=issue, detector=self, conditions=[And(*constraints)]\n                )\n            )\n            issues.append(issue)\n        return issues\n\n\ndetector = IntegerArithmetics()\n\n\ndef _get_address_from_state(state):\n    return state.get_current_instruction()[\"address\"]\n\n\ndef _get_overflowunderflow_state_annotation(\n    state: GlobalState,\n) -> OverUnderflowStateAnnotation:\n    state_annotations = cast(\n        List[OverUnderflowStateAnnotation],\n        list(state.get_annotations(OverUnderflowStateAnnotation)),\n    )\n\n    if len(state_annotations) == 0:\n        state_annotation = OverUnderflowStateAnnotation()\n        state.annotate(state_annotation)\n        return state_annotation\n    else:\n        return state_annotations[0]\n"
  },
  {
    "path": "mythril/analysis/module/modules/multiple_sends.py",
    "content": "\"\"\"This module contains the detection code to find multiple sends occurring in\na single transaction.\"\"\"\n\nimport logging\nfrom copy import copy\nfrom typing import List, cast\n\nfrom mythril.analysis.issue_annotation import IssueAnnotation\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.report import Issue\nfrom mythril.analysis.solver import UnsatError, get_transaction_sequence\nfrom mythril.analysis.swc_data import MULTIPLE_SENDS\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import And\n\nlog = logging.getLogger(__name__)\n\n\nclass MultipleSendsAnnotation(StateAnnotation):\n    def __init__(self) -> None:\n        self.call_offsets: List[int] = []\n\n    def __copy__(self):\n        result = MultipleSendsAnnotation()\n        result.call_offsets = copy(self.call_offsets)\n        return result\n\n\nclass MultipleSends(DetectionModule):\n    \"\"\"This module checks for multiple sends in a single transaction.\"\"\"\n\n    name = \"Multiple external calls in the same transaction\"\n    swc_id = MULTIPLE_SENDS\n    description = \"Check for multiple sends in a single transaction\"\n    entry_point = EntryPoint.CALLBACK\n    pre_hooks = [\"CALL\", \"DELEGATECALL\", \"STATICCALL\", \"CALLCODE\", \"RETURN\", \"STOP\"]\n\n    def _execute(self, state: GlobalState) -> None:\n        return self._analyze_state(state)\n\n    def _analyze_state(self, state: GlobalState):\n        \"\"\"\n        :param state: the current state\n        :return: returns the issues for that corresponding state\n        \"\"\"\n        instruction = state.get_current_instruction()\n\n        annotations = cast(\n            List[MultipleSendsAnnotation],\n            list(state.get_annotations(MultipleSendsAnnotation)),\n        )\n        if len(annotations) == 0:\n            state.annotate(MultipleSendsAnnotation())\n            annotations = cast(\n                List[MultipleSendsAnnotation],\n                list(state.get_annotations(MultipleSendsAnnotation)),\n            )\n\n        call_offsets = annotations[0].call_offsets\n\n        if instruction[\"opcode\"] in [\"CALL\", \"DELEGATECALL\", \"STATICCALL\", \"CALLCODE\"]:\n            call_offsets.append(state.get_current_instruction()[\"address\"])\n\n        else:  # RETURN or STOP\n            for offset in call_offsets[1:]:\n                try:\n                    transaction_sequence = get_transaction_sequence(\n                        state, state.world_state.constraints\n                    )\n                except UnsatError:\n                    continue\n                description_tail = (\n                    \"This call is executed following another call within the same transaction. It is possible \"\n                    \"that the call never gets executed if a prior call fails permanently. This might be caused \"\n                    \"intentionally by a malicious callee. If possible, refactor the code such that each transaction \"\n                    \"only executes one external call or \"\n                    \"make sure that all callees can be trusted (i.e. they’re part of your own codebase).\"\n                )\n\n                issue = Issue(\n                    contract=state.environment.active_account.contract_name,\n                    function_name=state.environment.active_function_name,\n                    address=offset,\n                    swc_id=MULTIPLE_SENDS,\n                    bytecode=state.environment.code.bytecode,\n                    title=\"Multiple Calls in a Single Transaction\",\n                    severity=\"Low\",\n                    description_head=\"Multiple calls are executed in the same transaction.\",\n                    description_tail=description_tail,\n                    gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),\n                    transaction_sequence=transaction_sequence,\n                )\n                state.annotate(\n                    IssueAnnotation(\n                        conditions=[And(*state.world_state.constraints)],\n                        issue=issue,\n                        detector=self,\n                    )\n                )\n                return [issue]\n\n        return []\n\n\ndetector = MultipleSends()\n"
  },
  {
    "path": "mythril/analysis/module/modules/requirements_violation.py",
    "content": "\"\"\"This module contains the detection code for requirement violations in a call\"\"\"\n\nimport logging\nfrom typing import List\n\nfrom mythril.analysis import solver\nfrom mythril.analysis.issue_annotation import IssueAnnotation\nfrom mythril.analysis.module.base import DetectionModule\nfrom mythril.analysis.report import Issue\nfrom mythril.analysis.swc_data import REQUIREMENT_VIOLATION\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import And\n\nlog = logging.getLogger(__name__)\n\n\nclass RequirementsViolation(DetectionModule):\n    \"\"\"This module detects transaction order dependence\"\"\"\n\n    name = \"Requirement Violation\"\n    swc_id = REQUIREMENT_VIOLATION\n    description = \"Checks whether any requirements violate in a call.\"\n    entrypoint = \"callback\"\n    pre_hooks = [\"REVERT\"]\n    plugin_default_enabled = True\n\n    def _execute(self, state: GlobalState) -> List[Issue]:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        issues = self._analyze_state(state)\n        for issue in issues:\n            self.cache.add((issue.source_location, issue.bytecode_hash))\n        return issues\n\n    def _analyze_state(self, state) -> List[Issue]:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n\n        if len(state.transaction_stack) < 2:\n            return []\n\n        try:\n            address = state.get_current_instruction()[\"address\"]\n            description_head = \"A requirement was violated in a nested call and the call was reverted as a result.\"\n            description_tail = \"Make sure valid inputs are provided to the nested call (for instance, via passed arguments).\"\n            transaction_sequence = solver.get_transaction_sequence(\n                state, state.world_state.constraints\n            )\n            issue = Issue(\n                contract=state.environment.active_account.contract_name,\n                function_name=state.environment.active_function_name,\n                address=address,\n                swc_id=REQUIREMENT_VIOLATION,\n                title=\"requirement violation\",\n                severity=\"Medium\",\n                description_head=description_head,\n                description_tail=description_tail,\n                bytecode=state.environment.code.bytecode,\n                transaction_sequence=transaction_sequence,\n                gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),\n            )\n            state.annotate(\n                IssueAnnotation(\n                    conditions=[And(*state.world_state.constraints)],\n                    issue=issue,\n                    detector=self,\n                )\n            )\n\n            return [issue]\n\n        except UnsatError:\n            log.debug(\"no model found\")\n\n        return []\n\n\ndetector = RequirementsViolation()\n"
  },
  {
    "path": "mythril/analysis/module/modules/state_change_external_calls.py",
    "content": "import logging\nfrom copy import copy\nfrom typing import List, Optional, cast\n\nfrom mythril.analysis import solver\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.potential_issues import (\n    PotentialIssue,\n    get_potential_issues_annotation,\n)\nfrom mythril.analysis.swc_data import REENTRANCY\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.constraints import Constraints\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import UGT, BitVec, Or, symbol_factory\n\nlog = logging.getLogger(__name__)\n\nDESCRIPTION = \"\"\"\n\nCheck whether the account state is accesses after the execution of an external call\n\"\"\"\n\nCALL_LIST = [\"CALL\", \"DELEGATECALL\", \"CALLCODE\"]\nSTATE_READ_WRITE_LIST = [\"SSTORE\", \"SLOAD\", \"CREATE\", \"CREATE2\"]\n\n\nclass StateChangeCallsAnnotation(StateAnnotation):\n    def __init__(self, call_state: GlobalState, user_defined_address: bool) -> None:\n        self.call_state = call_state\n        self.state_change_states: List[GlobalState] = []\n        self.user_defined_address = user_defined_address\n\n    def __copy__(self):\n        new_annotation = StateChangeCallsAnnotation(\n            self.call_state, self.user_defined_address\n        )\n        new_annotation.state_change_states = self.state_change_states[:]\n        return new_annotation\n\n    def get_issue(\n        self, global_state: GlobalState, detector: DetectionModule\n    ) -> Optional[PotentialIssue]:\n        if not self.state_change_states:\n            return None\n        constraints = Constraints()\n        gas = self.call_state.mstate.stack[-1]\n        to = self.call_state.mstate.stack[-2]\n        constraints += [\n            UGT(gas, symbol_factory.BitVecVal(2300, 256)),\n            Or(\n                to > symbol_factory.BitVecVal(16, 256),\n                to == symbol_factory.BitVecVal(0, 256),\n            ),\n        ]\n        if self.user_defined_address:\n            constraints += [to == 0xDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF]\n\n        try:\n            solver.get_transaction_sequence(\n                global_state, constraints + global_state.world_state.constraints\n            )\n        except UnsatError:\n            return None\n\n        severity = \"Medium\" if self.user_defined_address else \"Low\"\n        address = global_state.get_current_instruction()[\"address\"]\n        logging.debug(\n            \"[EXTERNAL_CALLS] Detected state changes at addresses: {}\".format(address)\n        )\n        read_or_write = \"Write to\"\n        if global_state.get_current_instruction()[\"opcode\"] == \"SLOAD\":\n            read_or_write = \"Read of\"\n        address_type = \"user defined\" if self.user_defined_address else \"fixed\"\n        description_head = \"{} persistent state following external call\".format(\n            read_or_write\n        )\n        description_tail = (\n            \"The contract account state is accessed after an external call to a {} address. \"\n            \"To prevent reentrancy issues, consider accessing the state only before the call, especially if the callee is untrusted. \"\n            \"Alternatively, a reentrancy lock can be used to prevent \"\n            \"untrusted callees from re-entering the contract in an intermediate state.\".format(\n                address_type\n            )\n        )\n\n        return PotentialIssue(\n            contract=global_state.environment.active_account.contract_name,\n            function_name=global_state.environment.active_function_name,\n            address=address,\n            title=\"State access after external call\",\n            severity=severity,\n            description_head=description_head,\n            description_tail=description_tail,\n            swc_id=REENTRANCY,\n            bytecode=global_state.environment.code.bytecode,\n            constraints=constraints,\n            detector=detector,\n        )\n\n\nclass StateChangeAfterCall(DetectionModule):\n    \"\"\"This module searches for state change after low level calls (e.g. call.value()) that\n    forward gas to the callee.\"\"\"\n\n    name = \"State change after an external call\"\n    swc_id = REENTRANCY\n    description = DESCRIPTION\n    entry_point = EntryPoint.CALLBACK\n    pre_hooks = CALL_LIST + STATE_READ_WRITE_LIST\n\n    def _execute(self, state: GlobalState) -> None:\n        issues = self._analyze_state(state)\n\n        annotation = get_potential_issues_annotation(state)\n        annotation.potential_issues.extend(issues)\n\n    @staticmethod\n    def _add_external_call(global_state: GlobalState) -> None:\n        gas = global_state.mstate.stack[-1]\n        to = global_state.mstate.stack[-2]\n        try:\n            constraints = copy(global_state.world_state.constraints)\n            solver.get_model(\n                constraints\n                + [\n                    UGT(gas, symbol_factory.BitVecVal(2300, 256)),\n                    Or(\n                        to > symbol_factory.BitVecVal(16, 256),\n                        to == symbol_factory.BitVecVal(0, 256),\n                    ),\n                ]\n            )\n\n            # Check whether we can also set the callee address\n            try:\n                constraints += [to == 0xDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF]\n                solver.get_model(constraints)\n\n                global_state.annotate(StateChangeCallsAnnotation(global_state, True))\n            except UnsatError:\n                global_state.annotate(StateChangeCallsAnnotation(global_state, False))\n        except UnsatError:\n            pass\n\n    def _analyze_state(self, global_state: GlobalState) -> List[PotentialIssue]:\n        if global_state.environment.active_function_name == \"constructor\":\n            return []\n\n        annotations = cast(\n            List[StateChangeCallsAnnotation],\n            list(global_state.get_annotations(StateChangeCallsAnnotation)),\n        )\n        op_code = global_state.get_current_instruction()[\"opcode\"]\n\n        if len(annotations) == 0 and op_code in STATE_READ_WRITE_LIST:\n            return []\n\n        if op_code in STATE_READ_WRITE_LIST:\n            for annotation in annotations:\n                annotation.state_change_states.append(global_state)\n\n        # Record state changes following from a transfer of ether\n        if op_code in CALL_LIST:\n            value: BitVec = global_state.mstate.stack[-3]\n            if StateChangeAfterCall._balance_change(value, global_state):\n                for annotation in annotations:\n                    annotation.state_change_states.append(global_state)\n\n        # Record external calls\n        if op_code in CALL_LIST:\n            StateChangeAfterCall._add_external_call(global_state)\n\n        # Check for vulnerabilities\n        vulnerabilities = []\n        for annotation in annotations:\n            if not annotation.state_change_states:\n                continue\n            issue = annotation.get_issue(global_state, self)\n            if issue:\n                vulnerabilities.append(issue)\n        return vulnerabilities\n\n    @staticmethod\n    def _balance_change(value: BitVec, global_state: GlobalState) -> bool:\n        if not value.symbolic:\n            assert value.value is not None\n            return value.value > 0\n\n        else:\n            constraints = copy(global_state.world_state.constraints)\n\n            try:\n                solver.get_model(\n                    constraints + [value > symbol_factory.BitVecVal(0, 256)]\n                )\n                return True\n            except UnsatError:\n                return False\n\n\ndetector = StateChangeAfterCall()\n"
  },
  {
    "path": "mythril/analysis/module/modules/suicide.py",
    "content": "import logging\n\nfrom mythril.analysis import solver\nfrom mythril.analysis.issue_annotation import IssueAnnotation\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.report import Issue\nfrom mythril.analysis.swc_data import UNPROTECTED_SELFDESTRUCT\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.transaction.symbolic import ACTORS\nfrom mythril.laser.ethereum.transaction.transaction_models import (\n    ContractCreationTransaction,\n)\nfrom mythril.laser.smt.bool import And\n\nlog = logging.getLogger(__name__)\n\nDESCRIPTION = \"\"\"\nCheck if the contact can be 'accidentally' killed by anyone.\nFor kill-able contracts, also check whether it is possible to direct the contract balance to the attacker.\n\"\"\"\n\n\nclass AccidentallyKillable(DetectionModule):\n    \"\"\"This module checks if the contact can be 'accidentally' killed by\n    anyone.\"\"\"\n\n    name = \"Contract can be accidentally killed by anyone\"\n    swc_id = UNPROTECTED_SELFDESTRUCT\n    description = DESCRIPTION\n    entry_point = EntryPoint.CALLBACK\n    pre_hooks = [\"SELFDESTRUCT\"]\n\n    def __init__(self):\n        super().__init__()\n        self._cache_address = {}\n\n    def reset_module(self):\n        \"\"\"\n        Resets the module\n        :return:\n        \"\"\"\n        super().reset_module()\n\n    def _execute(self, state: GlobalState) -> None:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        return self._analyze_state(state)\n\n    def _analyze_state(self, state):\n        log.info(\"Suicide module: Analyzing suicide instruction\")\n        instruction = state.get_current_instruction()\n\n        to = state.mstate.stack[-1]\n\n        log.debug(\"SELFDESTRUCT in function %s\", state.environment.active_function_name)\n\n        description_head = \"Any sender can cause the contract to self-destruct.\"\n\n        attacker_constraints = []\n\n        for tx in state.world_state.transaction_sequence:\n            if not isinstance(tx, ContractCreationTransaction):\n                attacker_constraints.append(\n                    And(tx.caller == ACTORS.attacker, tx.caller == tx.origin)\n                )\n        try:\n            try:\n                constraints = (\n                    state.world_state.constraints\n                    + [to == ACTORS.attacker]\n                    + attacker_constraints\n                )\n                transaction_sequence = solver.get_transaction_sequence(\n                    state, constraints\n                )\n\n                description_tail = (\n                    \"Any sender can trigger execution of the SELFDESTRUCT instruction to destroy this \"\n                    \"contract account and withdraw its balance to an arbitrary address. Review the transaction trace \"\n                    \"generated for this issue and make sure that appropriate security controls are in place to prevent \"\n                    \"unrestricted access.\"\n                )\n\n            except UnsatError:\n                constraints = state.world_state.constraints + attacker_constraints\n                transaction_sequence = solver.get_transaction_sequence(\n                    state, constraints\n                )\n                description_tail = (\n                    \"Any sender can trigger execution of the SELFDESTRUCT instruction to destroy this \"\n                    \"contract account. Review the transaction trace generated for this issue and make sure that \"\n                    \"appropriate security controls are in place to prevent unrestricted access.\"\n                )\n\n            issue = Issue(\n                contract=state.environment.active_account.contract_name,\n                function_name=state.environment.active_function_name,\n                address=instruction[\"address\"],\n                swc_id=UNPROTECTED_SELFDESTRUCT,\n                bytecode=state.environment.code.bytecode,\n                title=\"Unprotected Selfdestruct\",\n                severity=\"High\",\n                description_head=description_head,\n                description_tail=description_tail,\n                transaction_sequence=transaction_sequence,\n                gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),\n            )\n            state.annotate(\n                IssueAnnotation(\n                    conditions=[And(*constraints)], issue=issue, detector=self\n                )\n            )\n\n            return [issue]\n        except UnsatError:\n            log.debug(\"No model found\")\n\n        return []\n\n\ndetector = AccidentallyKillable()\n"
  },
  {
    "path": "mythril/analysis/module/modules/transaction_order_dependence.py",
    "content": "\"\"\"This module contains the detection code for transaction order dependence.\"\"\"\n\nimport logging\n\nfrom mythril.analysis import solver\nfrom mythril.analysis.module.base import DetectionModule\nfrom mythril.analysis.potential_issues import (\n    PotentialIssue,\n    get_potential_issues_annotation,\n)\nfrom mythril.analysis.swc_data import TX_ORDER_DEPENDENCE\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.transaction.symbolic import ACTORS\nfrom mythril.laser.smt import Or\nfrom mythril.laser.smt import SMTBool as Bool\n\nlog = logging.getLogger(__name__)\n\nDESCRIPTION = \"\"\"\n\nSearch for calls whose value depends on balance or storage.\n\n\"\"\"\n\n\nclass BalanceAnnotation:\n    def __init__(self, caller):\n        self.caller = caller\n\n\nclass StorageAnnotation:\n    def __init__(self, caller):\n        self.caller = caller\n\n\nclass TransactionOrderDependence(DetectionModule):\n    \"\"\"This module detects transaction order dependence.\"\"\"\n\n    name = \"Transaction Order Dependence\"\n    swc_id = TX_ORDER_DEPENDENCE\n    description = DESCRIPTION\n    entrypoint = \"callback\"\n    pre_hooks = [\"CALL\"]\n    post_hooks = [\"BALANCE\", \"SLOAD\"]\n    plugin_default_enabled = True\n\n    def _execute(self, state: GlobalState) -> None:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        potential_issues = self._analyze_state(state)\n\n        annotation = get_potential_issues_annotation(state)\n        annotation.potential_issues.extend(potential_issues)\n\n    @staticmethod\n    def annotate_balance_storage_vals(state, opcode):\n        val = state.mstate.stack[-1]\n        if opcode == \"BALANCE\":\n            annotation = BalanceAnnotation\n        else:\n            annotation = StorageAnnotation\n        if len(val.get_annotations(annotation)) == 0:\n            state.mstate.stack[-1].annotate(annotation(state.environment.sender))\n        return []\n\n    def _analyze_state(self, state: GlobalState):\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        opcode = state.get_current_instruction()[\"opcode\"]\n        if opcode != \"CALL\":\n            opcode = state.environment.code.instruction_list[state.mstate.pc - 1][\n                \"opcode\"\n            ]\n        if opcode in (\"BALANCE\", \"SLOAD\"):\n            self.annotate_balance_storage_vals(state, opcode)\n            return []\n\n        value = state.mstate.stack[-3]\n        if (\n            len(value.get_annotations(StorageAnnotation))\n            + len(value.get_annotations(BalanceAnnotation))\n            == 0\n        ):\n            return []\n        callers = []\n\n        storage_annotations = value.get_annotations(StorageAnnotation)\n        if len(storage_annotations) == 1:\n            callers.append(storage_annotations[0].caller)\n        balance_annotations = value.get_annotations(BalanceAnnotation)\n        if len(balance_annotations) == 1:\n            callers.append(balance_annotations[0].caller)\n\n        address = state.get_current_instruction()[\"address\"]\n        call_constraint = Bool(False)\n        for caller in callers:\n            call_constraint = Or(call_constraint, ACTORS.attacker == caller)\n\n        try:\n            constraints = state.world_state.constraints + [call_constraint]\n\n            solver.get_transaction_sequence(state, constraints)\n\n            description_head = (\n                \"The value of the call is dependent on balance or storage write\"\n            )\n            description_tail = (\n                \"This can lead to race conditions. An attacker may be able to run a transaction after our transaction \"\n                \"which can change the value of the call\"\n            )\n\n            issue = PotentialIssue(\n                contract=state.environment.active_account.contract_name,\n                function_name=state.environment.active_function_name,\n                address=address,\n                swc_id=TX_ORDER_DEPENDENCE,\n                title=\"Transaction Order Dependence\",\n                bytecode=state.environment.code.bytecode,\n                severity=\"Medium\",\n                description_head=description_head,\n                description_tail=description_tail,\n                constraints=constraints,\n                detector=self,\n            )\n\n        except UnsatError:\n            log.debug(\"[Transaction Order Dependence] No model found.\")\n            return []\n\n        return [issue]\n\n\ndetector = TransactionOrderDependence()\n"
  },
  {
    "path": "mythril/analysis/module/modules/unchecked_retval.py",
    "content": "\"\"\"This module contains detection code to find occurrences of calls whose\nreturn value remains unchecked.\"\"\"\n\nimport logging\nfrom copy import copy\nfrom typing import List, cast\n\nfrom typing_extensions import TypedDict\n\nfrom mythril.analysis import solver\nfrom mythril.analysis.issue_annotation import IssueAnnotation\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.report import Issue\nfrom mythril.analysis.swc_data import UNCHECKED_RET_VAL\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import And\nfrom mythril.laser.smt.bitvec import BitVec\n\nlog = logging.getLogger(__name__)\n\n\nclass RetVal(TypedDict):\n    address: int\n    retval: BitVec\n\n\nclass UncheckedRetvalAnnotation(StateAnnotation):\n    def __init__(self) -> None:\n        self.retvals: List[RetVal] = []\n\n    def __copy__(self):\n        result = UncheckedRetvalAnnotation()\n        result.retvals = copy(self.retvals)\n        return result\n\n\nclass UncheckedRetval(DetectionModule):\n    \"\"\"A detection module to test whether CALL return value is checked.\"\"\"\n\n    name = \"Return value of an external call is not checked\"\n    swc_id = UNCHECKED_RET_VAL\n    description = (\n        \"Test whether CALL return value is checked. \"\n        \"For direct calls, the Solidity compiler auto-generates this check. E.g.:\\n\"\n        \"    Alice c = Alice(address);\\n\"\n        \"    c.ping(42);\\n\"\n        \"Here the CALL will be followed by IZSERO(retval), if retval = ZERO then state is reverted. \"\n        \"For low-level-calls this check is omitted. E.g.:\\n\"\n        '    c.call.value(0)(bytes4(sha3(\"ping(uint256)\")),1);'\n    )\n    entry_point = EntryPoint.CALLBACK\n    pre_hooks = [\"STOP\", \"RETURN\"]\n    post_hooks = [\"CALL\", \"DELEGATECALL\", \"STATICCALL\", \"CALLCODE\"]\n\n    def _execute(self, state: GlobalState) -> List[Issue]:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        return self._analyze_state(state)\n\n    def _analyze_state(self, state: GlobalState) -> list:\n        instruction = state.get_current_instruction()\n\n        annotations = cast(\n            List[UncheckedRetvalAnnotation],\n            [a for a in state.get_annotations(UncheckedRetvalAnnotation)],\n        )\n        if len(annotations) == 0:\n            state.annotate(UncheckedRetvalAnnotation())\n            annotations = cast(\n                List[UncheckedRetvalAnnotation],\n                [a for a in state.get_annotations(UncheckedRetvalAnnotation)],\n            )\n\n        retvals = annotations[0].retvals\n\n        if instruction[\"opcode\"] in (\"STOP\", \"RETURN\"):\n            issues = []\n            for retval in retvals:\n                try:\n                    \"\"\"\n                    To check whether retval is unconstrained we are checking it against retval = 0 and retval = 1\n                    \"\"\"\n                    solver.get_transaction_sequence(\n                        state, state.world_state.constraints + [retval[\"retval\"] == 1]\n                    )\n                    transaction_sequence = solver.get_transaction_sequence(\n                        state, state.world_state.constraints + [retval[\"retval\"] == 0]\n                    )\n                except UnsatError:\n                    continue\n\n                description_tail = (\n                    \"External calls return a boolean value. If the callee halts with an exception, 'false' is \"\n                    \"returned and execution continues in the caller. \"\n                    \"The caller should check whether an exception happened and react accordingly to avoid unexpected behavior. \"\n                    \"For example it is often desirable to wrap external calls in require() so the transaction is reverted if the call fails.\"\n                )\n\n                issue = Issue(\n                    contract=state.environment.active_account.contract_name,\n                    function_name=state.environment.active_function_name,\n                    address=retval[\"address\"],\n                    bytecode=state.environment.code.bytecode,\n                    title=\"Unchecked return value from external call.\",\n                    swc_id=UNCHECKED_RET_VAL,\n                    severity=\"Medium\",\n                    description_head=\"The return value of a message call is not checked.\",\n                    description_tail=description_tail,\n                    gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),\n                    transaction_sequence=transaction_sequence,\n                )\n                conditions = [\n                    And(*(state.world_state.constraints + [retval[\"retval\"] == 1])),\n                    And(*(state.world_state.constraints + [retval[\"retval\"] == 0])),\n                ]\n\n                state.annotate(\n                    IssueAnnotation(conditions=conditions, issue=issue, detector=self)\n                )\n\n                issues.append(issue)\n\n            return issues\n        else:\n            log.debug(\"End of call, extracting retval\")\n\n            if state.environment.code.instruction_list[state.mstate.pc - 1][\n                \"opcode\"\n            ] not in [\"CALL\", \"DELEGATECALL\", \"STATICCALL\", \"CALLCODE\"]:\n                # Return is pointless with OOG. The pc does not get updated in such cases\n                return []\n\n            return_value = state.mstate.stack[-1]\n            retvals.append(\n                {\"address\": state.instruction[\"address\"] - 1, \"retval\": return_value}\n            )\n\n        return []\n\n\ndetector = UncheckedRetval()\n"
  },
  {
    "path": "mythril/analysis/module/modules/unexpected_ether.py",
    "content": "\"\"\"This module contains the detection code for unexpected ether balance.\"\"\"\n\nimport logging\n\nfrom mythril.analysis.issue_annotation import IssueAnnotation\nfrom mythril.analysis.module.base import DetectionModule\nfrom mythril.analysis.module.module_helpers import is_prehook\nfrom mythril.analysis.report import Issue\nfrom mythril.analysis.solver import UnsatError, get_transaction_sequence\nfrom mythril.analysis.swc_data import UNEXPECTED_ETHER_BALANCE\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import And, BitVec\n\nlog = logging.getLogger(__name__)\n\nDESCRIPTION = \"\"\"\nCheck for strict equality checks with contract balance\n\"\"\"\n\n\nclass EtherBalanceCheckAnnotation(StateAnnotation):\n    \"\"\"State Annotation used if an overflow is both possible and used in the annotated path\"\"\"\n\n    def __init__(self, balance: BitVec) -> None:\n        self.balance = balance\n\n\nclass BalanceConditionAnnotation:\n    \"\"\"\"\"\"\n\n    def __init__(self, address=None) -> None:\n        self.address = address\n\n\nclass UnexpectedEther(DetectionModule):\n    \"\"\"This module checks for strict equality checks with contract balance.\"\"\"\n\n    author = \"MythX Team\"\n    plugin_license = \"All rights reserved - ConsenSys\"\n    plugin_type = \"Detection Module\"\n    plugin_description = DESCRIPTION\n    plugin_default_enabled = True\n\n    name = \"Unexpected Ether Balance\"\n    swc_id = \"132\"\n    description = DESCRIPTION\n    pre_hooks = [\"INVALID\", \"EQ\", \"RETURN\", \"STOP\"]\n    post_hooks = [\"BALANCE\"]\n\n    def _execute(self, state: GlobalState) -> None:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n\n        return self._analyze_state(state)\n\n    def _analyze_state(self, state):\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        node = state.node\n        instruction = state.get_current_instruction()\n        if is_prehook() is False:\n            balance = state.mstate.stack[-1]\n            annotations = state.get_annotations(EtherBalanceCheckAnnotation)\n            for annotation in annotations:\n                if annotation.balance == balance:\n                    return []\n\n            state.annotate(EtherBalanceCheckAnnotation(balance))\n            return []\n\n        if instruction[\"opcode\"] == \"EQ\":\n            op1, op2 = state.mstate.stack[-2:]\n            annotations = list(state.get_annotations(EtherBalanceCheckAnnotation))\n            op = None\n            for annotation in annotations:\n                if hash(annotation.balance) != hash(op1) and hash(\n                    annotation.balance\n                ) != hash(op2):\n                    continue\n                if hash(annotation.balance) == hash(op1):\n                    op = op1\n                else:\n                    op = op2\n                break\n            if op is None:\n                return []\n            op.annotate(\n                BalanceConditionAnnotation(\n                    address=state.get_current_instruction()[\"address\"]\n                )\n            )\n            log.debug(\n                \"Equality check for contract balance in function \" + node.function_name\n            )\n            return []\n\n        for constraint in state.world_state.constraints:\n            for annotation in constraint.get_annotations(BalanceConditionAnnotation):\n                if annotation.address in self.cache:\n                    continue\n                try:\n                    transaction_sequence = get_transaction_sequence(\n                        state, state.world_state.constraints\n                    )\n                except UnsatError:\n                    continue\n                log.debug(\"Detected a strict equality check\")\n                title = \"Strict Ether balance check\"\n                description_head = \"Use of strict ether balance checking\"\n                description_tail = \"Ether can be forcefully sent to this contract, This may make the contract unusable.\"\n\n                issue = Issue(\n                    contract=state.environment.active_account.contract_name,\n                    function_name=state.environment.active_function_name,\n                    address=annotation.address,\n                    title=title,\n                    bytecode=state.environment.code.bytecode,\n                    swc_id=UNEXPECTED_ETHER_BALANCE,\n                    severity=\"Low\",\n                    description_head=description_head,\n                    description_tail=description_tail,\n                    transaction_sequence=transaction_sequence,\n                )\n                state.annotate(\n                    IssueAnnotation(\n                        conditions=[And(*state.world_state.constraints)],\n                        issue=issue,\n                        detector=self,\n                    )\n                )\n\n                return [issue]\n        return []\n\n\ndetector = UnexpectedEther()\n"
  },
  {
    "path": "mythril/analysis/module/modules/user_assertions.py",
    "content": "\"\"\"This module contains the detection code for potentially insecure low-level\ncalls.\"\"\"\n\nimport logging\n\nimport eth_abi\n\nfrom mythril.analysis import solver\nfrom mythril.analysis.issue_annotation import IssueAnnotation\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.potential_issues import Issue\nfrom mythril.analysis.swc_data import ASSERT_VIOLATION\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import And, Extract\n\nlog = logging.getLogger(__name__)\n\nDESCRIPTION = \"\"\"\n\nSearch for reachable user-supplied exceptions.\nReport a warning if an log message is emitted: 'emit AssertionFailed(string)'\n\n\"\"\"\n\nassertion_failed_hash = (\n    0xB42604CB105A16C8F6DB8A41E6B00C0C1B4826465E8BC504B3EB3E88B3E6A4A0\n)\n\nmstore_pattern = \"0xcafecafecafecafecafecafecafecafecafecafecafecafecafecafecafe\"\n\n\nclass UserAssertions(DetectionModule):\n    \"\"\"This module searches for user supplied exceptions: emit AssertionFailed(\"Error\").\"\"\"\n\n    name = \"A user-defined assertion has been triggered\"\n    swc_id = ASSERT_VIOLATION\n    description = DESCRIPTION\n    entry_point = EntryPoint.CALLBACK\n    pre_hooks = [\"LOG1\", \"MSTORE\"]\n\n    def _execute(self, state: GlobalState) -> None:\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n\n        return self._analyze_state(state)\n\n    def _analyze_state(self, state: GlobalState):\n        \"\"\"\n\n        :param state:\n        :return:\n        \"\"\"\n        opcode = state.get_current_instruction()[\"opcode\"]\n        message = None\n        if opcode == \"MSTORE\":\n            value = state.mstate.stack[-2]\n            if value.symbolic:\n                return []\n            if mstore_pattern not in hex(value.value)[:126]:\n                return []\n            message = \"Failed property id {}\".format(Extract(15, 0, value).value)\n\n        else:\n            topic, size, mem_start = state.mstate.stack[-3:]\n\n            if topic.symbolic or topic.value != assertion_failed_hash:\n                return []\n            if not mem_start.symbolic and not size.symbolic:\n                try:\n                    message = eth_abi.decode_single(\n                        \"string\",\n                        bytes(\n                            state.mstate.memory[\n                                mem_start.value + 32 : mem_start.value + size.value\n                            ]\n                        ),\n                    )\n                except:\n                    pass\n        try:\n            transaction_sequence = solver.get_transaction_sequence(\n                state, state.world_state.constraints\n            )\n\n            if message:\n                description_tail = (\n                    \"A user-provided assertion failed with the message '{}'\".format(\n                        message\n                    )\n                )\n\n            else:\n                description_tail = \"A user-provided assertion failed.\"\n\n            log.debug(\"MythX assertion emitted: {}\".format(description_tail))\n\n            address = state.get_current_instruction()[\"address\"]\n\n            issue = Issue(\n                contract=state.environment.active_account.contract_name,\n                function_name=state.environment.active_function_name,\n                address=address,\n                swc_id=ASSERT_VIOLATION,\n                title=\"Exception State\",\n                severity=\"Medium\",\n                description_head=\"A user-provided assertion failed.\",\n                description_tail=description_tail,\n                bytecode=state.environment.code.bytecode,\n                transaction_sequence=transaction_sequence,\n                gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),\n            )\n            state.annotate(\n                IssueAnnotation(\n                    detector=self,\n                    issue=issue,\n                    conditions=[And(*state.world_state.constraints)],\n                )\n            )\n            return [issue]\n\n        except UnsatError:\n            log.debug(\"no model found\")\n\n        return []\n\n\ndetector = UserAssertions()\n"
  },
  {
    "path": "mythril/analysis/module/util.py",
    "content": "import logging\nfrom collections import defaultdict\nfrom typing import Callable, Dict, List, Mapping, Optional\n\nfrom mythril.analysis.module.base import DetectionModule, EntryPoint\nfrom mythril.analysis.module.loader import ModuleLoader\nfrom mythril.support.opcodes import OPCODES\n\nlog = logging.getLogger(__name__)\nOP_CODE_LIST = OPCODES.keys()\n\n\ndef get_detection_module_hooks(\n    modules: List[DetectionModule], hook_type=\"pre\"\n) -> Dict[str, List[Callable]]:\n    \"\"\"Gets a dictionary with the hooks for the passed detection modules\n\n    :param modules: The modules for which to retrieve hooks\n    :param hook_type: The type  of hooks to retrieve (default: \"pre\")\n    :return: Dictionary with discovered hooks\n    \"\"\"\n    hook_dict: Mapping[str, List[Callable]] = defaultdict(list)\n    for module in modules:\n        hooks = module.pre_hooks if hook_type == \"pre\" else module.post_hooks\n\n        for op_code in map(lambda x: x.upper(), hooks):\n            # A hook can be either OP_CODE or START*\n            # When an entry like the second is encountered we hook all opcodes that start with START\n            if op_code in OP_CODE_LIST:\n                hook_dict[op_code].append(module.execute)\n            elif op_code.endswith(\"*\"):\n                to_register = filter(lambda x: x.startswith(op_code[:-1]), OP_CODE_LIST)\n                for actual_hook in to_register:\n                    hook_dict[actual_hook].append(module.execute)\n            else:\n                log.error(\n                    \"Encountered invalid hook opcode %s in module %s\",\n                    op_code,\n                    module.name,\n                )\n\n    return dict(hook_dict)\n\n\ndef reset_callback_modules(module_names: Optional[List[str]] = None):\n    \"\"\"Clean the issue records of every callback-based module.\"\"\"\n    modules = ModuleLoader().get_detection_modules(EntryPoint.CALLBACK, module_names)\n    for module in modules:\n        module.reset_module()\n"
  },
  {
    "path": "mythril/analysis/ops.py",
    "content": "\"\"\"This module contains various helper methods for dealing with EVM\noperations.\"\"\"\n\nfrom enum import Enum\n\nfrom mythril.laser.ethereum import util\nfrom mythril.laser.smt import simplify\n\n\nclass VarType(Enum):\n    \"\"\"An enum denoting whether a value is symbolic or concrete.\"\"\"\n\n    SYMBOLIC = 1\n    CONCRETE = 2\n\n\nclass Variable:\n    \"\"\"The representation of a variable with value and type.\"\"\"\n\n    def __init__(self, val, _type):\n        \"\"\"\n\n        :param val:\n        :param _type:\n        \"\"\"\n        self.val = val\n        self.type = _type\n\n    def __str__(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return str(self.val)\n\n\ndef get_variable(i):\n    \"\"\"\n\n    :param i:\n    :return:\n    \"\"\"\n    try:\n        return Variable(util.get_concrete_int(i), VarType.CONCRETE)\n    except TypeError:\n        return Variable(simplify(i), VarType.SYMBOLIC)\n\n\nclass Op:\n    \"\"\"The base type for operations referencing current node and state.\"\"\"\n\n    def __init__(self, node, state, state_index):\n        \"\"\"\n\n        :param node:\n        :param state:\n        :param state_index:\n        \"\"\"\n        self.node = node\n        self.state = state\n        self.state_index = state_index\n\n\nclass Call(Op):\n    \"\"\"The representation of a CALL operation.\"\"\"\n\n    def __init__(\n        self,\n        node,\n        state,\n        state_index,\n        _type,\n        to,\n        gas,\n        value=Variable(0, VarType.CONCRETE),\n        data=None,\n    ):\n        \"\"\"\n\n        :param node:\n        :param state:\n        :param state_index:\n        :param _type:\n        :param to:\n        :param gas:\n        :param value:\n        :param data:\n        \"\"\"\n        super().__init__(node, state, state_index)\n        self.to = to\n        self.gas = gas\n        self.type = _type\n        self.value = value\n        self.data = data\n"
  },
  {
    "path": "mythril/analysis/potential_issues.py",
    "content": "from mythril.analysis.issue_annotation import IssueAnnotation\nfrom mythril.analysis.report import Issue\nfrom mythril.analysis.solver import get_transaction_sequence\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import And\nfrom mythril.support.support_args import args\n\n\nclass PotentialIssue:\n    \"\"\"Representation of a potential issue\"\"\"\n\n    def __init__(\n        self,\n        contract,\n        function_name,\n        address,\n        swc_id,\n        title,\n        bytecode,\n        detector,\n        severity=None,\n        description_head=\"\",\n        description_tail=\"\",\n        constraints=None,\n    ):\n        \"\"\"\n\n        :param contract: The contract\n        :param function_name: Function name where the issue is detected\n        :param address: The address of the issue\n        :param swc_id: Issue's corresponding swc-id\n        :param title: Title\n        :param bytecode: bytecode of the issue\n        :param detector: The detector the potential issue belongs to\n        :param gas_used: amount of gas used\n        :param severity: The severity of the issue\n        :param description_head: The top part of description\n        :param description_tail: The bottom part of the description\n        :param constraints: The non-path related constraints for the potential issue\n        \"\"\"\n        self.title = title\n        self.contract = contract\n        self.function_name = function_name\n        self.address = address\n        self.description_head = description_head\n        self.description_tail = description_tail\n        self.severity = severity\n        self.swc_id = swc_id\n        self.bytecode = bytecode\n        self.constraints = constraints or []\n        self.detector = detector\n\n\nclass PotentialIssuesAnnotation(StateAnnotation):\n    def __init__(self):\n        self.potential_issues = []\n\n    @property\n    def search_importance(self):\n        return 10 * len(self.potential_issues)\n\n\ndef get_potential_issues_annotation(state: GlobalState) -> PotentialIssuesAnnotation:\n    \"\"\"\n    Returns the potential issues annotation of the given global state, and creates one if\n    one does not already exist.\n\n    :param state: The global state\n    :return:\n    \"\"\"\n    for annotation in state.annotations:\n        if isinstance(annotation, PotentialIssuesAnnotation):\n            return annotation\n\n    annotation = PotentialIssuesAnnotation()\n    state.annotate(annotation)\n    return annotation\n\n\ndef check_potential_issues(state: GlobalState) -> None:\n    \"\"\"\n    Called at the end of a transaction, checks potential issues, and\n    adds valid issues to the detector.\n\n    :param state: The final global state of a transaction\n    :return:\n    \"\"\"\n    annotation = get_potential_issues_annotation(state)\n    unsat_potential_issues = []\n    for potential_issue in annotation.potential_issues:\n        try:\n            transaction_sequence = get_transaction_sequence(\n                state, state.world_state.constraints + potential_issue.constraints\n            )\n        except UnsatError:\n            unsat_potential_issues.append(potential_issue)\n            continue\n\n        issue = Issue(\n            contract=potential_issue.contract,\n            function_name=potential_issue.function_name,\n            address=potential_issue.address,\n            title=potential_issue.title,\n            bytecode=potential_issue.bytecode,\n            swc_id=potential_issue.swc_id,\n            gas_used=(state.mstate.min_gas_used, state.mstate.max_gas_used),\n            severity=potential_issue.severity,\n            description_head=potential_issue.description_head,\n            description_tail=potential_issue.description_tail,\n            transaction_sequence=transaction_sequence,\n        )\n        state.annotate(\n            IssueAnnotation(\n                detector=potential_issue.detector,\n                issue=issue,\n                conditions=[\n                    And(*(state.world_state.constraints + potential_issue.constraints))\n                ],\n            )\n        )\n        if args.use_issue_annotations is False:\n            potential_issue.detector.issues.append(issue)\n            potential_issue.detector.update_cache([issue])\n    annotation.potential_issues = unsat_potential_issues\n"
  },
  {
    "path": "mythril/analysis/report.py",
    "content": "\"\"\"This module provides classes that make up an issue report.\"\"\"\n\nimport json\nimport logging\nimport operator\nimport re\n\ntry:\n    from eth_abi import decode\nexcept ImportError:\n    from eth_abi import decode_abi as decode\n\nimport hashlib\nfrom time import time\nfrom typing import Any, Dict, Iterable, List, Optional\n\nfrom jinja2 import Environment, PackageLoader\n\nfrom mythril.analysis.swc_data import SWC_TO_TITLE\nfrom mythril.laser.execution_info import ExecutionInfo\nfrom mythril.solidity.soliditycontract import SolidityContract\nfrom mythril.support.signatures import SignatureDB\nfrom mythril.support.source_support import Source\nfrom mythril.support.start_time import StartTime\nfrom mythril.support.support_utils import get_code_hash\n\nlog = logging.getLogger(__name__)\n\n\nclass Issue:\n    \"\"\"Representation of an issue and its location.\"\"\"\n\n    def __init__(\n        self,\n        contract: str,\n        function_name: str,\n        address: int,\n        swc_id: str,\n        title: str,\n        bytecode: str,\n        gas_used=(None, None),\n        severity=None,\n        description_head=\"\",\n        description_tail=\"\",\n        transaction_sequence=None,\n        source_location=None,\n    ):\n        \"\"\"\n\n        :param contract: The contract\n        :param function_name: Function name where the issue is detected\n        :param address: The address of the issue\n        :param swc_id: Issue's corresponding swc-id\n        :param title: Title\n        :param bytecode: bytecode of the issue\n        :param gas_used: amount of gas used\n        :param severity: The severity of the issue\n        :param description_head: The top part of description\n        :param description_tail: The bottom part of the description\n        :param transaction_sequence: The transaction sequence\n        \"\"\"\n        self.title = title\n        self.contract = contract\n        self.function = function_name\n        self.address = address\n        self.description_head = description_head\n        self.description_tail = description_tail\n        self.description = \"%s\\n%s\" % (description_head, description_tail)\n        self.severity = severity\n        self.swc_id = swc_id\n        self.min_gas_used, self.max_gas_used = gas_used\n        self.filename = None\n        self.code = None\n        self.lineno = None\n        self.source_mapping = None\n        self.discovery_time = time() - StartTime().global_start_time\n        self.bytecode_hash = get_code_hash(bytecode)\n        self.transaction_sequence = transaction_sequence\n        self.source_location = source_location\n\n    @property\n    def transaction_sequence_users(self):\n        \"\"\"Returns the transaction sequence without pre-generated block data\"\"\"\n        return self.transaction_sequence\n\n    @property\n    def transaction_sequence_jsonv2(self):\n        \"\"\"Returns the transaction sequence as a json string with pre-generated block data\"\"\"\n        return (\n            self.add_block_data(self.transaction_sequence)\n            if self.transaction_sequence\n            else None\n        )\n\n    @staticmethod\n    def add_block_data(transaction_sequence: Dict):\n        \"\"\"Adds sane block data to a transaction_sequence\"\"\"\n        for step in transaction_sequence[\"steps\"]:\n            step[\"gasLimit\"] = \"0x7d000\"\n            step[\"gasPrice\"] = \"0x773594000\"\n            step[\"blockCoinbase\"] = \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\"\n            step[\"blockDifficulty\"] = \"0xa7d7343662e26\"\n            step[\"blockGasLimit\"] = \"0x7d0000\"\n            step[\"blockNumber\"] = \"0x66e393\"\n            step[\"blockTime\"] = \"0x5bfa4639\"\n        return transaction_sequence\n\n    @property\n    def as_dict(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n\n        issue = {\n            \"title\": self.title,\n            \"swc-id\": self.swc_id,\n            \"contract\": self.contract,\n            \"description\": self.description,\n            \"function\": self.function,\n            \"severity\": self.severity,\n            \"address\": self.address,\n            \"tx_sequence\": self.transaction_sequence,\n            \"min_gas_used\": self.min_gas_used,\n            \"max_gas_used\": self.max_gas_used,\n            \"sourceMap\": self.source_mapping,\n        }\n\n        if self.filename and self.lineno:\n            issue[\"filename\"] = self.filename\n            issue[\"lineno\"] = self.lineno\n\n        if self.code:\n            issue[\"code\"] = self.code\n\n        return issue\n\n    def _set_internal_compiler_error(self):\n        \"\"\"\n        Adds the false positive to description and changes severity to low\n        \"\"\"\n        self.severity = \"Low\"\n        self.description_tail += (\n            \" This issue is reported for internal compiler generated code.\"\n        )\n        self.description = \"%s\\n%s\" % (self.description_head, self.description_tail)\n        self.code = \"\"\n\n    def add_code_info(self, contract):\n        \"\"\"\n\n        :param contract:\n        \"\"\"\n        if self.address and isinstance(contract, SolidityContract):\n            is_constructor = False\n            if self.function == \"constructor\":\n                is_constructor = True\n\n            if self.source_location:\n                codeinfo = contract.get_source_info(\n                    self.source_location, constructor=is_constructor\n                )\n            else:\n                codeinfo = contract.get_source_info(\n                    self.address, constructor=is_constructor\n                )\n\n            if codeinfo is None:\n                self.source_mapping = self.address\n                self.filename = \"Internal File\"\n                return\n\n            self.filename = codeinfo.filename\n            self.code = codeinfo.code\n            self.lineno = codeinfo.lineno\n            if self.lineno is None:\n                self._set_internal_compiler_error()\n            self.source_mapping = codeinfo.solc_mapping\n        else:\n            self.source_mapping = self.address\n\n    @staticmethod\n    def decode_bytes(val):\n        if isinstance(val, bytes):\n            return val.decode()\n        elif isinstance(val, list) or isinstance(val, tuple):\n            return [Issue.decode_bytes(x) for x in val]\n        else:\n            return val\n\n    def resolve_function_names(self):\n        \"\"\"Resolves function names for each step\"\"\"\n\n        if (\n            self.transaction_sequence is None\n            or \"steps\" not in self.transaction_sequence\n        ):\n            return\n\n        signatures = SignatureDB()\n\n        for step in self.transaction_sequence[\"steps\"]:\n            _hash = step[\"input\"][:10]\n\n            try:\n                sig = signatures.get(_hash)\n                # TODO: Check other mythx tools for dependency before supporting multiple possible function names\n                if len(sig) > 0:\n                    step[\"name\"] = sig[0]\n                    step[\"resolved_input\"] = Issue.resolve_input(\n                        step[\"calldata\"], sig[0]\n                    )\n                    if step[\"resolved_input\"] is not None:\n                        step[\"resolved_input\"] = list(step[\"resolved_input\"])\n                        for i, val in enumerate(step[\"resolved_input\"]):\n                            step[\"resolved_input\"][i] = Issue.decode_bytes(val)\n\n                        step[\"resolved_input\"] = tuple(step[\"resolved_input\"])\n\n                else:\n                    step[\"name\"] = \"unknown\"\n            except ValueError:\n                step[\"name\"] = \"unknown\"\n\n    @staticmethod\n    def resolve_input(data, function_name):\n        \"\"\"\n        Adds decoded calldate to the tx sequence.\n        \"\"\"\n        data = data[10:]\n\n        # Eliminates the first and last brackets\n        # Since signature such as func((bytes32,bytes32,uint8)[],(address[],uint32)) are valid\n        type_info = function_name[function_name.find(\"(\") + 1 : -1]\n        type_info = re.split(r\",\\s*(?![^()]*\\))\", type_info)\n\n        if len(data) % 64 > 0:\n            data += \"0\" * (64 - len(data) % 64)\n        try:\n            decoded_output = decode(type_info, bytes.fromhex(data))\n            decoded_output = tuple(\n                convert_bytes(item) if isinstance(item, (bytes, Iterable)) else item\n                for item in decoded_output\n            )\n            return decoded_output\n        except Exception:\n            return None\n\n\ndef convert_bytes(item):\n    \"\"\"\n    Converts bytes to a serializable format. Handles nested iterables.\n    \"\"\"\n    if isinstance(item, bytes):\n        return item.hex()\n    elif isinstance(item, Iterable) and not isinstance(item, (str, bytes)):\n        # Recursively apply convert_bytes to each item in the iterable\n        return type(item)(convert_bytes(subitem) for subitem in item)\n    else:\n        return item\n\n\nclass Report:\n    \"\"\"A report containing the content of multiple issues.\"\"\"\n\n    environment = Environment(\n        loader=PackageLoader(\"mythril.analysis\"), trim_blocks=True\n    )\n\n    def __init__(\n        self,\n        contracts=None,\n        exceptions=None,\n        execution_info: Optional[List[ExecutionInfo]] = None,\n    ):\n        \"\"\"\n\n        :param contracts:\n        :param exceptions:\n        \"\"\"\n        self.issues: Dict[bytes, Issue] = {}\n        self.solc_version = \"\"\n        self.meta: Dict[str, Any] = {}\n        self.source = Source()\n        self.source.get_source_from_contracts_list(contracts)\n        self.exceptions = exceptions or []\n        self.execution_info = execution_info or []\n\n    def sorted_issues(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        issue_list = [issue.as_dict for key, issue in self.issues.items()]\n        return sorted(issue_list, key=operator.itemgetter(\"address\", \"title\"))\n\n    def append_issue(self, issue):\n        \"\"\"\n\n        :param issue:\n        \"\"\"\n        m = hashlib.md5()\n        m.update(\n            (issue.contract + issue.function + str(issue.address) + issue.title).encode(\n                \"utf-8\"\n            )\n        )\n        issue.resolve_function_names()\n        self.issues[m.digest()] = issue\n\n    def as_text(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        name = self._file_name()\n        template = Report.environment.get_template(\"report_as_text.jinja2\")\n\n        return template.render(filename=name, issues=self.sorted_issues())\n\n    def as_json(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        result = {\"success\": True, \"error\": None, \"issues\": self.sorted_issues()}\n\n        return json.dumps(result, sort_keys=True)\n\n    def _get_exception_data(self) -> dict:\n        if not self.exceptions:\n            return {}\n        logs: List[Dict] = []\n        for exception in self.exceptions:\n            logs += [{\"level\": \"error\", \"hidden\": True, \"msg\": exception}]\n        return {\"logs\": logs}\n\n    def as_swc_standard_format(self):\n        \"\"\"Format defined for integration and correlation.\n\n        :return:\n        \"\"\"\n        # Setup issues\n        _issues = []\n\n        for _, issue in self.issues.items():\n            idx = self.source.get_source_index(issue.bytecode_hash)\n            try:\n                title = SWC_TO_TITLE[issue.swc_id]\n            except KeyError:\n                title = \"Unspecified Security Issue\"\n            extra = {\"discoveryTime\": int(issue.discovery_time * 10**9)}\n            if issue.transaction_sequence_jsonv2:\n                extra[\"testCases\"] = [issue.transaction_sequence_jsonv2]\n\n            _issues.append(\n                {\n                    \"swcID\": \"SWC-\" + issue.swc_id,\n                    \"swcTitle\": title,\n                    \"description\": {\n                        \"head\": issue.description_head,\n                        \"tail\": issue.description_tail,\n                    },\n                    \"severity\": issue.severity,\n                    \"locations\": [{\"sourceMap\": \"%d:1:%d\" % (issue.address, idx)}],\n                    \"extra\": extra,\n                }\n            )\n        # Setup meta\n        meta_data = self.meta\n\n        # Add logs to meta\n        meta_data.update(self._get_exception_data())\n\n        # Add execution info to meta\n        analysis_duration = int(\n            round((time() - StartTime().global_start_time) * (10**9))\n        )\n        meta_data[\"mythril_execution_info\"] = {\"analysis_duration\": analysis_duration}\n        for execution_info in self.execution_info:\n            meta_data[\"mythril_execution_info\"].update(execution_info.as_dict())\n\n        result = [\n            {\n                \"issues\": _issues,\n                \"sourceType\": self.source.source_type,\n                \"sourceFormat\": self.source.source_format,\n                \"sourceList\": self.source.source_list,\n                \"meta\": meta_data,\n            }\n        ]\n\n        return json.dumps(result, sort_keys=True)\n\n    def as_markdown(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        filename = self._file_name()\n        template = Report.environment.get_template(\"report_as_markdown.jinja2\")\n        return template.render(filename=filename, issues=self.sorted_issues())\n\n    def _file_name(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        if len(self.issues.values()) > 0:\n            return list(self.issues.values())[0].filename\n"
  },
  {
    "path": "mythril/analysis/security.py",
    "content": "\"\"\"This module contains functionality for hooking in detection modules and\nexecuting them.\"\"\"\n\nimport logging\nfrom typing import List, Optional\n\nfrom mythril.analysis.module import ModuleLoader, reset_callback_modules\nfrom mythril.analysis.module.base import EntryPoint\nfrom mythril.analysis.report import Issue\n\nlog = logging.getLogger(__name__)\n\n\ndef retrieve_callback_issues(white_list: Optional[List[str]] = None) -> List[Issue]:\n    \"\"\"Get the issues discovered by callback type detection modules\"\"\"\n    issues: List[Issue] = []\n    for module in ModuleLoader().get_detection_modules(\n        entry_point=EntryPoint.CALLBACK, white_list=white_list\n    ):\n        log.debug(\"Retrieving results for \" + module.name)\n        issues += module.issues\n\n    reset_callback_modules(module_names=white_list)\n\n    return issues\n\n\ndef fire_lasers(statespace, white_list: Optional[List[str]] = None) -> List[Issue]:\n    \"\"\"Fire lasers at analysed statespace object\n\n    :param statespace: Symbolic statespace to analyze\n    :param white_list: Optionally whitelist modules to use for the analysis\n    :return: Discovered issues\n    \"\"\"\n    log.info(\"Starting analysis\")\n\n    issues: List[Issue] = []\n    for module in ModuleLoader().get_detection_modules(\n        entry_point=EntryPoint.POST, white_list=white_list\n    ):\n        log.info(\"Executing \" + module.name)\n        issues += module.execute(statespace)\n\n    issues += retrieve_callback_issues(white_list)\n    return issues\n"
  },
  {
    "path": "mythril/analysis/solver.py",
    "content": "\"\"\"This module contains analysis module helpers to solve path constraints.\"\"\"\n\nimport logging\nfrom typing import Any, Dict, List, Tuple, Union\n\nimport z3\nfrom z3 import FuncInterp\n\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.function_managers import (\n    keccak_function_manager,\n)\nfrom mythril.laser.ethereum.state.constraints import Constraints\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.transaction import BaseTransaction\nfrom mythril.laser.ethereum.transaction.transaction_models import (\n    ContractCreationTransaction,\n)\nfrom mythril.laser.smt import UGE, symbol_factory\nfrom mythril.support.model import get_model\n\nlog = logging.getLogger(__name__)\nz3.set_option(\n    max_args=10000000, max_lines=1000000, max_depth=10000000, max_visited=1000000\n)\n\n\ndef pretty_print_model(model):\n    \"\"\"Pretty prints a z3 model\n\n    :param model:\n    :return:\n    \"\"\"\n    ret = \"\"\n\n    for d in model.decls():\n        if isinstance(model[d], FuncInterp):\n            condition = model[d].as_list()\n            ret += \"%s: %s\\n\" % (d.name(), condition)\n            continue\n\n        try:\n            condition = \"0x%x\" % model[d].as_long()\n        except:\n            condition = str(z3.simplify(model[d]))\n\n        ret += \"%s: %s\\n\" % (d.name(), condition)\n\n    return ret\n\n\ndef get_transaction_sequence(\n    global_state: GlobalState, constraints: Constraints\n) -> Dict[str, Any]:\n    \"\"\"Generate concrete transaction sequence.\n    Note: This function only considers the constraints in constraint argument,\n    which in some cases is expected to differ from global_state's constraints\n\n    :param global_state: GlobalState to generate transaction sequence for\n    :param constraints: list of constraints used to generate transaction sequence\n    \"\"\"\n    transaction_sequence = global_state.world_state.transaction_sequence\n    concrete_transactions = []\n    tx_constraints, minimize = _set_minimisation_constraints(\n        transaction_sequence, constraints.copy(), [], 5000, global_state.world_state\n    )\n\n    try:\n        model = get_model(tx_constraints, minimize=minimize)\n    except UnsatError:\n        raise UnsatError\n\n    if isinstance(transaction_sequence[0], ContractCreationTransaction):\n        initial_world_state = transaction_sequence[0].prev_world_state\n    else:\n        initial_world_state = transaction_sequence[0].world_state\n\n    initial_accounts = initial_world_state.accounts\n\n    for transaction in transaction_sequence:\n        concrete_transaction = _get_concrete_transaction(model, transaction)\n        concrete_transactions.append(concrete_transaction)\n\n    min_price_dict: Dict[str, int] = {}\n    for address in initial_accounts.keys():\n        min_price_dict[address] = model.eval(\n            initial_world_state.starting_balances[\n                symbol_factory.BitVecVal(address, 256)\n            ].raw,\n            model_completion=True,\n        ).as_long()\n\n    concrete_initial_state = _get_concrete_state(initial_accounts, min_price_dict)\n    if isinstance(transaction_sequence[0], ContractCreationTransaction):\n        code = transaction_sequence[0].code\n        _replace_with_actual_sha(concrete_transactions, model, code)\n    else:\n        _replace_with_actual_sha(concrete_transactions, model)\n    _add_calldata_placeholder(concrete_transactions, transaction_sequence)\n    steps = {\"initialState\": concrete_initial_state, \"steps\": concrete_transactions}\n\n    return steps\n\n\ndef _add_calldata_placeholder(\n    concrete_transactions: List[Dict[str, str]],\n    transaction_sequence: List[BaseTransaction],\n):\n    \"\"\"\n    Adds a calldata placeholder into the concrete transactions\n    :param concrete_transactions:\n    :param transaction_sequence:\n    :return:\n    \"\"\"\n    for tx in concrete_transactions:\n        tx[\"calldata\"] = tx[\"input\"]\n    if not isinstance(transaction_sequence[0], ContractCreationTransaction):\n        return\n\n    if isinstance(transaction_sequence[0].code.bytecode, tuple):\n        code_len = len(transaction_sequence[0].code.bytecode) * 2\n    else:\n        code_len = len(transaction_sequence[0].code.bytecode)\n    concrete_transactions[0][\"calldata\"] = concrete_transactions[0][\"input\"][\n        code_len + 2 :\n    ]\n\n\ndef _replace_with_actual_sha(\n    concrete_transactions: List[Dict[str, str]], model: z3.Model, code=None\n):\n    concrete_hashes = keccak_function_manager.get_concrete_hash_data(model)\n    for tx in concrete_transactions:\n        if keccak_function_manager.hash_matcher not in tx[\"input\"]:\n            continue\n        if code is not None and code.bytecode in tx[\"input\"]:\n            s_index = len(code.bytecode) + 2\n        else:\n            s_index = 10\n        for i in range(s_index, len(tx[\"input\"])):\n            data_slice = tx[\"input\"][i : i + 64]\n            if (\n                keccak_function_manager.hash_matcher not in data_slice\n                or len(data_slice) != 64\n            ):\n                continue\n            find_input = symbol_factory.BitVecVal(int(data_slice, 16), 256)\n            input_ = None\n            for size in concrete_hashes:\n                _, inverse = keccak_function_manager.store_function[size]\n                if find_input.value not in concrete_hashes[size]:\n                    continue\n                input_ = symbol_factory.BitVecVal(\n                    model.eval(inverse(find_input).raw).as_long(), size\n                )\n\n            if input_ is None:\n                continue\n            keccak = keccak_function_manager.find_concrete_keccak(input_)\n            hex_keccak = hex(keccak.value)[2:]\n            if len(hex_keccak) != 64:\n                hex_keccak = \"0\" * (64 - len(hex_keccak)) + hex_keccak\n            tx[\"input\"] = tx[\"input\"][:s_index] + tx[\"input\"][s_index:].replace(\n                tx[\"input\"][i : 64 + i], hex_keccak\n            )\n\n\ndef _get_concrete_state(\n    initial_accounts: Dict, min_price_dict: Dict[str, int]\n) -> Dict[str, Dict]:\n    \"\"\"Gets a concrete state\"\"\"\n    accounts = {}\n    for address, account in initial_accounts.items():\n        # Skip empty default account\n\n        data: Dict[str, Union[int, str]] = {}\n        data[\"nonce\"] = account.nonce\n        data[\"code\"] = account.serialised_code()\n        data[\"storage\"] = str(account.storage)\n        data[\"balance\"] = hex(min_price_dict.get(address, 0))\n        accounts[hex(address)] = data\n    return {\"accounts\": accounts}\n\n\ndef _get_concrete_transaction(model: z3.Model, transaction: BaseTransaction):\n    \"\"\"Gets a concrete transaction from a transaction and z3 model\"\"\"\n    # Get concrete values from transaction\n    address = hex(transaction.callee_account.address.value)\n    value = model.eval(transaction.call_value.raw, model_completion=True).as_long()\n    caller = \"0x\" + (\n        \"%x\" % model.eval(transaction.caller.raw, model_completion=True).as_long()\n    ).zfill(40)\n\n    input_ = \"\"\n    if isinstance(transaction, ContractCreationTransaction):\n        address = \"\"\n        input_ += transaction.code.bytecode\n\n    input_ += \"\".join(\n        [\n            hex(b)[2:] if len(hex(b)) % 2 == 0 else \"0\" + hex(b)[2:]\n            for b in transaction.call_data.concrete(model)\n        ]\n    )\n\n    # Create concrete transaction dict\n    concrete_transaction: Dict[str, str] = dict()\n    concrete_transaction[\"input\"] = \"0x\" + input_\n    concrete_transaction[\"value\"] = \"0x%x\" % value\n    # Fixme: base origin assignment on origin symbol\n    concrete_transaction[\"origin\"] = caller\n    concrete_transaction[\"address\"] = \"%s\" % address\n\n    return concrete_transaction\n\n\ndef _set_minimisation_constraints(\n    transaction_sequence, constraints, minimize, max_size, world_state\n) -> Tuple[Constraints, tuple]:\n    \"\"\"Set constraints that minimise key transaction values\n\n    Constraints generated:\n    - Upper bound on calldata size\n    - Minimisation of call value's and calldata sizes\n\n    :param transaction_sequence: Transaction for which the constraints should be applied\n    :param constraints: The constraints array which should contain any added constraints\n    :param minimize: The minimisation array which should contain any variables that should be minimised\n    :param max_size: The max size of the calldata array\n    :return: updated constraints, minimize\n    \"\"\"\n    for transaction in transaction_sequence:\n        # Set upper bound on calldata size\n        max_calldata_size = symbol_factory.BitVecVal(max_size, 256)\n        constraints.append(UGE(max_calldata_size, transaction.call_data.calldatasize))\n\n        # Minimize\n        minimize.append(transaction.call_data.calldatasize)\n        minimize.append(transaction.call_value)\n        constraints.append(\n            UGE(\n                symbol_factory.BitVecVal(1000000000000000000000, 256),\n                world_state.starting_balances[transaction.caller],\n            )\n        )\n\n    for account in world_state.accounts.values():\n        # Lazy way to prevent overflows and to ensure \"reasonable\" balances\n        # Each account starts with less than 100 ETH\n        constraints.append(\n            UGE(\n                symbol_factory.BitVecVal(100000000000000000000, 256),\n                world_state.starting_balances[account.address],\n            )\n        )\n\n    return constraints, tuple(minimize)\n"
  },
  {
    "path": "mythril/analysis/swc_data.py",
    "content": "\"\"\"This module maps SWC IDs to their registry equivalents.\"\"\"\n\nDEFAULT_FUNCTION_VISIBILITY = \"100\"\nINTEGER_OVERFLOW_AND_UNDERFLOW = \"101\"\nOUTDATED_COMPILER_VERSION = \"102\"\nFLOATING_PRAGMA = \"103\"\nUNCHECKED_RET_VAL = \"104\"\nUNPROTECTED_ETHER_WITHDRAWAL = \"105\"\nUNPROTECTED_SELFDESTRUCT = \"106\"\nREENTRANCY = \"107\"\nDEFAULT_STATE_VARIABLE_VISIBILITY = \"108\"\nUNINITIALIZED_STORAGE_POINTER = \"109\"\nASSERT_VIOLATION = \"110\"\nDEPRECATED_FUNCTIONS_USAGE = \"111\"\nDELEGATECALL_TO_UNTRUSTED_CONTRACT = \"112\"\nMULTIPLE_SENDS = \"113\"\nTX_ORDER_DEPENDENCE = \"114\"\nTX_ORIGIN_USAGE = \"115\"\nTIMESTAMP_DEPENDENCE = \"116\"\nSIGNATURE_MALLEABILITY = \"117\"\nINCORRECT_CONSTRUCTOR_NAME = \"118\"\nSHADOWING_STATE_VARIABLES = \"119\"\nWEAK_RANDOMNESS = \"120\"\nSIGNATURE_REPLAY = \"121\"\nIMPROPER_VERIFICATION_BASED_ON_MSG_SENDER = \"122\"\nREQUIREMENT_VIOLATION = \"123\"\nWRITE_TO_ARBITRARY_STORAGE = \"124\"\nINCORRECT_INHERITANCE_ORDER = \"125\"\nARBITRARY_JUMP = \"127\"\nDOS_WITH_BLOCK_GAS_LIMIT = \"128\"\nTYPOGRAPHICAL_ERROR = \"129\"\nUNEXPECTED_ETHER_BALANCE = \"132\"\nEFFECT_FREE_CODE = \"135\"\n\nSWC_TO_TITLE = {\n    \"100\": \"Function Default Visibility\",\n    \"101\": \"Integer Overflow and Underflow\",\n    \"102\": \"Outdated Compiler Version\",\n    \"103\": \"Floating Pragma\",\n    \"104\": \"Unchecked Call Return Value\",\n    \"105\": \"Unprotected Ether Withdrawal\",\n    \"106\": \"Unprotected SELFDESTRUCT Instruction\",\n    \"107\": \"Reentrancy\",\n    \"108\": \"State Variable Default Visibility\",\n    \"109\": \"Uninitialized Storage Pointer\",\n    \"110\": \"Assert Violation\",\n    \"111\": \"Use of Deprecated Solidity Functions\",\n    \"112\": \"Delegatecall to Untrusted Callee\",\n    \"113\": \"DoS with Failed Call\",\n    \"114\": \"Transaction Order Dependence\",\n    \"115\": \"Authorization through tx.origin\",\n    \"116\": \"Timestamp Dependence\",\n    \"117\": \"Signature Malleability\",\n    \"118\": \"Incorrect Constructor Name\",\n    \"119\": \"Shadowing State Variables\",\n    \"120\": \"Weak Sources of Randomness from Chain Attributes\",\n    \"121\": \"Missing Protection against Signature Replay Attacks\",\n    \"122\": \"Lack of Proper Signature Verification\",\n    \"123\": \"Requirement Violation\",\n    \"124\": \"Write to Arbitrary Storage Location\",\n    \"125\": \"Incorrect Inheritance Order\",\n    \"127\": \"Arbitrary Jump with Function Type Variable\",\n    \"128\": \"DoS With Block Gas Limit\",\n    \"129\": \"Typographical Error\",\n    \"132\": \"Unexpected Ether Balance\",\n    \"135\": \"Effect Free Code\",\n}\n"
  },
  {
    "path": "mythril/analysis/symbolic.py",
    "content": "\"\"\"This module contains a wrapper around LASER for extended analysis\npurposes.\"\"\"\n\nfrom typing import List, Optional, Type, Union\n\nfrom mythril.analysis.module import EntryPoint, ModuleLoader, get_detection_module_hooks\nfrom mythril.laser.ethereum import svm\nfrom mythril.laser.ethereum.natives import PRECOMPILE_COUNT\nfrom mythril.laser.ethereum.state.account import Account\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.strategy.basic import (\n    BasicSearchStrategy,\n    BreadthFirstSearchStrategy,\n    DepthFirstSearchStrategy,\n    ReturnRandomNaivelyStrategy,\n    ReturnWeightedRandomStrategy,\n)\nfrom mythril.laser.ethereum.strategy.beam import BeamSearch\nfrom mythril.laser.ethereum.strategy.constraint_strategy import DelayConstraintStrategy\nfrom mythril.laser.ethereum.strategy.extensions.bounded_loops import (\n    BoundedLoopsStrategy,\n)\nfrom mythril.laser.ethereum.transaction.symbolic import ACTORS\nfrom mythril.laser.ethereum.tx_prioritiser import RfTxPrioritiser\nfrom mythril.laser.execution_info import ExecutionInfo\nfrom mythril.laser.plugin.loader import LaserPluginLoader\nfrom mythril.laser.plugin.plugins import (\n    CallDepthLimitBuilder,\n    CoverageMetricsPluginBuilder,\n    CoveragePluginBuilder,\n    DependencyPrunerBuilder,\n    InstructionProfilerBuilder,\n    MutationPrunerBuilder,\n    StateMergePluginBuilder,\n    SymbolicSummaryPluginBuilder,\n)\nfrom mythril.laser.smt import BitVec, symbol_factory\nfrom mythril.solidity.soliditycontract import EVMContract, SolidityContract\nfrom mythril.support.support_args import args\n\nfrom .ops import Call, VarType, get_variable\n\n\nclass SymExecWrapper:\n    \"\"\"Wrapper class for the LASER Symbolic virtual machine.\n\n    Symbolically executes the code and does a bit of pre-analysis for\n    convenience.\n    \"\"\"\n\n    def __init__(\n        self,\n        contract,\n        address: Union[int, str, BitVec],\n        strategy: str,\n        dynloader=None,\n        max_depth: int = 22,\n        execution_timeout: Optional[int] = None,\n        loop_bound: int = 3,\n        create_timeout: Optional[int] = None,\n        transaction_count: int = 2,\n        modules: Optional[List[str]] = None,\n        compulsory_statespace: bool = True,\n        disable_dependency_pruning: bool = False,\n        run_analysis_modules: bool = True,\n        custom_modules_directory: str = \"\",\n    ):\n        \"\"\"\n\n        :param contract: Contract to symbolically execute\n        :param address: Address of the contract to symbolically execute\n        :param strategy: Execution strategy to use (bfs, dfs, etc)\n        :param dynloader: Dynamic Loader\n        :param max_depth: Max analysis depth\n        :param execution_timeout: Timeout for the entire analysis\n        :param create_timeout: Timeout for the creation transaction\n        :param transaction_count: Number of transactions to symbolically execute\n        :param modules: Analysis modules to run during analysis\n        :param compulsory_statespace: Boolean indicating whether or not the statespace should be saved\n        :param iprof: Instruction Profiler\n        :param disable_dependency_pruning: Boolean indicating whether dependency pruning should be disabled\n        :param run_analysis_modules: Boolean indicating whether analysis modules should be executed\n        :param enable_coverage_strategy: Boolean indicating whether the coverage strategy should be enabled\n        :param custom_modules_directory: The directory to read custom analysis modules from\n        \"\"\"\n        if isinstance(address, str):\n            address = symbol_factory.BitVecVal(int(address, 16), 256)\n        if isinstance(address, int):\n            address = symbol_factory.BitVecVal(address, 256)\n        beam_width = None\n        if strategy == \"dfs\":\n            s_strategy: Type[BasicSearchStrategy] = DepthFirstSearchStrategy\n        elif strategy == \"bfs\":\n            s_strategy = BreadthFirstSearchStrategy\n        elif strategy == \"naive-random\":\n            s_strategy = ReturnRandomNaivelyStrategy\n        elif strategy == \"weighted-random\":\n            s_strategy = ReturnWeightedRandomStrategy\n        elif \"beam-search: \" in strategy:\n            beam_width = int(strategy.split(\"beam-search: \")[1])\n            s_strategy = BeamSearch\n        elif \"pending\" in strategy:\n            s_strategy = DelayConstraintStrategy\n        else:\n            raise ValueError(\"Invalid strategy argument supplied\")\n\n        if args.incremental_txs is False:\n            tx_strategy = RfTxPrioritiser(contract)\n        else:\n            tx_strategy = None\n\n        creator_account = Account(\n            hex(ACTORS.creator.value), \"\", dynamic_loader=None, contract_name=None\n        )\n        attacker_account = Account(\n            hex(ACTORS.attacker.value), \"\", dynamic_loader=None, contract_name=None\n        )\n\n        requires_statespace = (\n            compulsory_statespace\n            or len(ModuleLoader().get_detection_modules(EntryPoint.POST, modules)) > 0\n        )\n        if not contract.creation_code:\n            self.accounts = {hex(ACTORS.attacker.value): attacker_account}\n        else:\n            self.accounts = {\n                hex(ACTORS.creator.value): creator_account,\n                hex(ACTORS.attacker.value): attacker_account,\n            }\n\n        self.laser = svm.LaserEVM(\n            dynamic_loader=dynloader,\n            max_depth=max_depth,\n            execution_timeout=execution_timeout,\n            strategy=s_strategy,\n            create_timeout=create_timeout,\n            transaction_count=transaction_count,\n            requires_statespace=requires_statespace,\n            beam_width=beam_width,\n            tx_strategy=tx_strategy,\n        )\n\n        if loop_bound is not None:\n            self.laser.extend_strategy(\n                BoundedLoopsStrategy, loop_bound=loop_bound, beam_width=beam_width\n            )\n\n        plugin_loader = LaserPluginLoader()\n        plugin_loader.load(CoverageMetricsPluginBuilder())\n        if args.enable_state_merge:\n            plugin_loader.load(StateMergePluginBuilder())\n        if not args.disable_coverage_strategy:\n            plugin_loader.load(CoveragePluginBuilder())\n        if not args.disable_mutation_pruner:\n            plugin_loader.load(MutationPrunerBuilder())\n        if not args.disable_iprof:\n            plugin_loader.load(InstructionProfilerBuilder())\n        if args.enable_summaries:\n            plugin_loader.load(SymbolicSummaryPluginBuilder())\n\n        plugin_loader.load(CallDepthLimitBuilder())\n        plugin_loader.add_args(\n            \"call-depth-limit\", call_depth_limit=args.call_depth_limit\n        )\n\n        if not disable_dependency_pruning:\n            plugin_loader.load(DependencyPrunerBuilder())\n\n        plugin_loader.instrument_virtual_machine(self.laser, None)\n\n        world_state = WorldState()\n        for account in self.accounts.values():\n            world_state.put_account(account)\n\n        if run_analysis_modules:\n            analysis_modules = ModuleLoader().get_detection_modules(\n                EntryPoint.CALLBACK, modules\n            )\n            self.laser.register_hooks(\n                hook_type=\"pre\",\n                hook_dict=get_detection_module_hooks(analysis_modules, hook_type=\"pre\"),\n            )\n            self.laser.register_hooks(\n                hook_type=\"post\",\n                hook_dict=get_detection_module_hooks(\n                    analysis_modules, hook_type=\"post\"\n                ),\n            )\n\n        if isinstance(contract, SolidityContract) and create_timeout != 0:\n            self.laser.sym_exec(\n                creation_code=contract.creation_code,\n                contract_name=contract.name,\n                world_state=world_state,\n            )\n        elif isinstance(contract, EVMContract) and contract.creation_code:\n            self.laser.sym_exec(\n                creation_code=contract.creation_code,\n                contract_name=contract.name,\n                world_state=world_state,\n            )\n        else:\n            account = Account(\n                address,\n                contract.disassembly,\n                dynamic_loader=dynloader,\n                contract_name=contract.name,\n                balances=world_state.balances,\n                concrete_storage=(\n                    True if (dynloader is not None and dynloader.active) else False\n                ),\n            )  # concrete_storage can get overridden by global args\n\n            if dynloader is not None:\n                if isinstance(address, int):\n                    try:\n                        _balance = dynloader.read_balance(\n                            \"{0:#0{1}x}\".format(address, 42)\n                        )\n                        account.set_balance(_balance)\n                    except:\n                        # Initial balance will be a symbolic variable\n                        pass\n                elif isinstance(address, str):\n                    try:\n                        _balance = dynloader.read_balance(address)\n                        account.set_balance(_balance)\n                    except:\n                        # Initial balance will be a symbolic variable\n                        pass\n                elif isinstance(address, BitVec):\n                    try:\n                        _balance = dynloader.read_balance(\n                            \"{0:#0{1}x}\".format(address.value, 42)\n                        )\n                        account.set_balance(_balance)\n                    except:\n                        # Initial balance will be a symbolic variable\n                        pass\n\n            world_state.put_account(account)\n            self.laser.sym_exec(world_state=world_state, target_address=address.value)\n\n        if not requires_statespace:\n            return\n\n        self.nodes = self.laser.nodes\n        self.edges = self.laser.edges\n\n        # Parse calls to make them easily accessible\n\n        self.calls: List[Call] = []\n\n        for key in self.nodes:\n            state_index = 0\n\n            for state in self.nodes[key].states:\n                instruction = state.get_current_instruction()\n\n                op = instruction[\"opcode\"]\n\n                if op in (\"CALL\", \"CALLCODE\", \"DELEGATECALL\", \"STATICCALL\"):\n                    stack = state.mstate.stack\n\n                    if op in (\"CALL\", \"CALLCODE\"):\n                        gas, to, value, meminstart, meminsz, _, _ = (\n                            get_variable(stack[-1]),\n                            get_variable(stack[-2]),\n                            get_variable(stack[-3]),\n                            get_variable(stack[-4]),\n                            get_variable(stack[-5]),\n                            get_variable(stack[-6]),\n                            get_variable(stack[-7]),\n                        )\n\n                        if (\n                            to.type == VarType.CONCRETE\n                            and 0 < to.val <= PRECOMPILE_COUNT\n                        ):\n                            # ignore prebuilts\n                            continue\n\n                        if (\n                            meminstart.type == VarType.CONCRETE\n                            and meminsz.type == VarType.CONCRETE\n                        ):\n                            self.calls.append(\n                                Call(\n                                    self.nodes[key],\n                                    state,\n                                    state_index,\n                                    op,\n                                    to,\n                                    gas,\n                                    value,\n                                    state.mstate.memory[\n                                        meminstart.val : meminsz.val + meminstart.val\n                                    ],\n                                )\n                            )\n                        else:\n                            self.calls.append(\n                                Call(\n                                    self.nodes[key],\n                                    state,\n                                    state_index,\n                                    op,\n                                    to,\n                                    gas,\n                                    value,\n                                )\n                            )\n                    else:\n                        gas, to, meminstart, meminsz, _, _ = (\n                            get_variable(stack[-1]),\n                            get_variable(stack[-2]),\n                            get_variable(stack[-3]),\n                            get_variable(stack[-4]),\n                            get_variable(stack[-5]),\n                            get_variable(stack[-6]),\n                        )\n\n                        self.calls.append(\n                            Call(self.nodes[key], state, state_index, op, to, gas)\n                        )\n\n                state_index += 1\n\n    @property\n    def execution_info(self) -> List[ExecutionInfo]:\n        return self.laser.execution_info\n"
  },
  {
    "path": "mythril/analysis/templates/callgraph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    {% if not phrackify %}\n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    {% else %}\n    <style type=\"text/css\">\n        #mynetwork {\n            height: 100%;\n            background-color: #ffffff;\n        }\n        body {\n            background-color: #ffffff;\n            color: #000000;\n            font-size: 10px;\n            font-family: \"courier new\";\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    {% endif %}\n\n    <script>\n        var options = {{opts | tojson}};\n        var nodes = {{nodes | tojson}};\n        var edges = {{edges | tojson}};\n    </script>\n</head>\n<body>\n<p>{{ title }}</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "mythril/analysis/templates/report_as_markdown.jinja2",
    "content": "# Analysis results for {{ filename }}\n{% if issues %}\n{% for issue in issues %}\n\n## {{ issue.title }}\n- SWC ID: {{ issue['swc-id'] }}\n- Severity: {{ issue.severity }}\n- Contract: {{ issue.contract | default(\"Unknown\") }}\n{% if issue.function %}\n- Function name: `{{ issue.function }}`\n{% endif %}\n- PC address: {{ issue.address }}\n{% if issue.min_gas_used or issue.max_gas_used %}\n- Estimated Gas Usage: {{ issue.min_gas_used }} - {{ issue.max_gas_used }}\n{% endif %}\n\n### Description\n\n{{ issue.description.rstrip() }}\n{% if issue.filename and issue.lineno %}\nIn file: {{ issue.filename }}:{{ issue.lineno }}\n{% elif issue.filename %}\nIn file: {{ issue.filename }}\n{% endif %}\n{% if issue.code %}\n\n### Code\n\n```\n{{ issue.code }}\n```\n{% endif %}\n{% if issue.tx_sequence %}\n\n### Initial State:\n\n{% for key, value in issue.tx_sequence.initialState.accounts.items() %}\nAccount: {% if key == \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\" %}[CREATOR]{% elif key == \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" %}[ATTACKER]{% else %}[SOMEGUY]{% endif %}, balance: {{value.balance}}, nonce:{{value.nonce}}, storage:{{value.storage}}\n{% endfor %}\n\n### Transaction Sequence\n\n{% for step in issue.tx_sequence.steps %}\n{% if step == issue.tx_sequence.steps[0] and step.input != \"0x\" and step.origin == \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\" %}\nCaller: [CREATOR], calldata: {{ step.calldata }}, {% if step.resolved_input is not none %}decoded_data: {{ step.resolved_input }}, {% endif %}value: {{ step.value }}\n{% else %}\nCaller: {% 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 }}\n{% endif %}\n{% endfor %}\n{% endif %}\n\n{% endfor %}\n{% else %}\nThe analysis was completed successfully. No issues were detected.\n{% endif %}\n"
  },
  {
    "path": "mythril/analysis/templates/report_as_text.jinja2",
    "content": "{% if issues %}\n{% for issue in issues %}\n==== {{ issue.title }} ====\nSWC ID: {{ issue['swc-id'] }}\nSeverity: {{ issue.severity }}\nContract: {{ issue.contract | default(\"Unknown\") }}\n{% if issue.function %}\nFunction name: {{ issue.function }}\n{% endif %}\nPC address: {{ issue.address }}\n{% if issue.min_gas_used or issue.max_gas_used %}\nEstimated Gas Usage: {{ issue.min_gas_used }} - {{ issue.max_gas_used }}\n{% endif %}\n{{ issue.description }}\n--------------------\n{% if issue.filename and issue.lineno %}\nIn file: {{ issue.filename }}:{{ issue.lineno }}\n{% endif %}\n{% if issue.code %}\n\n{{ issue.code }}\n\n--------------------\n{% endif %}\n{% if issue.tx_sequence %}\nInitial State:\n\n{% for key, value in issue.tx_sequence.initialState.accounts.items() %}\nAccount: {% if key == \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\" %}[CREATOR]{% elif key == \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\" %}[ATTACKER]{% else %}[SOMEGUY]{% endif %}, balance: {{value.balance}}, nonce:{{value.nonce}}, storage:{{value.storage}}\n{% endfor %}\n\nTransaction Sequence:\n\n{% for step in issue.tx_sequence.steps %}\n{% if step == issue.tx_sequence.steps[0] and step.address == \"\" and step.origin == \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\" %}\nCaller: [CREATOR], calldata: {{ step.calldata }}, {% if step.resolved_input is not none %}decoded_data: {{ step.resolved_input }}, {% endif %}value: {{ step.value }}\n{% else %}\nCaller: {% 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 }}\n{% endif %}\n{% endfor %}\n{% endif %}\n\n{% endfor %}\n{% else %}\nThe analysis was completed successfully. No issues were detected.\n{% endif %}\n"
  },
  {
    "path": "mythril/analysis/traceexplore.py",
    "content": "\"\"\"This module provides a function to convert a state space into a set of state\nnodes and transition edges.\"\"\"\n\nimport re\n\nfrom z3 import Z3Exception\n\nfrom mythril.laser.ethereum.svm import NodeFlags\nfrom mythril.laser.smt import simplify\n\ncolors = [\n    {\n        \"border\": \"#26996f\",\n        \"background\": \"#2f7e5b\",\n        \"highlight\": {\"border\": \"#fff\", \"background\": \"#28a16f\"},\n    },\n    {\n        \"border\": \"#9e42b3\",\n        \"background\": \"#842899\",\n        \"highlight\": {\"border\": \"#fff\", \"background\": \"#933da6\"},\n    },\n    {\n        \"border\": \"#b82323\",\n        \"background\": \"#991d1d\",\n        \"highlight\": {\"border\": \"#fff\", \"background\": \"#a61f1f\"},\n    },\n    {\n        \"border\": \"#4753bf\",\n        \"background\": \"#3b46a1\",\n        \"highlight\": {\"border\": \"#fff\", \"background\": \"#424db3\"},\n    },\n    {\n        \"border\": \"#26996f\",\n        \"background\": \"#2f7e5b\",\n        \"highlight\": {\"border\": \"#fff\", \"background\": \"#28a16f\"},\n    },\n    {\n        \"border\": \"#9e42b3\",\n        \"background\": \"#842899\",\n        \"highlight\": {\"border\": \"#fff\", \"background\": \"#933da6\"},\n    },\n    {\n        \"border\": \"#b82323\",\n        \"background\": \"#991d1d\",\n        \"highlight\": {\"border\": \"#fff\", \"background\": \"#a61f1f\"},\n    },\n    {\n        \"border\": \"#4753bf\",\n        \"background\": \"#3b46a1\",\n        \"highlight\": {\"border\": \"#fff\", \"background\": \"#424db3\"},\n    },\n]\n\n\ndef get_serializable_statespace(statespace):\n    \"\"\"\n\n    :param statespace:\n    :return:\n    \"\"\"\n    nodes = []\n    edges = []\n\n    color_map = {}\n    i = 0\n    for k in statespace.accounts:\n        color_map[statespace.accounts[k].contract_name] = colors[i]\n        i += 1\n\n    for node_key in statespace.nodes:\n        node = statespace.nodes[node_key]\n\n        code = node.get_cfg_dict()[\"code\"]\n        code = re.sub(\"([0-9a-f]{8})[0-9a-f]+\", lambda m: m.group(1) + \"(...)\", code)\n\n        if NodeFlags.FUNC_ENTRY in node.flags:\n            code = re.sub(\"JUMPDEST\", node.function_name, code)\n\n        code_split = code.split(\"\\\\n\")\n\n        truncated_code = (\n            code\n            if (len(code_split) < 7)\n            else \"\\\\n\".join(code_split[:6]) + \"\\\\n(click to expand +)\"\n        )\n        try:\n            color = color_map[node.get_cfg_dict()[\"contract_name\"]]\n        except KeyError:\n            color = colors[i]\n            i += 1\n            color_map[node.get_cfg_dict()[\"contract_name\"]] = color\n\n        def get_state_accounts(node_state):\n            \"\"\"\n\n            :param node_state:\n            :return:\n            \"\"\"\n            state_accounts = []\n            for key in node_state.accounts:\n                account = node_state.accounts[key].as_dict\n                account.pop(\"code\", None)\n                account[\"balance\"] = str(account[\"balance\"])\n\n                storage = {}\n                for storage_key in account[\"storage\"].printable_storage:\n                    storage[str(storage_key)] = str(account[\"storage\"][storage_key])\n\n                state_accounts.append({\"address\": key, \"storage\": storage})\n            return state_accounts\n\n        states = [\n            {\"machine\": x.mstate.as_dict, \"accounts\": get_state_accounts(x)}\n            for x in node.states\n        ]\n\n        for state in states:\n            state[\"machine\"][\"stack\"] = [str(s) for s in state[\"machine\"][\"stack\"]]\n            state[\"machine\"][\"memory\"] = [\n                str(m)\n                for m in state[\"machine\"][\"memory\"][: len(state[\"machine\"][\"memory\"])]\n            ]\n\n        truncated_code = truncated_code.replace(\"\\\\n\", \"\\n\")\n        code = code.replace(\"\\\\n\", \"\\n\")\n\n        s_node = {\n            \"id\": str(node_key),\n            \"func\": str(node.function_name),\n            \"label\": truncated_code,\n            \"code\": code,\n            \"truncated\": truncated_code,\n            \"states\": states,\n            \"color\": color,\n            \"instructions\": code.split(\"\\n\"),\n        }\n\n        nodes.append(s_node)\n\n    for edge in statespace.edges:\n        if edge.condition is None:\n            label = \"\"\n        else:\n            try:\n                label = str(simplify(edge.condition)).replace(\"\\n\", \"\")\n            except Z3Exception:\n                label = str(edge.condition).replace(\"\\n\", \"\")\n\n        label = re.sub(\n            \"([^_])([\\d]{2}\\d+)\", lambda m: m.group(1) + hex(int(m.group(2))), label\n        )\n\n        s_edge = {\n            \"from\": str(edge.as_dict[\"from\"]),\n            \"to\": str(edge.as_dict[\"to\"]),\n            \"arrows\": \"to\",\n            \"label\": label,\n            \"smooth\": {\"type\": \"cubicBezier\"},\n        }\n\n        edges.append(s_edge)\n\n    return {\"edges\": edges, \"nodes\": nodes}\n"
  },
  {
    "path": "mythril/concolic/__init__.py",
    "content": "from mythril.concolic.concolic_execution import concolic_execution\nfrom mythril.concolic.find_trace import concrete_execution\n"
  },
  {
    "path": "mythril/concolic/concolic_execution.py",
    "content": "from copy import deepcopy\nfrom datetime import datetime\nfrom typing import Any, Dict, List\n\nfrom mythril.concolic.concrete_data import ConcreteData\nfrom mythril.concolic.find_trace import concrete_execution\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.strategy.concolic import ConcolicStrategy\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.ethereum.time_handler import time_handler\nfrom mythril.laser.ethereum.transaction.symbolic import execute_transaction\nfrom mythril.laser.ethereum.transaction.transaction_models import tx_id_manager\nfrom mythril.laser.smt import symbol_factory\nfrom mythril.support.support_args import args\n\n\ndef flip_branches(\n    init_state: WorldState,\n    concrete_data: ConcreteData,\n    jump_addresses: List[str],\n    trace: List,\n) -> List[Dict[str, Dict[str, Any]]]:\n    \"\"\"\n    Flips branches and prints the input required for branch flip\n\n    :param concrete_data: Concrete data\n    :param jump_addresses: Jump addresses to flip\n    :param trace: trace to follow\n    \"\"\"\n    tx_id_manager.restart_counter()\n    output_list = []\n    laser_evm = LaserEVM(\n        execution_timeout=600, use_reachability_check=False, transaction_count=10\n    )\n    laser_evm.open_states = [deepcopy(init_state)]\n    laser_evm.strategy = ConcolicStrategy(\n        work_list=laser_evm.work_list,\n        max_depth=100,\n        trace=trace,\n        flip_branch_addresses=jump_addresses,\n    )\n\n    time_handler.start_execution(laser_evm.execution_timeout)\n    laser_evm.time = datetime.now()\n\n    for transaction in concrete_data[\"steps\"]:\n        execute_transaction(\n            laser_evm,\n            callee_address=transaction[\"address\"],\n            caller_address=symbol_factory.BitVecVal(\n                int(transaction[\"origin\"], 16), 256\n            ),\n            data=transaction[\"input\"][2:],\n        )\n\n    if laser_evm.strategy.results:\n        for addr in jump_addresses:\n            output_list.append(laser_evm.strategy.results[addr])\n    return output_list\n\n\ndef concolic_execution(\n    concrete_data: ConcreteData, jump_addresses: List, solver_timeout=100000\n) -> List[Dict[str, Dict[str, Any]]]:\n    \"\"\"\n    Executes codes and prints input required to cover the branch flips\n    :param input_file: Input file\n    :param jump_addresses: Jump addresses to flip\n    :param solver_timeout: Solver timeout\n\n    \"\"\"\n    init_state, trace = concrete_execution(concrete_data)\n    args.solver_timeout = solver_timeout\n    output_list = flip_branches(\n        init_state=init_state,\n        concrete_data=concrete_data,\n        jump_addresses=jump_addresses,\n        trace=trace,\n    )\n    return output_list\n"
  },
  {
    "path": "mythril/concolic/concrete_data.py",
    "content": "from typing import Dict, List\n\nfrom typing_extensions import TypedDict\n\n\nclass AccountData(TypedDict):\n    balance: str\n    code: str\n    nonce: int\n    storage: dict\n\n\nclass InitialState(TypedDict):\n    accounts: Dict[str, AccountData]\n\n\nclass TransactionData(TypedDict):\n    address: str\n    blockCoinbase: str\n    blockDifficulty: str\n    blockGasLimit: str\n    blockNumber: str\n    blockTime: str\n    calldata: str\n    gasLimit: str\n    gasPrice: str\n    input: str\n    name: str\n    origin: str\n    value: str\n\n\nclass ConcreteData(TypedDict):\n    initialState: InitialState\n    steps: List[TransactionData]\n"
  },
  {
    "path": "mythril/concolic/find_trace.py",
    "content": "import binascii\nfrom copy import deepcopy\nfrom datetime import datetime\nfrom typing import List, Tuple\n\nfrom mythril.concolic.concrete_data import ConcreteData\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.state.account import Account\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.ethereum.time_handler import time_handler\nfrom mythril.laser.ethereum.transaction.concolic import execute_transaction\nfrom mythril.laser.ethereum.transaction.transaction_models import tx_id_manager\nfrom mythril.laser.plugin.loader import LaserPluginLoader\nfrom mythril.laser.plugin.plugins import TraceFinderBuilder\nfrom mythril.laser.smt import symbol_factory\nfrom mythril.support.support_args import args\n\n\ndef setup_concrete_initial_state(concrete_data: ConcreteData) -> WorldState:\n    \"\"\"\n    Sets up concrete initial state\n    :param concrete_data: Concrete data\n    :return: initialised world state\n    \"\"\"\n    world_state = WorldState()\n    for address, details in concrete_data[\"initialState\"][\"accounts\"].items():\n        account = Account(address, concrete_storage=True)\n        account.code = Disassembly(details[\"code\"][2:])\n        account.nonce = details[\"nonce\"]\n        if isinstance(details[\"storage\"], str):\n            details[\"storage\"] = eval(details[\"storage\"])  # type: ignore\n        for key, value in details[\"storage\"].items():\n            key_bitvec = symbol_factory.BitVecVal(int(key, 16), 256)\n            account.storage[key_bitvec] = symbol_factory.BitVecVal(int(value, 16), 256)\n        world_state.put_account(account)\n        account.set_balance(int(details[\"balance\"], 16))\n    return world_state\n\n\ndef concrete_execution(concrete_data: ConcreteData) -> Tuple[WorldState, List]:\n    \"\"\"\n    Executes code concretely to find the path to be followed by concolic executor\n    :param concrete_data: Concrete data\n    :return: path trace\n    \"\"\"\n    args.pruning_factor = 1\n    tx_id_manager.restart_counter()\n    init_state = setup_concrete_initial_state(concrete_data)\n    laser_evm = LaserEVM(execution_timeout=1000)\n    laser_evm.open_states = [deepcopy(init_state)]\n    plugin_loader = LaserPluginLoader()\n    plugin_loader.load(TraceFinderBuilder())\n    time_handler.start_execution(laser_evm.execution_timeout)\n\n    laser_evm.time = datetime.now()\n    plugin_loader.instrument_virtual_machine(laser_evm, None)\n    for transaction in concrete_data[\"steps\"]:\n        execute_transaction(\n            laser_evm,\n            callee_address=transaction[\"address\"],\n            caller_address=symbol_factory.BitVecVal(\n                int(transaction[\"origin\"], 16), 256\n            ),\n            origin_address=symbol_factory.BitVecVal(\n                int(transaction[\"origin\"], 16), 256\n            ),\n            gas_limit=int(transaction.get(\"gasLimit\", \"0x9999999999999999999999\"), 16),\n            data=binascii.a2b_hex(transaction[\"input\"][2:]),\n            gas_price=int(transaction.get(\"gasPrice\", \"0x773594000\"), 16),\n            value=int(transaction[\"value\"], 16),\n            track_gas=False,\n        )\n\n    tx_id_manager.restart_counter()\n    return init_state, plugin_loader.plugin_list[\"MythX Trace Finder\"].tx_trace  # type: ignore\n"
  },
  {
    "path": "mythril/config.ini",
    "content": "[defaults]\ndynamic_loading = infura\ninfura_id = \n\n"
  },
  {
    "path": "mythril/disassembler/__init__.py",
    "content": ""
  },
  {
    "path": "mythril/disassembler/asm.py",
    "content": "\"\"\"This module contains various helper classes and functions to deal with EVM\ncode disassembly.\"\"\"\n\nimport re\n\ntry:\n    from collections.abc import Generator\nexcept ImportError:\n    from collections import Generator\n\nfrom functools import lru_cache\n\nfrom mythril.ethereum import util\nfrom mythril.support.opcodes import ADDRESS, ADDRESS_OPCODE_MAPPING, OPCODES\n\nregex_PUSH = re.compile(r\"^PUSH(\\d*)$\")\n\n\nclass EvmInstruction:\n    \"\"\"Model to hold the information of the disassembly.\"\"\"\n\n    def __init__(self, address, op_code, argument=None):\n        self.address = address\n        self.op_code = op_code\n        self.argument = argument\n\n    def to_dict(self) -> dict:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        result = {\"address\": self.address, \"opcode\": self.op_code}\n        if self.argument:\n            result[\"argument\"] = self.argument\n        return result\n\n\ndef instruction_list_to_easm(instruction_list: list) -> str:\n    \"\"\"Convert a list of instructions into an easm op code string.\n\n    :param instruction_list:\n    :return:\n    \"\"\"\n    result = \"\"\n\n    for instruction in instruction_list:\n        result += \"{} {}\".format(instruction[\"address\"], instruction[\"opcode\"])\n        if \"argument\" in instruction:\n            result += \" \" + instruction[\"argument\"]\n        result += \"\\n\"\n\n    return result\n\n\ndef get_opcode_from_name(operation_name: str) -> int:\n    \"\"\"Get an op code based on its name.\n\n    :param operation_name:\n    :return:\n    \"\"\"\n    if operation_name in OPCODES:\n        return OPCODES[operation_name][ADDRESS]\n    raise RuntimeError(\"Unknown opcode\")\n\n\ndef find_op_code_sequence(pattern: list, instruction_list: list) -> Generator:\n    \"\"\"Returns all indices in instruction_list that point to instruction\n    sequences following a pattern.\n\n    :param pattern: The pattern to look for, e.g. [[\"PUSH1\", \"PUSH2\"], [\"EQ\"]] where [\"PUSH1\", \"EQ\"] satisfies pattern\n    :param instruction_list: List of instructions to look in\n    :return: Indices to the instruction sequences\n    \"\"\"\n    for i in range(0, len(instruction_list) - len(pattern) + 1):\n        if is_sequence_match(pattern, instruction_list, i):\n            yield i\n\n\ndef is_sequence_match(pattern: list, instruction_list: list, index: int) -> bool:\n    \"\"\"Checks if the instructions starting at index follow a pattern.\n\n    :param pattern: List of lists describing a pattern, e.g. [[\"PUSH1\", \"PUSH2\"], [\"EQ\"]] where [\"PUSH1\", \"EQ\"] satisfies pattern\n    :param instruction_list: List of instructions\n    :param index: Index to check for\n    :return: Pattern matched\n    \"\"\"\n    for index, pattern_slot in enumerate(pattern, start=index):\n        try:\n            if not instruction_list[index][\"opcode\"] in pattern_slot:\n                return False\n        except IndexError:\n            return False\n    return True\n\n\nlru_cache(maxsize=2**10)\n\n\ndef disassemble(bytecode) -> list:\n    \"\"\"Disassembles evm bytecode and returns a list of instructions.\n\n    :param bytecode:\n    :return:\n    \"\"\"\n    instruction_list = []\n    address = 0\n    length = len(bytecode)\n\n    if isinstance(bytecode, str):\n        bytecode = util.safe_decode(bytecode)\n        length = len(bytecode)\n        part_code = bytecode[-43:]\n    else:\n        try:\n            part_code = bytes(bytecode[-43:])\n        except TypeError:\n            part_code = \"\"\n    try:\n        if \"bzzr\" in str(part_code):\n            # ignore swarm hash\n            length -= 43\n    except ValueError:\n        pass\n\n    while address < length:\n        try:\n            op_code = ADDRESS_OPCODE_MAPPING[bytecode[address]]\n        except KeyError:\n            instruction_list.append(EvmInstruction(address, \"INVALID\"))\n            address += 1\n            continue\n\n        current_instruction = EvmInstruction(address, op_code)\n\n        match = re.search(regex_PUSH, op_code)\n        if match:\n            argument_bytes = bytecode[address + 1 : address + 1 + int(match.group(1))]\n            if isinstance(argument_bytes, bytes):\n                current_instruction.argument = \"0x\" + argument_bytes.hex()\n            else:\n                current_instruction.argument = argument_bytes\n            address += int(match.group(1))\n\n        instruction_list.append(current_instruction)\n        address += 1\n\n    # We use a to_dict() here for compatibility reasons\n    return [element.to_dict() for element in instruction_list]\n"
  },
  {
    "path": "mythril/disassembler/disassembly.py",
    "content": "\"\"\"This module contains the class used to represent disassembly code.\"\"\"\n\nfrom typing import Dict, List, Tuple\n\nfrom mythril.disassembler import asm\nfrom mythril.ethereum import util\nfrom mythril.support.signatures import SignatureDB\n\n\nclass Disassembly(object):\n    \"\"\"Disassembly class.\n\n    Stores bytecode, and its disassembly.\n    Additionally it will gather the following information on the existing functions in the disassembled code:\n    - function hashes\n    - function name to entry point mapping\n    - function entry point to function name mapping\n    \"\"\"\n\n    def __init__(self, code: str) -> None:\n        \"\"\"\n\n        :param code:\n        \"\"\"\n        self.bytecode = code\n        if isinstance(code, str):\n            self.instruction_list = asm.disassemble(util.safe_decode(code))\n        else:\n            self.instruction_list = asm.disassemble(code)\n        self.func_hashes: List[str] = []\n        self.function_name_to_address: Dict[str, int] = {}\n        self.address_to_function_name: Dict[int, str] = {}\n        self.assign_bytecode(bytecode=code)\n\n    def assign_bytecode(self, bytecode):\n        self.bytecode = bytecode\n        # open from default locations\n        # control if you want to have online signature hash lookups\n        signatures = SignatureDB()\n        self.instruction_list = asm.disassemble(bytecode)\n        # Need to take from PUSH1 to PUSH4 because solc seems to remove excess 0s at the beginning for optimizing\n        jump_table_indices = asm.find_op_code_sequence(\n            [(\"PUSH1\", \"PUSH2\", \"PUSH3\", \"PUSH4\"), (\"EQ\",)], self.instruction_list\n        )\n\n        for index in jump_table_indices:\n            function_hash, jump_target, function_name = get_function_info(\n                index, self.instruction_list, signatures\n            )\n            self.func_hashes.append(function_hash)\n            if jump_target is not None and function_name is not None:\n                self.function_name_to_address[function_name] = jump_target\n                self.address_to_function_name[jump_target] = function_name\n\n    def get_easm(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return asm.instruction_list_to_easm(self.instruction_list)\n\n\ndef get_function_info(\n    index: int, instruction_list: list, signature_database: SignatureDB\n) -> Tuple[str, int, str]:\n    \"\"\"Finds the function information for a call table entry Solidity uses the\n    first 4 bytes of the calldata to indicate which function the message call\n    should execute The generated code that directs execution to the correct\n    function looks like this:\n\n    - PUSH function_hash\n    - EQ\n    - PUSH entry_point\n    - JUMPI\n\n    This function takes an index that points to the first instruction, and from that finds out the function hash,\n    function entry and the function name.\n\n    :param index: Start of the entry pattern\n    :param instruction_list: Instruction list for the contract that is being analyzed\n    :param signature_database: Database used to map function hashes to their respective function names\n    :return: function hash, function entry point, function name\n    \"\"\"\n\n    # Append with missing 0s at the beginning\n    if isinstance(instruction_list[index][\"argument\"], tuple):\n        try:\n            function_hash = \"0x\" + bytes(\n                instruction_list[index][\"argument\"]\n            ).hex().rjust(8, \"0\")\n        except AttributeError:\n            raise ValueError(\n                \"Mythril currently does not support symbolic function signatures\"\n            )\n    else:\n        function_hash = \"0x\" + instruction_list[index][\"argument\"][2:].rjust(8, \"0\")\n\n    function_names = signature_database.get(function_hash)\n\n    if len(function_names) > 0:\n        function_name = \" or \".join(set(function_names))\n    else:\n        function_name = \"_function_\" + function_hash\n\n    try:\n        offset = instruction_list[index + 2][\"argument\"]\n        if isinstance(offset, tuple):\n            offset = bytes(offset).hex()\n        entry_point = int(offset, 16)\n    except (KeyError, IndexError):\n        return function_hash, None, None\n\n    return function_hash, entry_point, function_name\n"
  },
  {
    "path": "mythril/ethereum/__init__.py",
    "content": ""
  },
  {
    "path": "mythril/ethereum/evmcontract.py",
    "content": "\"\"\"This module contains the class representing EVM contracts, aka Smart\nContracts.\"\"\"\n\nimport logging\nimport re\n\nimport persistent\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.support.support_utils import get_code_hash, sha3\n\nlog = logging.getLogger(__name__)\n\n\nclass EVMContract(persistent.Persistent):\n    \"\"\"This class represents an address with associated code (Smart\n    Contract).\"\"\"\n\n    def __init__(self, code=\"\", creation_code=\"\", name=\"Unknown\"):\n        \"\"\"Create a new contract.\n\n        Workaround: We currently do not support compile-time linking.\n        Dynamic contract addresses of the format __[contract-name]_____________ are replaced with a generic address\n        Apply this for creation_code & code\n\n        :param code:\n        :param creation_code:\n        :param name:\n        \"\"\"\n        creation_code = re.sub(r\"(_{2}.{38})\", \"aa\" * 20, creation_code)\n        code = re.sub(r\"(_{2}.{38})\", \"aa\" * 20, code)\n        self.creation_code = creation_code\n        self.name = name\n        self.code = code\n        self.disassembly = Disassembly(code)\n\n        self.creation_disassembly = Disassembly(creation_code)\n\n    @property\n    def bytecode_hash(self):\n        \"\"\"\n\n        :return: runtime bytecode hash\n        \"\"\"\n        return get_code_hash(self.code)\n\n    @property\n    def creation_bytecode_hash(self):\n        \"\"\"\n\n        :return: Creation bytecode hash\n        \"\"\"\n        return get_code_hash(self.creation_code)\n\n    def as_dict(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return {\n            \"name\": self.name,\n            \"code\": self.code,\n            \"creation_code\": self.creation_code,\n            \"disassembly\": self.disassembly,\n        }\n\n    def get_easm(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self.disassembly.get_easm()\n\n    def get_creation_easm(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self.creation_disassembly.get_easm()\n\n    def matches_expression(self, expression):\n        \"\"\"\n\n        :param expression:\n        :return:\n        \"\"\"\n        str_eval = \"\"\n        easm_code = None\n\n        tokens = re.split(r\"\\s+(and|or|not)\\s+\", expression, re.IGNORECASE)\n\n        for token in tokens:\n            if token in (\"and\", \"or\", \"not\"):\n                str_eval += \" \" + token + \" \"\n                continue\n\n            m = re.match(r\"^code#([a-zA-Z0-9\\s,\\[\\]]+)#\", token)\n\n            if m:\n                if easm_code is None:\n                    easm_code = self.get_easm()\n\n                code = m.group(1).replace(\",\", \"\\\\n\")\n                str_eval += '\"' + code + '\" in easm_code'\n                continue\n\n            m = re.match(r\"^func#([a-zA-Z0-9\\s_,(\\\\)\\[\\]]+)#$\", token)\n\n            if m:\n                sign_hash = \"0x\" + sha3(m.group(1))[:4].hex()\n                str_eval += '\"' + sign_hash + '\" in self.disassembly.func_hashes'\n\n        return eval(str_eval.strip())\n"
  },
  {
    "path": "mythril/ethereum/interface/__init__.py",
    "content": ""
  },
  {
    "path": "mythril/ethereum/interface/rpc/__init__.py",
    "content": ""
  },
  {
    "path": "mythril/ethereum/interface/rpc/base_client.py",
    "content": "\"\"\"This module provides a basic RPC interface client.\n\nThis code is adapted from: https://github.com/ConsenSys/ethjsonrpc\n\"\"\"\n\nfrom abc import abstractmethod\n\nfrom .constants import BLOCK_TAG_LATEST, BLOCK_TAGS\nfrom .utils import hex_to_dec, validate_block\n\nGETH_DEFAULT_RPC_PORT = 8545\nETH_DEFAULT_RPC_PORT = 8545\nPARITY_DEFAULT_RPC_PORT = 8545\nPYETHAPP_DEFAULT_RPC_PORT = 4000\nMAX_RETRIES = 3\nJSON_MEDIA_TYPE = \"application/json\"\n\n\nclass BaseClient(object):\n    \"\"\"The base RPC client class.\"\"\"\n\n    @abstractmethod\n    def _call(self, method, params=None, _id=1):\n        \"\"\"TODO: documentation\n\n        :param method:\n        :param params:\n        :param _id:\n        :return:\n        \"\"\"\n\n        pass\n\n    def eth_coinbase(self):\n        \"\"\"TODO: documentation\n\n        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_coinbase\n\n        TESTED\n        \"\"\"\n        return self._call(\"eth_coinbase\")\n\n    def eth_blockNumber(self):\n        \"\"\"TODO: documentation\n\n        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_blocknumber\n\n        TESTED\n        \"\"\"\n        return hex_to_dec(self._call(\"eth_blockNumber\"))\n\n    def eth_getBalance(self, address=None, block=BLOCK_TAG_LATEST):\n        \"\"\"TODO: documentation\n\n        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getbalance\n\n        TESTED\n        \"\"\"\n        address = address or self.eth_coinbase()\n        block = validate_block(block)\n        return hex_to_dec(self._call(\"eth_getBalance\", [address, block]))\n\n    def eth_getStorageAt(self, address=None, position=0, block=BLOCK_TAG_LATEST):\n        \"\"\"TODO: documentation\n\n        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getstorageat\n\n        TESTED\n        \"\"\"\n        block = validate_block(block)\n        return self._call(\"eth_getStorageAt\", [address, hex(position), block])\n\n    def eth_getCode(self, address, default_block=BLOCK_TAG_LATEST):\n        \"\"\"TODO: documentation\n\n        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getcode\n\n        NEEDS TESTING\n        \"\"\"\n        if isinstance(default_block, str):\n            if default_block not in BLOCK_TAGS:\n                raise ValueError\n        return self._call(\"eth_getCode\", [address, default_block])\n\n    def eth_getBlockByNumber(self, block=BLOCK_TAG_LATEST, tx_objects=True):\n        \"\"\"TODO: documentation\n\n        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_getblockbynumber\n\n        TESTED\n        \"\"\"\n        block = validate_block(block)\n        return self._call(\"eth_getBlockByNumber\", [block, tx_objects])\n\n    def eth_getTransactionReceipt(self, tx_hash):\n        \"\"\"TODO: documentation\n\n        https://github.com/ethereum/wiki/wiki/JSON-RPC#eth_gettransactionreceipt\n\n        TESTED\n        \"\"\"\n        return self._call(\"eth_getTransactionReceipt\", [tx_hash])\n"
  },
  {
    "path": "mythril/ethereum/interface/rpc/client.py",
    "content": "\"\"\"This module contains a basic Ethereum RPC client.\n\nThis code is adapted from: https://github.com/ConsenSys/ethjsonrpc\n\"\"\"\n\nimport json\nimport logging\n\nimport requests\nfrom requests.adapters import HTTPAdapter\nfrom requests.exceptions import ConnectionError as RequestsConnectionError\n\nfrom .base_client import BaseClient\nfrom .exceptions import (\n    BadJsonError,\n    BadResponseError,\n    BadStatusCodeError,\n    ConnectionError,\n)\n\nlog = logging.getLogger(__name__)\n\nGETH_DEFAULT_RPC_PORT = 8545\nETH_DEFAULT_RPC_PORT = 8545\nPARITY_DEFAULT_RPC_PORT = 8545\nPYETHAPP_DEFAULT_RPC_PORT = 4000\nMAX_RETRIES = 3\nJSON_MEDIA_TYPE = \"application/json\"\n\n\nclass EthJsonRpc(BaseClient):\n    \"\"\"Ethereum JSON-RPC client class.\"\"\"\n\n    def __init__(self, host=\"localhost\", port=GETH_DEFAULT_RPC_PORT, tls=False):\n        \"\"\"\n\n        :param host:\n        :param port:\n        :param tls:\n        \"\"\"\n        self.host = host\n        self.port = port\n        self.tls = tls\n        self.session = requests.Session()\n        self.session.mount(self.host, HTTPAdapter(max_retries=MAX_RETRIES))\n\n    def _call(self, method, params=None, _id=1):\n        \"\"\"\n\n        :param method:\n        :param params:\n        :param _id:\n        :return:\n        \"\"\"\n        params = params or []\n        data = {\"jsonrpc\": \"2.0\", \"method\": method, \"params\": params, \"id\": _id}\n        scheme = \"http\"\n        if self.tls:\n            scheme += \"s\"\n        if self.host:\n            if self.port:\n                url = \"{}://{}:{}\".format(scheme, self.host, self.port)\n            else:\n                url = \"{}://{}\".format(scheme, self.host)\n\n        else:\n            url = \"{}\".format(scheme)\n\n        headers = {\"Content-Type\": JSON_MEDIA_TYPE}\n        log.debug(\"rpc send: %s\" % json.dumps(data))\n        try:\n            r = self.session.post(url, headers=headers, data=json.dumps(data))\n        except RequestsConnectionError:\n            raise ConnectionError\n        if r.status_code / 100 != 2:\n            raise BadStatusCodeError(r.status_code)\n        try:\n            response = r.json()\n            log.debug(\"rpc response: %s\" % response)\n        except ValueError:\n            raise BadJsonError(r.text)\n        try:\n            return response[\"result\"]\n        except KeyError:\n            raise BadResponseError(response)\n\n    def close(self):\n        \"\"\"Close the RPC client's session.\"\"\"\n        self.session.close()\n"
  },
  {
    "path": "mythril/ethereum/interface/rpc/constants.py",
    "content": "\"\"\"This file contains constants used used by the Ethereum JSON RPC\ninterface.\"\"\"\n\nBLOCK_TAG_EARLIEST = \"earliest\"\nBLOCK_TAG_LATEST = \"latest\"\nBLOCK_TAG_PENDING = \"pending\"\nBLOCK_TAGS = (BLOCK_TAG_EARLIEST, BLOCK_TAG_LATEST, BLOCK_TAG_PENDING)\n"
  },
  {
    "path": "mythril/ethereum/interface/rpc/exceptions.py",
    "content": "\"\"\"This module contains exceptions regarding JSON-RPC communication.\"\"\"\n\n\nclass EthJsonRpcError(Exception):\n    \"\"\"The JSON-RPC base exception type.\"\"\"\n\n    pass\n\n\nclass ConnectionError(EthJsonRpcError):\n    \"\"\"An RPC exception denoting there was an error in connecting to the RPC\n    instance.\"\"\"\n\n    pass\n\n\nclass BadStatusCodeError(EthJsonRpcError):\n    \"\"\"An RPC exception denoting a bad status code returned by the RPC\n    instance.\"\"\"\n\n    pass\n\n\nclass BadJsonError(EthJsonRpcError):\n    \"\"\"An RPC exception denoting that the RPC instance returned a bad JSON\n    object.\"\"\"\n\n    pass\n\n\nclass BadResponseError(EthJsonRpcError):\n    \"\"\"An RPC exception denoting that the RPC instance returned a bad\n    response.\"\"\"\n\n    pass\n"
  },
  {
    "path": "mythril/ethereum/interface/rpc/utils.py",
    "content": "\"\"\"This module contains various utility functions regarding the RPC data format\nand validation.\"\"\"\n\nfrom .constants import BLOCK_TAGS\n\n\ndef hex_to_dec(x):\n    \"\"\"Convert hex to decimal.\n\n    :param x:\n    :return:\n    \"\"\"\n    return int(x, 16)\n\n\ndef clean_hex(d):\n    \"\"\"Convert decimal to hex and remove the \"L\" suffix that is appended to\n    large numbers.\n\n    :param d:\n    :return:\n    \"\"\"\n    return hex(d).rstrip(\"L\")\n\n\ndef validate_block(block):\n    \"\"\"\n\n    :param block:\n    :return:\n    \"\"\"\n    if isinstance(block, str):\n        if block not in BLOCK_TAGS:\n            raise ValueError(\"invalid block tag\")\n    if isinstance(block, int):\n        block = hex(block)\n    return block\n\n\ndef wei_to_ether(wei):\n    \"\"\"Convert wei to ether.\n\n    :param wei:\n    :return:\n    \"\"\"\n    return 1.0 * wei / 10**18\n\n\ndef ether_to_wei(ether):\n    \"\"\"Convert ether to wei.\n\n    :param ether:\n    :return:\n    \"\"\"\n    return ether * 10**18\n"
  },
  {
    "path": "mythril/ethereum/util.py",
    "content": "\"\"\"This module contains various utility functions regarding unit conversion and\nsolc integration.\"\"\"\n\nimport binascii\nimport json\nimport logging\nimport os\nimport platform\nimport re\nimport typing\nfrom json.decoder import JSONDecodeError\nfrom subprocess import PIPE, Popen\nfrom typing import Tuple\n\nimport semantic_version as semver\nimport solcx\nfrom pyparsing import Combine, Optional, Regex, Word\nfrom requests.exceptions import ConnectionError\n\nfrom mythril.exceptions import CompilerError\nfrom mythril.support.support_args import args\n\nlog = logging.getLogger(__name__)\n\n\ndef safe_decode(hex_encoded_string):\n    \"\"\"\n\n    :param hex_encoded_string:\n    :return:\n    \"\"\"\n    if hex_encoded_string.startswith(\"0x\"):\n        return bytes.fromhex(hex_encoded_string[2:])\n    else:\n        return bytes.fromhex(hex_encoded_string)\n\n\ndef get_solc_json(file, solc_binary=\"solc\", solc_settings_json=None):\n    \"\"\"\n\n    :param file:\n    :param solc_binary:\n    :param solc_settings_json:\n    :return:\n    \"\"\"\n    if args.solc_args is None:\n        cmd = [solc_binary, \"--standard-json\", \"--allow-paths\", \".,/\"]\n    else:\n        cmd = [solc_binary, \"--standard-json\"] + args.solc_args.split()\n\n    settings = {}\n    if solc_settings_json:\n        with open(solc_settings_json) as f:\n            settings = json.load(f)\n    if \"optimizer\" not in settings:\n        settings.update({\"optimizer\": {\"enabled\": False}})\n\n    settings.update(\n        {\n            \"outputSelection\": {\n                \"*\": {\n                    \"\": [\"ast\"],\n                    \"*\": [\n                        \"metadata\",\n                        \"evm.bytecode\",\n                        \"evm.deployedBytecode\",\n                        \"evm.methodIdentifiers\",\n                    ],\n                }\n            },\n        }\n    )\n\n    input_json = json.dumps(\n        {\n            \"language\": \"Solidity\",\n            \"sources\": {file: {\"urls\": [file]}},\n            \"settings\": settings,\n        }\n    )\n\n    try:\n        p = Popen(cmd, stdin=PIPE, stdout=PIPE, stderr=PIPE)\n        stdout, stderr = p.communicate(bytes(input_json, \"utf8\"))\n\n    except FileNotFoundError:\n        raise CompilerError(\n            \"Compiler not found. Make sure that solc is installed and in PATH, or set the SOLC environment variable.\"\n        )\n\n    out = stdout.decode(\"UTF-8\")\n\n    try:\n        result = json.loads(out)\n    except JSONDecodeError as e:\n        log.error(f\"Encountered a decode error.\\n stdout:{out}\\n stderr: {stderr}\")\n        raise e\n\n    for error in result.get(\"errors\", []):\n        if error[\"severity\"] == \"error\":\n            raise CompilerError(\n                \"Solc experienced a fatal error.\\n\\n%s\" % error[\"formattedMessage\"]\n            )\n\n    return result\n\n\ndef get_random_address():\n    \"\"\"\n\n    :return:\n    \"\"\"\n    return binascii.b2a_hex(os.urandom(20)).decode(\"UTF-8\")\n\n\ndef get_indexed_address(index):\n    \"\"\"\n\n    :param index:\n    :return:\n    \"\"\"\n    return \"0x\" + (hex(index)[2:] * 40)\n\n\ndef solc_exists(version):\n    \"\"\"\n\n    :param version:\n    :return:\n    \"\"\"\n\n    if platform.system() == \"Darwin\":\n        solcx.import_installed_solc()\n    solcx.install_solc(\"v\" + version)\n    solcx.set_solc_version(\"v\" + version)\n    solc_binary = solcx.install.get_executable()\n    return solc_binary\n\n\ndef parse_pragma(solidity_code):\n    lt = Word(\"<\")\n    gtr = Word(\">\")\n    eq = Word(\"=\")\n    carrot = Word(\"^\")\n    version = Regex(r\"\\s*[0-9]+\\s*\\.\\s*[0-9]+\\s*(\\.\\s*[0-9]+)?\")\n    inequality = Optional(\n        eq | (Combine(gtr + Optional(eq)) | Combine(lt + Optional(eq)))\n    )\n    min_version = Optional(carrot | inequality) + version\n    max_version = Optional(inequality + version)\n    pragma = Word(\"pragma\") + Word(\"solidity\") + min_version + Optional(max_version)\n    result = pragma.parseString(solidity_code)\n    min_inequality = result[2] if result[2] in [\">\", \"<\", \">=\", \"<=\", \"=\"] else \"\"\n    min_carrot = result[2] if result[2] == \"^\" else \"\"\n    min_version = result[3] if min_carrot != \"\" or min_inequality != \"\" else result[2]\n    return {\n        \"min_carrot\": min_carrot,\n        \"min_inequality\": min_inequality,\n        \"min_version\": min_version,\n        \"max_inequality\": result[4] if len(result) > 4 else None,\n        \"max_version\": result[5] if len(result) > 5 else None,\n    }\n\n\ntry:\n    all_versions = solcx.get_installable_solc_versions()\nexcept ConnectionError:\n    # No internet, trying to proceed with installed compilers\n    all_versions = solcx.get_installed_solc_versions()\n\n\nVOID_START = re.compile(\"//|/\\\\*|\\\"|'\")\nQUOTE_END = re.compile(\"(?<!\\\\\\\\)'\")\nDQUOTE_END = re.compile('(?<!\\\\\\\\)\"')\n\n\ndef remove_comments_strings(program: str) -> str:\n    \"\"\"Return program without Solidity comments and strings\n\n    :param str program: Solidity program with lines separated by \\\\n\n    :return: program with strings emptied and comments removed\n    :rtype: str\n    \"\"\"\n    result = \"\"\n    while True:\n        match_start_of_void = VOID_START.search(program)\n        if not match_start_of_void:\n            result += program\n            break\n        else:\n            result += program[: match_start_of_void.start()]\n            if match_start_of_void[0] == \"//\":\n                end = program.find(\"\\n\", match_start_of_void.end())\n                program = \"\" if end == -1 else program[end:]\n            elif match_start_of_void[0] == \"/*\":\n                end = program.find(\"*/\", match_start_of_void.end())\n                result += \" \"\n                program = \"\" if end == -1 else program[end + 2 :]\n            else:\n                if match_start_of_void[0] == \"'\":\n                    match_end_of_string = QUOTE_END.search(\n                        program[match_start_of_void.end() :]\n                    )\n                else:\n                    match_end_of_string = DQUOTE_END.search(\n                        program[match_start_of_void.end() :]\n                    )\n                if not match_end_of_string:  # unclosed string\n                    break\n                program = program[\n                    match_start_of_void.end() + match_end_of_string.end() :\n                ]\n    return result\n\n\ndef extract_version_line(program: typing.Optional[str]) -> typing.Optional[str]:\n    if not program:\n        return None\n\n    # normalize line endings\n    if \"\\n\" in program:\n        program = program.replace(\"\\r\", \"\")\n    else:\n        program = program.replace(\"\\r\", \"\\n\")\n\n    # extract regular pragma\n    program_wo_comments_strings = remove_comments_strings(program)\n    for line in program_wo_comments_strings.split(\"\\n\"):\n        if \"pragma solidity\" in line:\n            return line.rstrip()\n\n    # extract pragma from comments\n    for line in program.split(\"\\n\"):\n        if \"pragma solidity\" in line:\n            return line.rstrip()\n\n    return None\n\n\ndef extract_version(program: typing.Optional[str]) -> typing.Optional[str]:\n    version_line = extract_version_line(program)\n    if not version_line:\n        return None\n\n    assert \"pragma solidity\" in version_line\n    if version_line[-1] == \";\":\n        version_line = version_line[:-1]\n    version_line = version_line[version_line.find(\"pragma\") :]\n    pragma_dict = parse_pragma(version_line)\n\n    min_inequality = pragma_dict.get(\"min_inequality\", None)\n    max_inequality = pragma_dict.get(\"max_inequality\", None)\n    min_version = pragma_dict.get(\"min_version\", None)\n    if min_version is not None:\n        min_version = min_version.replace(\" \", \"\").replace(\"\\t\", \"\")\n    max_version = pragma_dict.get(\"max_version\", None)\n    if max_version is not None:\n        max_version = max_version.replace(\" \", \"\").replace(\"\\t\", \"\")\n\n    version_spec = (\n        f\"{min_inequality}{min_version},{max_inequality}{max_version}\"\n        if max_version\n        else min_version\n    )\n    version_constraint = semver.SimpleSpec(version_spec)\n\n    for version in all_versions:\n        semver_version = semver.Version(str(version))\n        if semver_version in version_constraint:\n            if \"0.5.17\" in str(semver_version):\n                # Solidity 0.5.17 Does not compile in a lot of cases.\n                continue\n            return str(semver_version)\n\n\ndef extract_binary(file: str) -> Tuple[str, str]:\n    program = None\n    with open(file) as f:\n        program = f.read()\n\n    version = extract_version(program)\n\n    if version is None:\n        return os.environ.get(\"SOLC\") or \"solc\", version\n    return solc_exists(version), version\n"
  },
  {
    "path": "mythril/exceptions.py",
    "content": "\"\"\"This module contains general exceptions used by Mythril.\"\"\"\n\n\nclass MythrilBaseException(Exception):\n    \"\"\"The Mythril exception base type.\"\"\"\n\n    pass\n\n\nclass CompilerError(MythrilBaseException):\n    \"\"\"A Mythril exception denoting an error during code compilation.\"\"\"\n\n    pass\n\n\nclass UnsatError(MythrilBaseException):\n    \"\"\"A Mythril exception denoting the unsatisfiability of a series of\n    constraints.\"\"\"\n\n    pass\n\n\nclass SolverTimeOutException(UnsatError):\n    \"\"\"A Mythril exception denoting the unsatisfiability of a series of\n    constraints.\"\"\"\n\n    pass\n\n\nclass NoContractFoundError(MythrilBaseException):\n    \"\"\"A Mythril exception denoting that a given contract file was not\n    found.\"\"\"\n\n    pass\n\n\nclass CriticalError(MythrilBaseException):\n    \"\"\"A Mythril exception denoting an unknown critical error has been\n    encountered.\"\"\"\n\n    pass\n\n\nclass DetectorNotFoundError(MythrilBaseException):\n    \"\"\"A Mythril exception denoting attempted usage of a non-existant\n    detection module.\"\"\"\n\n    pass\n\n\nclass IllegalArgumentError(ValueError):\n    \"\"\"The argument used does not exist\"\"\"\n\n    pass\n"
  },
  {
    "path": "mythril/interfaces/__init__.py",
    "content": ""
  },
  {
    "path": "mythril/interfaces/cli.py",
    "content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\"\"\"mythril.py: Bug hunting on the Ethereum blockchain\n\nhttp://www.github.com/ConsenSys/mythril\n\"\"\"\n\nimport argparse\nimport json\nimport logging\nimport os\nimport sys\nimport traceback\nfrom argparse import ArgumentParser, Namespace, RawTextHelpFormatter\nfrom ast import literal_eval\n\nimport coloredlogs\n\nfrom mythril.__version__ import __version__ as VERSION\nfrom mythril.analysis.module import ModuleLoader\nfrom mythril.analysis.report import Report\nfrom mythril.concolic import concolic_execution\nfrom mythril.exceptions import (\n    CriticalError,\n    DetectorNotFoundError,\n)\nfrom mythril.laser.ethereum.transaction.symbolic import ACTORS\nfrom mythril.mythril import MythrilAnalyzer, MythrilConfig, MythrilDisassembler\nfrom mythril.plugin.loader import MythrilPluginLoader\n\n# Initialise core Mythril Component\n_ = MythrilPluginLoader()\n\nANALYZE_LIST = (\"analyze\", \"a\")\nDISASSEMBLE_LIST = (\"disassemble\", \"d\")\nFOUNDRY_LIST = (\"foundry\", \"f\")\n\nCONCOLIC_LIST = (\"concolic\", \"c\")\nSAFE_FUNCTIONS_COMMAND = \"safe-functions\"\nREAD_STORAGE_COMNAND = \"read-storage\"\nFUNCTION_TO_HASH_COMMAND = \"function-to-hash\"\nHASH_TO_ADDRESS_COMMAND = \"hash-to-address\"\nLIST_DETECTORS_COMMAND = \"list-detectors\"\nVERSION_COMMAND = \"version\"\nHELP_COMMAND = \"help\"\n\nlog = logging.getLogger(__name__)\n\nCOMMAND_LIST = (\n    ANALYZE_LIST\n    + DISASSEMBLE_LIST\n    + FOUNDRY_LIST\n    + CONCOLIC_LIST\n    + (\n        READ_STORAGE_COMNAND,\n        SAFE_FUNCTIONS_COMMAND,\n        FUNCTION_TO_HASH_COMMAND,\n        HASH_TO_ADDRESS_COMMAND,\n        LIST_DETECTORS_COMMAND,\n        VERSION_COMMAND,\n        HELP_COMMAND,\n    )\n)\n\n\ndef exit_with_error(format_, message):\n    \"\"\"\n    Exits with error\n    :param format_: The format of the message\n    :param message: message\n    \"\"\"\n    if format_ == \"text\" or format_ == \"markdown\":\n        log.error(message)\n    elif format_ == \"json\":\n        result = {\"success\": False, \"error\": str(message), \"issues\": []}\n        print(json.dumps(result))\n    else:\n        result = [\n            {\n                \"issues\": [],\n                \"sourceType\": \"\",\n                \"sourceFormat\": \"\",\n                \"sourceList\": [],\n                \"meta\": {\"logs\": [{\"level\": \"error\", \"hidden\": True, \"msg\": message}]},\n            }\n        ]\n        print(json.dumps(result))\n    sys.exit()\n\n\ndef get_runtime_input_parser() -> ArgumentParser:\n    \"\"\"\n    Returns Parser which handles input\n    :return: Parser which handles input\n    \"\"\"\n    parser = ArgumentParser(add_help=False)\n    parser.add_argument(\n        \"-a\",\n        \"--address\",\n        help=\"pull contract from the blockchain\",\n        metavar=\"CONTRACT_ADDRESS\",\n    )\n    parser.add_argument(\n        \"--bin-runtime\",\n        action=\"store_true\",\n        help=\"Only when -c or -f is used. Consider the input bytecode as binary runtime code, default being the contract creation bytecode.\",\n    )\n    return parser\n\n\ndef get_creation_input_parser() -> ArgumentParser:\n    \"\"\"\n    Returns Parser which handles input\n    :return: Parser which handles input\n    \"\"\"\n    parser = ArgumentParser(add_help=False)\n    parser.add_argument(\n        \"-c\",\n        \"--code\",\n        help='hex-encoded bytecode string (\"6060604052...\")',\n        metavar=\"BYTECODE\",\n    )\n    parser.add_argument(\n        \"-f\",\n        \"--codefile\",\n        help=\"file containing hex-encoded bytecode string\",\n        metavar=\"BYTECODEFILE\",\n        type=argparse.FileType(\"r\"),\n    )\n    return parser\n\n\ndef get_safe_functions_parser() -> ArgumentParser:\n    \"\"\"\n    Returns Parser which handles checking for safe functions\n    :return: Parser which handles checking for safe functions\n    \"\"\"\n    parser = ArgumentParser(add_help=False)\n    parser.add_argument(\n        \"-c\",\n        \"--code\",\n        help='hex-encoded bytecode string (\"6060604052...\")',\n        metavar=\"BYTECODE\",\n    )\n    parser.add_argument(\n        \"-f\",\n        \"--codefile\",\n        help=\"file containing hex-encoded bytecode string\",\n        metavar=\"BYTECODEFILE\",\n        type=argparse.FileType(\"r\"),\n    )\n    return parser\n\n\ndef get_output_parser() -> ArgumentParser:\n    \"\"\"\n    Get parser which handles output\n    :return: Parser which handles output\n    \"\"\"\n    parser = argparse.ArgumentParser(add_help=False)\n    parser.add_argument(\n        \"-o\",\n        \"--outform\",\n        choices=[\"text\", \"markdown\", \"json\", \"jsonv2\"],\n        default=\"text\",\n        help=\"report output format\",\n        metavar=\"<text/markdown/json/jsonv2>\",\n    )\n    return parser\n\n\ndef get_rpc_parser() -> ArgumentParser:\n    \"\"\"\n    Get parser which handles RPC flags\n    :return: Parser which handles rpc inputs\n    \"\"\"\n    parser = argparse.ArgumentParser(add_help=False)\n    parser.add_argument(\n        \"--rpc\",\n        help=\"custom RPC settings\",\n        metavar=\"HOST:PORT / ganache / infura-[network_name]\",\n        default=\"infura-mainnet\",\n    )\n    parser.add_argument(\n        \"--rpctls\", type=bool, default=False, help=\"RPC connection over TLS\"\n    )\n    parser.add_argument(\"--infura-id\", help=\"set infura id for onchain analysis\")\n\n    return parser\n\n\ndef get_utilities_parser() -> ArgumentParser:\n    \"\"\"\n    Get parser which handles utilities flags\n    :return: Parser which handles utility flags\n    \"\"\"\n    parser = argparse.ArgumentParser(add_help=False)\n    parser.add_argument(\n        \"--solc-json\",\n        help=\"Json for the optional 'settings' parameter of solc's standard-json input\",\n    )\n    parser.add_argument(\n        \"--solc-args\",\n        help=\"\"\"Provide solc args, example: --solc-args \"--allow-paths --include-path /root_folder/node_modules --base-path /home/contracts\" \"\"\",\n        type=str,\n    )\n    parser.add_argument(\n        \"--solv\",\n        help=\"specify solidity compiler version. If not present, will try to install it (Experimental)\",\n        metavar=\"SOLV\",\n    )\n    return parser\n\n\ndef create_concolic_parser(parser: ArgumentParser) -> ArgumentParser:\n    \"\"\"\n    Get parser which handles arguments for concolic branch flipping\n    \"\"\"\n    parser.add_argument(\n        \"input\",\n        help=\"The input jsonv2 file with concrete data\",\n    )\n    parser.add_argument(\n        \"--branches\",\n        help=\"branch addresses to be flipped. usage: --branches 34,6f8,16a\",\n        required=True,\n        metavar=\"BRANCH\",\n    )\n    parser.add_argument(\n        \"--solver-timeout\",\n        type=int,\n        default=100000,\n        help=\"The maximum amount of time(in milli seconds) the solver spends for queries from analysis modules\",\n    )\n    return parser\n\n\ndef main() -> None:\n    \"\"\"The main CLI interface entry point.\"\"\"\n\n    rpc_parser = get_rpc_parser()\n    utilities_parser = get_utilities_parser()\n    runtime_input_parser = get_runtime_input_parser()\n    creation_input_parser = get_creation_input_parser()\n    output_parser = get_output_parser()\n\n    parser = argparse.ArgumentParser(\n        description=\"Security analysis of Ethereum smart contracts\"\n    )\n    parser.add_argument(\"--epic\", action=\"store_true\", help=argparse.SUPPRESS)\n    parser.add_argument(\n        \"-v\", type=int, help=\"log level (0-5)\", metavar=\"LOG_LEVEL\", default=2\n    )\n\n    subparsers = parser.add_subparsers(dest=\"command\", help=\"Commands\")\n    safe_function_parser = subparsers.add_parser(\n        SAFE_FUNCTIONS_COMMAND,\n        help=\"Check functions which are completely safe using symbolic execution\",\n        parents=[\n            rpc_parser,\n            utilities_parser,\n            creation_input_parser,\n            runtime_input_parser,\n            output_parser,\n        ],\n        formatter_class=RawTextHelpFormatter,\n    )\n    analyzer_parser = subparsers.add_parser(\n        ANALYZE_LIST[0],\n        help=\"Triggers the analysis of the smart contract\",\n        parents=[\n            rpc_parser,\n            utilities_parser,\n            creation_input_parser,\n            runtime_input_parser,\n            output_parser,\n        ],\n        aliases=ANALYZE_LIST[1:],\n        formatter_class=RawTextHelpFormatter,\n    )\n    create_safe_functions_parser(safe_function_parser)\n    create_analyzer_parser(analyzer_parser)\n\n    disassemble_parser = subparsers.add_parser(\n        DISASSEMBLE_LIST[0],\n        help=\"Disassembles the smart contract\",\n        aliases=DISASSEMBLE_LIST[1:],\n        parents=[\n            rpc_parser,\n            utilities_parser,\n            creation_input_parser,\n            runtime_input_parser,\n        ],\n        formatter_class=RawTextHelpFormatter,\n    )\n    create_disassemble_parser(disassemble_parser)\n\n    concolic_parser = subparsers.add_parser(\n        CONCOLIC_LIST[0],\n        help=\"Runs concolic execution to flip the desired branches\",\n        aliases=CONCOLIC_LIST[1:],\n        parents=[],\n        formatter_class=RawTextHelpFormatter,\n    )\n    create_concolic_parser(concolic_parser)\n\n    foundry_parser = subparsers.add_parser(\n        FOUNDRY_LIST[0],\n        help=\"Triggers the analysis of the smart contract\",\n        parents=[\n            rpc_parser,\n            utilities_parser,\n            output_parser,\n        ],\n        aliases=FOUNDRY_LIST[1:],\n        formatter_class=RawTextHelpFormatter,\n    )\n\n    _ = subparsers.add_parser(\n        LIST_DETECTORS_COMMAND,\n        parents=[output_parser],\n        help=\"Lists available detection modules\",\n    )\n    read_storage_parser = subparsers.add_parser(\n        READ_STORAGE_COMNAND,\n        help=\"Retrieves storage slots from a given address through rpc\",\n        parents=[rpc_parser],\n    )\n    contract_func_to_hash = subparsers.add_parser(\n        FUNCTION_TO_HASH_COMMAND, help=\"Returns the hash signature of the function\"\n    )\n    contract_hash_to_addr = subparsers.add_parser(\n        HASH_TO_ADDRESS_COMMAND,\n        help=\"converts the hashes in the blockchain to ethereum address\",\n    )\n    subparsers.add_parser(\n        VERSION_COMMAND, parents=[output_parser], help=\"Outputs the version\"\n    )\n\n    create_read_storage_parser(read_storage_parser)\n    create_hash_to_addr_parser(contract_hash_to_addr)\n    create_func_to_hash_parser(contract_func_to_hash)\n    create_foundry_parser(foundry_parser)\n    subparsers.add_parser(HELP_COMMAND, add_help=False)\n\n    # Get config values\n\n    args = parser.parse_args()\n    parse_args_and_execute(parser=parser, args=args)\n\n\ndef create_disassemble_parser(parser: ArgumentParser):\n    \"\"\"\n    Modify parser to handle disassembly\n    :param parser:\n    :return:\n    \"\"\"\n    # Using nargs=* would the implementation below for getting code for both disassemble and analyze\n    parser.add_argument(\n        \"solidity_files\",\n        nargs=\"*\",\n        help=\"Inputs file name and contract name. Currently supports a single contract\\n\"\n        \"usage: file1.sol:OptionalContractName\",\n    )\n\n\ndef create_read_storage_parser(read_storage_parser: ArgumentParser):\n    \"\"\"\n    Modify parser to handle storage slots\n    :param read_storage_parser:\n    :return:\n    \"\"\"\n\n    read_storage_parser.add_argument(\n        \"storage_slots\",\n        help=\"read state variables from storage index\",\n        metavar=\"INDEX,NUM_SLOTS,[array] / mapping,INDEX,[KEY1, KEY2...]\",\n    )\n    read_storage_parser.add_argument(\n        \"address\", help=\"contract address\", metavar=\"ADDRESS\"\n    )\n\n\ndef create_func_to_hash_parser(parser: ArgumentParser):\n    \"\"\"\n    Modify parser to handle func_to_hash command\n    :param parser:\n    :return:\n    \"\"\"\n    parser.add_argument(\n        \"func_name\", help=\"calculate function signature hash\", metavar=\"SIGNATURE\"\n    )\n\n\ndef create_hash_to_addr_parser(hash_parser: ArgumentParser):\n    \"\"\"\n    Modify parser to handle hash_to_addr command\n    :param hash_parser:\n    :return:\n    \"\"\"\n    hash_parser.add_argument(\n        \"hash\", help=\"Find the address from hash\", metavar=\"FUNCTION_NAME\"\n    )\n\n\ndef add_graph_commands(parser: ArgumentParser):\n    commands = parser.add_argument_group(\"commands\")\n    commands.add_argument(\"-g\", \"--graph\", help=\"generate a control flow graph\")\n    commands.add_argument(\n        \"-j\",\n        \"--statespace-json\",\n        help=\"dumps the statespace json\",\n        metavar=\"OUTPUT_FILE\",\n    )\n\n\ndef create_safe_functions_parser(parser: ArgumentParser):\n    \"\"\"\n    The duplication exists between safe-functions and analyze as some of them have different default values.\n    :param parser: Parser\n    \"\"\"\n    parser.add_argument(\n        \"solidity_files\",\n        nargs=\"*\",\n        help=\"Inputs file name and contract name. \\n\"\n        \"usage: file1.sol:OptionalContractName file2.sol file3.sol:OptionalContractName\",\n    )\n\n    options = parser.add_argument_group(\"options\")\n    add_analysis_args(options)\n\n\ndef add_analysis_args(options):\n    \"\"\"\n    Adds arguments for analysis\n\n    :param options: Analysis Options\n    \"\"\"\n\n    options.add_argument(\n        \"-m\",\n        \"--modules\",\n        help=\"Comma-separated list of security analysis modules\",\n        metavar=\"MODULES\",\n    )\n    options.add_argument(\n        \"--max-depth\",\n        type=int,\n        default=128,\n        help=\"Maximum recursion depth for symbolic execution\",\n    )\n    options.add_argument(\n        \"--call-depth-limit\",\n        type=int,\n        default=3,\n        help=\"Maximum call depth limit for symbolic execution\",\n    )\n\n    options.add_argument(\n        \"--strategy\",\n        choices=[\"dfs\", \"bfs\", \"naive-random\", \"weighted-random\", \"pending\"],\n        default=\"bfs\",\n        help=\"Symbolic execution strategy\",\n    )\n    options.add_argument(\n        \"--transaction-sequences\",\n        type=str,\n        default=None,\n        help=\"The possible transaction sequences to be executed. \"\n        \"Like [[func_hash1, func_hash2], [func_hash2, func_hash3]] where the first transaction is constrained \"\n        \"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.\",\n    )\n    options.add_argument(\n        \"--beam-search\",\n        type=int,\n        default=None,\n        help=\"Beam search with with\",\n    )\n    options.add_argument(\n        \"-b\",\n        \"--loop-bound\",\n        type=int,\n        default=3,\n        help=\"Bound loops at n iterations\",\n        metavar=\"N\",\n    )\n    options.add_argument(\n        \"-t\",\n        \"--transaction-count\",\n        type=int,\n        default=2,\n        help=\"Maximum number of transactions issued by laser\",\n    )\n    options.add_argument(\n        \"--execution-timeout\",\n        type=int,\n        default=3600,\n        help=\"The amount of seconds to spend on symbolic execution\",\n    )\n    options.add_argument(\n        \"--solver-timeout\",\n        type=int,\n        default=25000,\n        help=\"The maximum amount of time(in milli seconds) the solver spends for queries from analysis modules\",\n    )\n    options.add_argument(\n        \"--create-timeout\",\n        type=int,\n        default=30,\n        help=\"The amount of seconds to spend on the initial contract creation\",\n    )\n    options.add_argument(\n        \"--parallel-solving\",\n        action=\"store_true\",\n        help=\"Enable solving z3 queries in parallel\",\n    )\n    options.add_argument(\n        \"--solver-log\",\n        help=\"Path to the directory for solver log\",\n        metavar=\"SOLVER_LOG\",\n    )\n    options.add_argument(\n        \"--no-onchain-data\",\n        action=\"store_true\",\n        help=\"Don't attempt to retrieve contract code, variables and balances from the blockchain\",\n    )\n    options.add_argument(\n        \"--pruning-factor\",\n        type=float,\n        default=None,\n        help=\"Checks for reachability at the rate of <pruning-factor> (range 0-1.0). Where 1.0 would mean checking for every execution\",\n    )\n    options.add_argument(\n        \"--unconstrained-storage\",\n        action=\"store_true\",\n        help=\"Default storage value is symbolic, turns off the on-chain storage loading\",\n    )\n\n    options.add_argument(\n        \"--phrack\", action=\"store_true\", help=\"Phrack-style call graph\"\n    )\n    options.add_argument(\n        \"--enable-physics\", action=\"store_true\", help=\"Enable graph physics simulation\"\n    )\n    options.add_argument(\n        \"-q\",\n        \"--query-signature\",\n        action=\"store_true\",\n        help=\"Lookup function signatures through www.4byte.directory\",\n    )\n    options.add_argument(\n        \"--disable-iprof\", action=\"store_true\", help=\"Disable the instruction profiler\"\n    )\n    options.add_argument(\n        \"--disable-dependency-pruning\",\n        action=\"store_true\",\n        help=\"Deactivate dependency-based pruning\",\n    )\n    options.add_argument(\n        \"--disable-coverage-strategy\",\n        action=\"store_true\",\n        help=\"Disable coverage based search strategy\",\n    )\n    options.add_argument(\n        \"--disable-mutation-pruner\",\n        action=\"store_true\",\n        help=\"Disable mutation pruner\",\n    )\n    options.add_argument(\n        \"--enable-state-merging\",\n        action=\"store_true\",\n        help=\"Enable State Merging\",\n    )\n    options.add_argument(\n        \"--enable-summaries\",\n        action=\"store_true\",\n        help=\"Enable using symbolic summaries\",\n    )\n    options.add_argument(\n        \"--custom-modules-directory\",\n        help=\"Designates a separate directory to search for custom analysis modules\",\n        metavar=\"CUSTOM_MODULES_DIRECTORY\",\n    )\n    options.add_argument(\n        \"--attacker-address\",\n        help=\"Designates a specific attacker address to use during analysis\",\n        metavar=\"ATTACKER_ADDRESS\",\n    )\n    options.add_argument(\n        \"--creator-address\",\n        help=\"Designates a specific creator address to use during analysis\",\n        metavar=\"CREATOR_ADDRESS\",\n    )\n\n\ndef create_analyzer_parser(analyzer_parser: ArgumentParser):\n    \"\"\"\n    Modify parser to handle analyze command\n    :param analyzer_parser:\n    :return:\n    \"\"\"\n    analyzer_parser.add_argument(\n        \"solidity_files\",\n        nargs=\"*\",\n        help=\"Inputs file name and contract name. \\n\"\n        \"usage: file1.sol:OptionalContractName file2.sol file3.sol:OptionalContractName\",\n    )\n    add_graph_commands(analyzer_parser)\n    options = analyzer_parser.add_argument_group(\"options\")\n    add_analysis_args(options)\n\n\ndef create_foundry_parser(foundry_parser: ArgumentParser):\n    add_graph_commands(foundry_parser)\n    options = foundry_parser.add_argument_group(\"options\")\n    add_analysis_args(options)\n\n\ndef validate_args(args: Namespace):\n    \"\"\"\n    Validate cli args\n    :param args:\n    :return:\n    \"\"\"\n    if hasattr(args, \"v\"):\n        if 0 <= args.v < 6:\n            log_levels = [\n                logging.NOTSET,\n                logging.CRITICAL,\n                logging.ERROR,\n                logging.WARNING,\n                logging.INFO,\n                logging.DEBUG,\n            ]\n            coloredlogs.install(\n                fmt=\"%(name)s [%(levelname)s]: %(message)s\", level=log_levels[args.v]\n            )\n        else:\n            exit_with_error(\n                args.outform, \"Invalid -v value, you can find valid values in usage\"\n            )\n\n    if args.command in DISASSEMBLE_LIST and len(args.solidity_files) > 1:\n        exit_with_error(\"text\", \"Only a single arg is supported for using disassemble\")\n\n    if getattr(args, \"transaction_sequences\", None):\n        if getattr(args, \"disable_dependency_pruning\", False) is False:\n            log.warning(\n                \"It is advised to disable dependency pruning (use the flag --disable-dependency-pruning) when specifying transaction sequences.\"\n            )\n        try:\n            args.transaction_sequences = literal_eval(str(args.transaction_sequences))\n        except ValueError:\n            exit_with_error(\n                args.outform,\n                \"The transaction sequence is in incorrect format, It should be \"\n                \"[list of possible function hashes in 1st transaction, \"\n                \"list of possible func hashes in 2nd tx, ...] \"\n                \"If any list is empty then all possible functions are considered for that transaction.\"\n                \"Use -1 as a proxy for fallback() and -2 for receive() function.\",\n            )\n        if len(args.transaction_sequences) != args.transaction_count:\n            args.transaction_count = len(args.transaction_sequences)\n\n\ndef set_config(args: Namespace):\n    \"\"\"\n    Set config based on args\n    :param args:\n    :return: modified config\n    \"\"\"\n    config = MythrilConfig()\n    if getattr(args, \"infura_id\", None):\n        config.set_api_infura_id(args.infura_id)\n    if (args.command in ANALYZE_LIST and not args.no_onchain_data) and not (\n        args.rpc or args.i\n    ):\n        config.set_api_from_config_path()\n\n    if getattr(args, \"rpc\", None):\n        # Establish RPC connection if necessary\n        config.set_api_rpc(rpc=args.rpc, rpctls=args.rpctls)\n\n    return config\n\n\ndef load_code(disassembler: MythrilDisassembler, args: Namespace):\n    \"\"\"\n    Loads code into disassembly and returns address\n    :param disassembler:\n    :param args:\n    :return: Address\n    \"\"\"\n\n    address = None\n    if getattr(args, \"code\", None):\n        # Load from bytecode\n        code = args.code[2:] if args.code.startswith(\"0x\") else args.code\n        address, _ = disassembler.load_from_bytecode(code, args.bin_runtime)\n    elif getattr(args, \"codefile\", None):\n        bytecode = \"\".join([l.strip() for l in args.codefile if len(l.strip()) > 0])\n        bytecode = bytecode[2:] if bytecode.startswith(\"0x\") else bytecode\n        address, _ = disassembler.load_from_bytecode(bytecode, args.bin_runtime)\n    elif getattr(args, \"address\", None):\n        # Get bytecode from a contract address\n        address, _ = disassembler.load_from_address(args.address)\n    elif getattr(args, \"solidity_files\", None):\n        # Compile Solidity source file(s)\n        if args.command in ANALYZE_LIST and args.graph and len(args.solidity_files) > 1:\n            exit_with_error(\n                args.outform,\n                \"Cannot generate call graphs from multiple input files. Please do it one at a time.\",\n            )\n        address, _ = disassembler.load_from_solidity(\n            args.solidity_files\n        )  # list of files\n    elif args.command in FOUNDRY_LIST:\n        address, _ = disassembler.load_from_foundry()\n\n    else:\n        exit_with_error(\n            getattr(args, \"outform\", \"text\"),\n            \"No input bytecode. Please provide EVM code via -c BYTECODE, -a ADDRESS, -f BYTECODE_FILE or <SOLIDITY_FILE>\",\n        )\n    return address\n\n\ndef print_function_report(myth_disassembler: MythrilDisassembler, report: Report):\n    \"\"\"\n    Prints the function report\n    :param report: Mythril's report\n    :return:\n    \"\"\"\n    contract_data = {}\n    for contract in myth_disassembler.contracts:\n        contract_data[contract.name] = list(\n            set(contract.disassembly.address_to_function_name.values())\n        )\n\n    for issue in report.issues.values():\n        if issue.function in contract_data[issue.contract]:\n            contract_data[issue.contract].remove(issue.function)\n\n    for contract, function_list in contract_data.items():\n        print(f\"Contract {contract}: \\n\")\n        print(\n            f\"\"\"{len(function_list)} functions are deemed safe in this contract: {\", \".join(function_list)}\\n\\n\"\"\"\n        )\n\n\ndef execute_command(\n    disassembler: MythrilDisassembler,\n    address: str,\n    parser: ArgumentParser,\n    args: Namespace,\n):\n    \"\"\"\n    Execute command\n    :param disassembler:\n    :param address:\n    :param parser:\n    :param args:\n    :return:\n    \"\"\"\n    if getattr(args, \"beam_search\", None):\n        strategy = f\"beam-search: {args.beam_search}\"\n    else:\n        strategy = getattr(args, \"strategy\", \"dfs\")\n\n    if args.command == READ_STORAGE_COMNAND:\n        storage = disassembler.get_state_variable_from_storage(\n            address=address,\n            params=[a.strip() for a in args.storage_slots.strip().split(\",\")],\n        )\n        print(storage)\n\n    elif args.command in DISASSEMBLE_LIST:\n        if disassembler.contracts[0].code:\n            print(\"Runtime Disassembly: \\n\" + disassembler.contracts[0].get_easm())\n        if disassembler.contracts[0].creation_code:\n            print(\"Disassembly: \\n\" + disassembler.contracts[0].get_creation_easm())\n\n    elif args.command == SAFE_FUNCTIONS_COMMAND:\n        args.no_onchain_data = args.disable_dependency_pruning = (\n            args.unconstrained_storage\n        ) = True\n        args.pruning_factor = 1\n        function_analyzer = MythrilAnalyzer(\n            strategy=strategy, disassembler=disassembler, address=address, cmd_args=args\n        )\n        try:\n            report = function_analyzer.fire_lasers(\n                modules=(\n                    [m.strip() for m in args.modules.strip().split(\",\")]\n                    if args.modules\n                    else None\n                ),\n                transaction_count=1,\n            )\n            print_function_report(disassembler, report)\n        except DetectorNotFoundError as e:\n            exit_with_error(\"text\", format(e))\n        except CriticalError as e:\n            exit_with_error(\"text\", \"Analysis error encountered: \" + format(e))\n\n    elif args.command in ANALYZE_LIST + FOUNDRY_LIST:\n        analyzer = MythrilAnalyzer(\n            strategy=strategy, disassembler=disassembler, address=address, cmd_args=args\n        )\n\n        if not disassembler.contracts:\n            exit_with_error(\n                args.outform, \"input files do not contain any valid contracts\"\n            )\n\n        if args.attacker_address:\n            try:\n                ACTORS[\"ATTACKER\"] = args.attacker_address\n            except ValueError:\n                exit_with_error(args.outform, \"Attacker address is invalid\")\n\n        if args.creator_address:\n            try:\n                ACTORS[\"CREATOR\"] = args.creator_address\n            except ValueError:\n                exit_with_error(args.outform, \"Creator address is invalid\")\n\n        if args.graph:\n            html = analyzer.graph_html(\n                contract=analyzer.contracts[0],\n                enable_physics=args.enable_physics,\n                phrackify=args.phrack,\n                transaction_count=args.transaction_count,\n            )\n\n            try:\n                with open(args.graph, \"w\") as f:\n                    f.write(html)\n            except Exception as e:\n                exit_with_error(args.outform, \"Error saving graph: \" + str(e))\n\n        elif args.statespace_json:\n            if not analyzer.contracts:\n                exit_with_error(\n                    args.outform, \"input files do not contain any valid contracts\"\n                )\n\n            statespace = analyzer.dump_statespace(contract=analyzer.contracts[0])\n\n            try:\n                with open(args.statespace_json, \"w\") as f:\n                    json.dump(statespace, f)\n            except Exception as e:\n                exit_with_error(args.outform, \"Error saving json: \" + str(e))\n\n        else:\n            try:\n                report = analyzer.fire_lasers(\n                    modules=(\n                        [m.strip() for m in args.modules.strip().split(\",\")]\n                        if args.modules\n                        else None\n                    ),\n                    transaction_count=args.transaction_count,\n                )\n\n                outputs = {\n                    \"json\": report.as_json(),\n                    \"jsonv2\": report.as_swc_standard_format(),\n                    \"text\": report.as_text(),\n                    \"markdown\": report.as_markdown(),\n                }\n                print(outputs[args.outform])\n                if len(report.issues) > 0:\n                    exit(1)\n                else:\n                    exit(0)\n            except DetectorNotFoundError as e:\n                exit_with_error(args.outform, format(e))\n            except CriticalError as e:\n                exit_with_error(\n                    args.outform, \"Analysis error encountered: \" + format(e)\n                )\n\n    else:\n        parser.print_help()\n\n\ndef contract_hash_to_address(args: Namespace):\n    \"\"\"\n    prints the hash from function signature\n    :param args:\n    :return:\n    \"\"\"\n    print(MythrilDisassembler.hash_for_function_signature(args.func_name))\n    sys.exit()\n\n\ndef parse_args_and_execute(parser: ArgumentParser, args: Namespace) -> None:\n    \"\"\"\n    Parses the arguments\n    :param parser: The parser\n    :param args: The args\n    \"\"\"\n\n    if args.epic:\n        path = os.path.dirname(os.path.realpath(__file__))\n        sys.argv.remove(\"--epic\")\n        os.system(\" \".join(sys.argv) + \" | python3 \" + path + \"/epic.py\")\n        sys.exit()\n\n    if args.command not in COMMAND_LIST or args.command is None:\n        parser.print_help()\n        sys.exit()\n\n    if args.command == VERSION_COMMAND:\n        if args.outform == \"json\":\n            print(json.dumps({\"version_str\": VERSION}))\n        else:\n            print(\"Mythril version {}\".format(VERSION))\n        sys.exit()\n\n    if args.command == LIST_DETECTORS_COMMAND:\n        modules = []\n        for module in ModuleLoader().get_detection_modules():\n            modules.append({\"classname\": type(module).__name__, \"title\": module.name})\n        if args.outform == \"json\":\n            print(json.dumps(modules))\n        else:\n            for module_data in modules:\n                print(\"{}: {}\".format(module_data[\"classname\"], module_data[\"title\"]))\n        sys.exit()\n\n    if args.command == HELP_COMMAND:\n        parser.print_help()\n        sys.exit()\n\n    if args.command in CONCOLIC_LIST:\n        _ = MythrilConfig.init_mythril_dir()\n        with open(args.input) as f:\n            concrete_data = json.load(f)\n        output_list = concolic_execution(\n            concrete_data, args.branches.split(\",\"), args.solver_timeout\n        )\n        json.dump(output_list, sys.stdout, indent=4)\n        sys.exit()\n\n    # Parse cmdline args\n    validate_args(args)\n    try:\n        if args.command == FUNCTION_TO_HASH_COMMAND:\n            contract_hash_to_address(args)\n        config = set_config(args)\n        solc_json = getattr(args, \"solc_json\", None)\n        solv = getattr(args, \"solv\", None)\n        solc_args = getattr(args, \"solc_args\", None)\n        disassembler = MythrilDisassembler(\n            eth=config.eth,\n            solc_version=solv,\n            solc_settings_json=solc_json,\n            solc_args=solc_args,\n        )\n\n        address = load_code(disassembler, args)\n        execute_command(\n            disassembler=disassembler, address=address, parser=parser, args=args\n        )\n    except CriticalError as ce:\n        exit_with_error(getattr(args, \"outform\", \"text\"), str(ce))\n    except Exception:\n        exit_with_error(getattr(args, \"outform\", \"text\"), traceback.format_exc())\n\n\nif __name__ == \"__main__\":\n    main()\n"
  },
  {
    "path": "mythril/interfaces/epic.py",
    "content": "\"\"\"Don't ask.\"\"\"\n\n#!/usr/bin/env python\n#\n# \"THE BEER-WARE LICENSE\" (Revision 43~maze)\n#\n# <maze@pyth0n.org> wrote these files. As long as you retain this notice you\n# can do whatever you want with this stuff. If we meet some day, and you think\n# this stuff is worth it, you can buy me a beer in return.\n\n# https://github.com/tehmaze/lolcat\n\nimport argparse\nimport atexit\nimport math\nimport os\nimport random\nimport re\nimport sys\nimport time\n\nPY3 = sys.version_info >= (3,)\n\n\n# Reset terminal colors at exit\ndef reset():\n    \"\"\"\"\"\"\n    sys.stdout.write(\"\\x1b[0m\")\n    sys.stdout.flush()\n\n\natexit.register(reset)\n\n\nSTRIP_ANSI = re.compile(r\"\\x1b\\[(\\d+)(;\\d+)?(;\\d+)?[m|K]\")\nCOLOR_ANSI = (\n    (0x00, 0x00, 0x00),\n    (0xCD, 0x00, 0x00),\n    (0x00, 0xCD, 0x00),\n    (0xCD, 0xCD, 0x00),\n    (0x00, 0x00, 0xEE),\n    (0xCD, 0x00, 0xCD),\n    (0x00, 0xCD, 0xCD),\n    (0xE5, 0xE5, 0xE5),\n    (0x7F, 0x7F, 0x7F),\n    (0xFF, 0x00, 0x00),\n    (0x00, 0xFF, 0x00),\n    (0xFF, 0xFF, 0x00),\n    (0x5C, 0x5C, 0xFF),\n    (0xFF, 0x00, 0xFF),\n    (0x00, 0xFF, 0xFF),\n    (0xFF, 0xFF, 0xFF),\n)\n\n\nclass LolCat(object):\n    \"\"\"Cats lel.\"\"\"\n\n    def __init__(self, mode=256, output=sys.stdout):\n        self.mode = mode\n        self.output = output\n\n    def _distance(self, rgb1, rgb2):\n        return sum(map(lambda c: (c[0] - c[1]) ** 2, zip(rgb1, rgb2)))\n\n    def ansi(self, rgb):\n        \"\"\"\n\n        :param rgb:\n        :return:\n        \"\"\"\n        r, g, b = rgb\n\n        if self.mode in (8, 16):\n            colors = COLOR_ANSI[: self.mode]\n            matches = [\n                (self._distance(c, map(int, rgb)), i) for i, c in enumerate(colors)\n            ]\n            matches.sort()\n            color = matches[0][1]\n\n            return \"3%d\" % (color,)\n        else:\n            gray_possible = True\n            sep = 2.5\n\n            while gray_possible:\n                if r < sep or g < sep or b < sep:\n                    gray = r < sep and g < sep and b < sep\n                    gray_possible = False\n\n                sep += 42.5\n\n            if gray:\n                color = 232 + int(float(sum(rgb) / 33.0))\n            else:\n                color = sum(\n                    [16]\n                    + [\n                        int(6 * float(val) / 256) * mod\n                        for val, mod in zip(rgb, [36, 6, 1])\n                    ]\n                )\n\n            return \"38;5;%d\" % (color,)\n\n    def wrap(self, *codes):\n        \"\"\"\n\n        :param codes:\n        :return:\n        \"\"\"\n        return \"\\x1b[%sm\" % (\"\".join(codes),)\n\n    def rainbow(self, freq, i):\n        \"\"\"\n\n        :param freq:\n        :param i:\n        :return:\n        \"\"\"\n        r = math.sin(freq * i) * 127 + 128\n        g = math.sin(freq * i + 2 * math.pi / 3) * 127 + 128\n        b = math.sin(freq * i + 4 * math.pi / 3) * 127 + 128\n        return [r, g, b]\n\n    def cat(self, fd, options):\n        \"\"\"\n\n        :param fd:\n        :param options:\n        \"\"\"\n        if options.animate:\n            self.output.write(\"\\x1b[?25l\")\n\n        for line in fd:\n            options.os += 1\n            self.println(line, options)\n\n        if options.animate:\n            self.output.write(\"\\x1b[?25h\")\n\n    def println(self, s, options):\n        \"\"\"\n\n        :param s:\n        :param options:\n        \"\"\"\n        s = s.rstrip()\n        if options.force or self.output.isatty():\n            s = STRIP_ANSI.sub(\"\", s)\n\n        if options.animate:\n            self.println_ani(s, options)\n        else:\n            self.println_plain(s, options)\n\n        self.output.write(\"\\n\")\n        self.output.flush()\n\n    def println_ani(self, s, options):\n        \"\"\"\n\n        :param s:\n        :param options:\n        :return:\n        \"\"\"\n        if not s:\n            return\n\n        for _ in range(1, options.duration):\n            self.output.write(\"\\x1b[%dD\" % (len(s),))\n            self.output.flush()\n            options.os += options.spread\n            self.println_plain(s, options)\n            time.sleep(1.0 / options.speed)\n\n    def println_plain(self, s, options):\n        \"\"\"\n\n        :param s:\n        :param options:\n        \"\"\"\n        for i, c in enumerate(s if PY3 else s.decode(options.charset_py2, \"replace\")):\n            rgb = self.rainbow(options.freq, options.os + i / options.spread)\n            self.output.write(\n                \"\".join(\n                    [\n                        self.wrap(self.ansi(rgb)),\n                        c if PY3 else c.encode(options.charset_py2, \"replace\"),\n                    ]\n                )\n            )\n\n\ndef detect_mode(term_hint=\"xterm-256color\"):\n    \"\"\"Poor-mans color mode detection.\"\"\"\n    if \"ANSICON\" in os.environ:\n        return 16\n    elif os.environ.get(\"ConEmuANSI\", \"OFF\") == \"ON\":\n        return 256\n    else:\n        term = os.environ.get(\"TERM\", term_hint)\n        if term.endswith(\"-256color\") or term in (\"xterm\", \"screen\"):\n            return 256\n        elif term.endswith(\"-color\") or term in (\"rxvt\",):\n            return 16\n        else:\n            return 256  # optimistic default\n\n\ndef run():\n    \"\"\"Main entry point.\"\"\"\n\n    parser = argparse.ArgumentParser(usage=r\"%prog [<options>] [file ...]\")\n    parser.add_argument(\n        \"-p\", \"--spread\", type=float, default=3.0, help=\"Rainbow spread\"\n    )\n    parser.add_argument(\n        \"-F\", \"--freq\", type=float, default=0.1, help=\"Rainbow frequency\"\n    )\n    parser.add_argument(\"-S\", \"--seed\", type=int, default=0, help=\"Rainbow seed\")\n    parser.add_argument(\n        \"-a\",\n        \"--animate\",\n        action=\"store_true\",\n        default=False,\n        help=\"Enable psychedelics\",\n    )\n    parser.add_argument(\n        \"-d\", \"--duration\", type=int, default=12, help=\"Animation duration\"\n    )\n    parser.add_argument(\n        \"-s\", \"--speed\", type=float, default=20.0, help=\"Animation speed\"\n    )\n    parser.add_argument(\n        \"-f\",\n        \"--force\",\n        action=\"store_true\",\n        default=False,\n        help=\"Force colour even when stdout is not a tty\",\n    )\n\n    parser.add_argument(\n        \"-3\", action=\"store_const\", dest=\"mode\", const=8, help=\"Force 3 bit colour mode\"\n    )\n    parser.add_argument(\n        \"-4\",\n        action=\"store_const\",\n        dest=\"mode\",\n        const=16,\n        help=\"Force 4 bit colour mode\",\n    )\n    parser.add_argument(\n        \"-8\",\n        action=\"store_const\",\n        dest=\"mode\",\n        const=256,\n        help=\"Force 8 bit colour mode\",\n    )\n\n    parser.add_argument(\n        \"-c\",\n        \"--charset-py2\",\n        default=\"utf-8\",\n        help=\"Manually set a charset to convert from, for python 2.7\",\n    )\n\n    options = parser.parse_args()\n    options.os = random.randint(0, 256) if options.seed == 0 else options.seed\n    options.mode = options.mode or detect_mode()\n\n    lolcat = LolCat(mode=options.mode)\n    args = [\"-\"]\n\n    for filename in args:\n        if filename == \"-\":\n            lolcat.cat(sys.stdin, options)\n        else:\n            try:\n                with open(filename, \"r\") as handle:\n                    lolcat.cat(handle, options)\n            except IOError as error:\n                sys.stderr.write(str(error) + \"\\n\")\n\n\nif __name__ == \"__main__\":\n    sys.exit(run())\n"
  },
  {
    "path": "mythril/laser/__init__.py",
    "content": ""
  },
  {
    "path": "mythril/laser/ethereum/__init__.py",
    "content": ""
  },
  {
    "path": "mythril/laser/ethereum/call.py",
    "content": "\"\"\"This module contains the business logic used by Instruction in\ninstructions.py to get the necessary elements from the stack and determine the\nparameters for the new global state.\"\"\"\n\nimport logging\nimport re\nfrom typing import List, Optional, Union, cast\n\nfrom eth.constants import GAS_CALLSTIPEND\n\nimport mythril.laser.ethereum.util as util\nfrom mythril.laser.ethereum import natives\nfrom mythril.laser.ethereum.instruction_data import calculate_native_gas\nfrom mythril.laser.ethereum.natives import PRECOMPILE_COUNT, PRECOMPILE_FUNCTIONS\nfrom mythril.laser.ethereum.state.account import Account\nfrom mythril.laser.ethereum.state.calldata import (\n    BaseCalldata,\n    ConcreteCalldata,\n    SymbolicCalldata,\n)\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.util import insert_ret_val\nfrom mythril.laser.smt import BitVec, Expression, If, simplify, symbol_factory\nfrom mythril.support.loader import DynLoader\n\n\"\"\"\nThis module contains the business logic used by Instruction in instructions.py\nto get the necessary elements from the stack and determine the parameters for the new global state.\n\"\"\"\n\nlog = logging.getLogger(__name__)\nSYMBOLIC_CALLDATA_SIZE = 320  # Used when copying symbolic calldata\n\n\ndef get_call_parameters(\n    global_state: GlobalState, dynamic_loader: DynLoader, with_value=False\n):\n    \"\"\"Gets call parameters from global state Pops the values from the stack\n    and determines output parameters.\n\n\n    :param global_state: state to look in\n    :param dynamic_loader: dynamic loader to use\n    :param with_value: whether to pop the value argument from the stack\n    :return: callee_account, call_data, value, call_data_type, gas\n    \"\"\"\n    gas, to = global_state.mstate.pop(2)\n    value = global_state.mstate.pop() if with_value else 0\n    (\n        memory_input_offset,\n        memory_input_size,\n        memory_out_offset,\n        memory_out_size,\n    ) = global_state.mstate.pop(4)\n\n    callee_address = get_callee_address(global_state, dynamic_loader, to)\n\n    callee_account = None\n    call_data = get_call_data(global_state, memory_input_offset, memory_input_size)\n    if isinstance(callee_address, BitVec) or (\n        isinstance(callee_address, str)\n        and (int(callee_address, 16) > PRECOMPILE_COUNT or int(callee_address, 16) == 0)\n    ):\n        callee_account = get_callee_account(\n            global_state, callee_address, dynamic_loader\n        )\n\n    gas = gas + If(value > 0, symbol_factory.BitVecVal(GAS_CALLSTIPEND, gas.size()), 0)\n    return (\n        callee_address,\n        callee_account,\n        call_data,\n        value,\n        gas,\n        memory_out_offset,\n        memory_out_size,\n    )\n\n\ndef _get_padded_hex_address(address: int) -> str:\n    hex_address = hex(address)[2:]\n    return \"0x{}{}\".format(\"0\" * (40 - len(hex_address)), hex_address)\n\n\ndef get_callee_address(\n    global_state: GlobalState,\n    dynamic_loader: DynLoader,\n    symbolic_to_address: Expression,\n):\n    \"\"\"Gets the address of the callee.\n\n    :param global_state: state to look in\n    :param dynamic_loader:  dynamic loader to use\n    :param symbolic_to_address: The (symbolic) callee address\n    :return: Address of the callee\n    \"\"\"\n    environment = global_state.environment\n    try:\n        callee_address = _get_padded_hex_address(\n            util.get_concrete_int(symbolic_to_address)\n        )\n    except TypeError:\n        log.debug(\"Symbolic call encountered\")\n\n        match = re.search(r\"Storage\\[(\\d+)\\]\", str(simplify(symbolic_to_address)))\n\n        if match is None or dynamic_loader is None:\n            return symbolic_to_address\n\n        index = int(match.group(1))\n        log.debug(\"Dynamic contract address at storage index {}\".format(index))\n\n        # attempt to read the contract address from instance storage\n        try:\n            callee_address = dynamic_loader.read_storage(\n                \"0x{:040X}\".format(environment.active_account.address.value), index\n            )\n        # TODO: verify whether this happens or not\n        except:\n            return symbolic_to_address\n\n        # testrpc simply returns the address, geth response is more elaborate.\n        if not re.match(r\"^0x[0-9a-f]{40}$\", callee_address):\n            callee_address = \"0x\" + callee_address[26:]\n\n    return callee_address\n\n\ndef get_callee_account(\n    global_state: GlobalState,\n    callee_address: Union[str, BitVec],\n    dynamic_loader: DynLoader,\n):\n    \"\"\"Gets the callees account from the global_state.\n\n    :param global_state: state to look in\n    :param callee_address: address of the callee\n    :param dynamic_loader: dynamic loader to use\n    :return: Account belonging to callee\n    \"\"\"\n    if isinstance(callee_address, BitVec):\n        if callee_address.symbolic:\n            return Account(callee_address, balances=global_state.world_state.balances)\n        else:\n            callee_address = hex(callee_address.value)[2:]\n\n    return global_state.world_state.accounts_exist_or_load(\n        callee_address, dynamic_loader\n    )\n\n\ndef get_call_data(\n    global_state: GlobalState,\n    memory_start: Union[int, BitVec],\n    memory_size: Union[int, BitVec],\n):\n    \"\"\"Gets call_data from the global_state.\n\n    :param global_state: state to look in\n    :param memory_start: Start index\n    :param memory_size: Size\n    :return: Tuple containing: call_data array from memory or empty array if symbolic, type found\n    \"\"\"\n    state = global_state.mstate\n    transaction_id = \"{}_internalcall\".format(global_state.current_transaction.id)\n\n    memory_start = cast(\n        BitVec,\n        (\n            symbol_factory.BitVecVal(memory_start, 256)\n            if isinstance(memory_start, int)\n            else memory_start\n        ),\n    )\n    memory_size = cast(\n        BitVec,\n        (\n            symbol_factory.BitVecVal(memory_size, 256)\n            if isinstance(memory_size, int)\n            else memory_size\n        ),\n    )\n\n    if memory_size.symbolic:\n        memory_size = SYMBOLIC_CALLDATA_SIZE\n    try:\n        calldata_from_mem = state.memory[\n            util.get_concrete_int(memory_start) : util.get_concrete_int(\n                memory_start + memory_size\n            )\n        ]\n        return ConcreteCalldata(transaction_id, calldata_from_mem)\n    except TypeError:\n        log.debug(\"Unsupported symbolic memory offset and size\")\n        return SymbolicCalldata(transaction_id)\n\n\ndef native_call(\n    global_state: GlobalState,\n    callee_address: Union[str, BitVec],\n    call_data: BaseCalldata,\n    memory_out_offset: Union[int, Expression],\n    memory_out_size: Union[int, Expression],\n) -> Optional[List[GlobalState]]:\n    if isinstance(callee_address, BitVec) or not (\n        0 < int(callee_address, 16) <= PRECOMPILE_COUNT\n    ):\n        return None\n    # Disabled due to issues with how multi contract calls are handled with some older solc versions\n    \"\"\"\n    if hevm_cheat_code.is_cheat_address(callee_address):\n        log.info(\"HEVM cheat code address triggered\")\n        handle_cheat_codes(\n            global_state, callee_address, call_data, memory_out_offset, memory_out_size\n        )\n        return [global_state]\n    \"\"\"\n    log.debug(\"Native contract called: \" + callee_address)\n    try:\n        mem_out_start = util.get_concrete_int(memory_out_offset)\n        mem_out_sz = util.get_concrete_int(memory_out_size)\n    except TypeError:\n        insert_ret_val(global_state)\n        log.debug(\"CALL with symbolic start or offset not supported\")\n        return [global_state]\n\n    call_address_int = int(callee_address, 16)\n    native_gas_min, native_gas_max = calculate_native_gas(\n        global_state.mstate.calculate_extension_size(mem_out_start, mem_out_sz),\n        PRECOMPILE_FUNCTIONS[call_address_int - 1].__name__,\n    )\n    global_state.mstate.min_gas_used += native_gas_min\n    global_state.mstate.max_gas_used += native_gas_max\n    global_state.mstate.mem_extend(mem_out_start, mem_out_sz)\n\n    try:\n        data = natives.native_contracts(call_address_int, call_data)\n    except natives.NativeContractException:\n        for i in range(mem_out_sz):\n            global_state.mstate.memory[mem_out_start + i] = global_state.new_bitvec(\n                PRECOMPILE_FUNCTIONS[call_address_int - 1].__name__\n                + \"(\"\n                + str(call_data)\n                + \")\",\n                8,\n            )\n        insert_ret_val(global_state)\n        return [global_state]\n\n    for i in range(\n        min(len(data), mem_out_sz)\n    ):  # If more data is used then it's chopped off\n        global_state.mstate.memory[mem_out_start + i] = data[i]\n\n    insert_ret_val(global_state)\n    return [global_state]\n"
  },
  {
    "path": "mythril/laser/ethereum/cfg.py",
    "content": "\"\"\"This module.\"\"\"\n\nfrom enum import Enum\nfrom typing import TYPE_CHECKING, Dict, List\n\nfrom flags import Flags\n\nfrom mythril.laser.ethereum.state.constraints import Constraints\n\nif TYPE_CHECKING:\n    from mythril.laser.ethereum.state.global_state import GlobalState\n\n\nclass JumpType(Enum):\n    \"\"\"An enum to represent the types of possible JUMP scenarios.\"\"\"\n\n    CONDITIONAL = 1\n    UNCONDITIONAL = 2\n    CALL = 3\n    RETURN = 4\n    Transaction = 5\n\n\nclass NodeFlags(Flags):\n    \"\"\"A collection of flags to denote the type a call graph node can have.\"\"\"\n\n    def __or__(self, other) -> \"NodeFlags\":\n        return super().__or__(other)\n\n    FUNC_ENTRY = 1\n    CALL_RETURN = 2\n\n\nclass Node:\n    \"\"\"The representation of a call graph node.\"\"\"\n\n    def __init__(\n        self,\n        contract_name: str,\n        start_addr=0,\n        constraints=None,\n        function_name=\"unknown\",\n    ) -> None:\n        \"\"\"\n\n        :param contract_name:\n        :param start_addr:\n        :param constraints:\n        \"\"\"\n        constraints = constraints if constraints else Constraints()\n        self.contract_name = contract_name\n        self.start_addr = start_addr\n        self.states: List[GlobalState] = []\n        self.constraints = constraints\n        self.function_name = function_name\n        self.flags = NodeFlags()\n\n        self.uid = hash(self)\n\n    def get_cfg_dict(self) -> Dict:\n        \"\"\"\n        Generate a configuration dictionary for the current state of the contract.\n\n        :return: A dictionary containing the contract's configuration details.\n        \"\"\"\n        code_lines = [\n            f\"{instruction['address']} {instruction['opcode']}\"\n            + (\n                f\" {instruction['argument']}\"\n                if instruction[\"opcode\"].startswith(\"PUSH\")\n                and \"argument\" in instruction\n                else \"\"\n            )\n            for state in self.states\n            for instruction in [state.get_current_instruction()]\n        ]\n        code = \"\\\\n\".join(code_lines)\n\n        return {\n            \"contract_name\": self.contract_name,\n            \"start_addr\": self.start_addr,\n            \"function_name\": self.function_name,\n            \"code\": code,\n        }\n\n\nclass Edge:\n    \"\"\"The representation of a call graph edge.\"\"\"\n\n    def __init__(\n        self,\n        node_from: int,\n        node_to: int,\n        edge_type=JumpType.UNCONDITIONAL,\n        condition=None,\n    ) -> None:\n        \"\"\"\n\n        :param node_from:\n        :param node_to:\n        :param edge_type:\n        :param condition:\n        \"\"\"\n        self.node_from = node_from\n        self.node_to = node_to\n        self.type = edge_type\n        self.condition = condition\n\n    def __str__(self) -> str:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return str(self.as_dict)\n\n    @property\n    def as_dict(self) -> Dict[str, int]:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return {\"from\": self.node_from, \"to\": self.node_to}\n"
  },
  {
    "path": "mythril/laser/ethereum/cheat_code.py",
    "content": "from typing import Union\n\nfrom mythril.laser.ethereum.state.calldata import (\n    BaseCalldata,\n)\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.util import insert_ret_val\nfrom mythril.laser.smt import BitVec, Expression\n\n\nclass hevm_cheat_code:\n    # https://github.com/dapphub/ds-test/blob/cd98eff28324bfac652e63a239a60632a761790b/src/test.sol\n\n    address = 0x7109709ECFA91A80626FF3989D68F67F5B1DD12D\n\n    fail_payload = int(\n        \"70ca10bb\"\n        + \"0000000000000000000000007109709ecfa91a80626ff3989d68f67f5b1dd12d\"\n        + \"6661696c65640000000000000000000000000000000000000000000000000000\"\n        + \"0000000000000000000000000000000000000000000000000000000000000001\",\n        16,\n    )\n\n    assume_sig = 0x4C63E562\n\n    @staticmethod\n    def is_cheat_address(address):\n        if int(address, 16) == int(\"0x7109709ECfa91a80626fF3989D68f67F5b1DD12D\", 16):\n            return True\n        if int(address, 16) == int(\"0x72c68108a82e82617b93d1be0d7975d762035015\", 16):\n            return True\n        return False\n\n\ndef handle_cheat_codes(\n    global_state: GlobalState,\n    callee_address: Union[str, BitVec],\n    call_data: BaseCalldata,\n    memory_out_offset: Union[int, Expression],\n    memory_out_size: Union[int, Expression],\n):\n    insert_ret_val(global_state)\n    pass\n"
  },
  {
    "path": "mythril/laser/ethereum/evm_exceptions.py",
    "content": "\"\"\"This module contains EVM exception types used by LASER.\"\"\"\n\n\nclass VmException(Exception):\n    \"\"\"The base VM exception type.\"\"\"\n\n    pass\n\n\nclass StackUnderflowException(IndexError, VmException):\n    \"\"\"A VM exception regarding stack underflows.\"\"\"\n\n    pass\n\n\nclass StackOverflowException(VmException):\n    \"\"\"A VM exception regarding stack overflows.\"\"\"\n\n    pass\n\n\nclass InvalidJumpDestination(VmException):\n    \"\"\"A VM exception regarding JUMPs to invalid destinations.\"\"\"\n\n    pass\n\n\nclass InvalidInstruction(VmException):\n    \"\"\"A VM exception denoting an invalid op code has been encountered.\"\"\"\n\n    pass\n\n\nclass OutOfGasException(VmException):\n    \"\"\"A VM exception denoting the current execution has run out of gas.\"\"\"\n\n    pass\n\n\nclass WriteProtection(VmException):\n    \"\"\"A VM exception denoting that a write operation is executed on a write protected environment\"\"\"\n\n    pass\n"
  },
  {
    "path": "mythril/laser/ethereum/function_managers/__init__.py",
    "content": "from .exponent_function_manager import exponent_function_manager\nfrom .keccak_function_manager import KeccakFunctionManager, keccak_function_manager\n"
  },
  {
    "path": "mythril/laser/ethereum/function_managers/exponent_function_manager.py",
    "content": "import logging\nfrom typing import Tuple\n\nfrom mythril.laser.smt import (\n    And,\n    BitVec,\n    Function,\n    URem,\n    symbol_factory,\n)\nfrom mythril.laser.smt import (\n    SMTBool as Bool,\n)\n\nlog = logging.getLogger(__name__)\n\n\nclass ExponentFunctionManager:\n    \"\"\"\n    Uses an uninterpreted function for exponentiation with the following properties:\n    1) power(a, b) > 0\n    2) if a = 256 => forall i if b = i then power(a, b) = (256 ^ i) % (2^256)\n\n    Only these two properties are added as to handle indexing of boolean arrays.\n    Caution should be exercised when increasing the conditions since it severely affects\n    the solving time.\n    \"\"\"\n\n    def __init__(self):\n        power = Function(\"Power\", [256, 256], 256)\n        NUMBER_256 = symbol_factory.BitVecVal(256, 256)\n        self.concrete_constraints = And(\n            *[\n                power(NUMBER_256, symbol_factory.BitVecVal(i, 256))\n                == symbol_factory.BitVecVal(256**i, 256)\n                for i in range(0, 32)\n            ]\n        )\n\n    def create_condition(self, base: BitVec, exponent: BitVec) -> Tuple[BitVec, Bool]:\n        \"\"\"\n        Creates a condition for exponentiation\n        :param base: The base of exponentiation\n        :param exponent: The exponent of the exponentiation\n        :return: Tuple of condition and the exponentiation result\n        \"\"\"\n        power = Function(\"Power\", [256, 256], 256)\n        exponentiation = power(base, exponent)\n\n        if exponent.symbolic is False and base.symbolic is False:\n            const_exponentiation = symbol_factory.BitVecVal(\n                pow(base.value, exponent.value, 2**256),\n                256,\n                annotations=base.annotations.union(exponent.annotations),\n            )\n            constraint = const_exponentiation == exponentiation\n            return const_exponentiation, constraint\n\n        constraint = exponentiation > 0\n        constraint = And(constraint, self.concrete_constraints)\n        if base.value == 256:\n            constraint = And(\n                constraint,\n                power(base, URem(exponent, symbol_factory.BitVecVal(32, 256)))\n                == power(base, exponent),\n            )\n\n        return exponentiation, constraint\n\n\nexponent_function_manager = ExponentFunctionManager()\n"
  },
  {
    "path": "mythril/laser/ethereum/function_managers/keccak_function_manager.py",
    "content": "import logging\nfrom typing import Dict, List, Optional, Tuple\n\nfrom mythril.laser.smt import (\n    ULE,\n    ULT,\n    And,\n    BitVec,\n    Function,\n    Or,\n    URem,\n    symbol_factory,\n)\nfrom mythril.laser.smt import (\n    SMTBool as Bool,\n)\nfrom mythril.support.support_utils import sha3\n\nTOTAL_PARTS = 10**40\nPART = (2**256 - 1) // TOTAL_PARTS\nINTERVAL_DIFFERENCE = 10**30\nlog = logging.getLogger(__name__)\n\n\nclass KeccakFunctionManager:\n    \"\"\"\n    A bunch of uninterpreted functions are considered like keccak256_160 ,...\n    where keccak256_160 means the input of keccak256() is 160 bit number.\n    the range of these functions are constrained to some mutually disjoint intervals\n    All the hashes modulo 64 are 0 as we need a spread among hashes for array type data structures\n    All the functions are kind of one to one due to constraint of the existence of inverse\n    for each encountered input.\n    For more info https://files.sri.inf.ethz.ch/website/papers/sp20-verx.pdf\n    \"\"\"\n\n    hash_matcher = \"fffffff\"  # This is usually the prefix for the hash in the output\n\n    def __init__(self):\n        self.store_function: Dict[int, Tuple[Function, Function]] = {}\n        self.interval_hook_for_size: Dict[int, int] = {}\n        self._index_counter = TOTAL_PARTS - 34534\n        self.hash_result_store: Dict[int, List[BitVec]] = {}\n\n        self.quick_inverse: Dict[BitVec, BitVec] = {}  # This is for VMTests\n        self.concrete_hashes: Dict[BitVec, BitVec] = {}\n        self.symbolic_inputs: Dict[int, List[BitVec]] = {}\n\n    def reset(self):\n        self.store_function = {}\n        self.interval_hook_for_size = {}\n        self.hash_result_store: Dict[int, List[BitVec]] = {}\n        self.quick_inverse = {}\n        self.concrete_hashes = {}\n        self.symbolic_inputs = {}\n\n    @staticmethod\n    def find_concrete_keccak(data: BitVec) -> BitVec:\n        \"\"\"\n        Calculates concrete keccak\n        :param data: input bitvecval\n        :return: concrete keccak output\n        \"\"\"\n        keccak = symbol_factory.BitVecVal(\n            int.from_bytes(\n                sha3(data.value.to_bytes(data.size() // 8, byteorder=\"big\")), \"big\"\n            ),\n            256,\n        )\n        return keccak\n\n    def get_function(self, length: int) -> Tuple[Function, Function]:\n        \"\"\"\n        Returns the keccak functions for the corresponding length\n        :param length: input size\n        :return: tuple of keccak and it's inverse\n        \"\"\"\n        try:\n            func, inverse = self.store_function[length]\n        except KeyError:\n            func = Function(\"keccak256_{}\".format(length), [length], 256)\n            inverse = Function(\"keccak256_{}-1\".format(length), [256], length)\n            self.store_function[length] = (func, inverse)\n            self.hash_result_store[length] = []\n        return func, inverse\n\n    @staticmethod\n    def get_empty_keccak_hash() -> BitVec:\n        \"\"\"\n        returns sha3(\"\")\n        :return:\n        \"\"\"\n        val = 89477152217924674838424037953991966239322087453347756267410168184682657981552\n        return symbol_factory.BitVecVal(val, 256)\n\n    def create_keccak(self, data: BitVec) -> BitVec:\n        \"\"\"\n        Creates Keccak of the data\n        :param data: input\n        :return: Tuple of keccak and the condition it should satisfy\n        \"\"\"\n        length = data.size()\n        func, _ = self.get_function(length)\n\n        if data.symbolic is False:\n            concrete_hash = self.find_concrete_keccak(data)\n            self.concrete_hashes[data] = concrete_hash\n            return concrete_hash\n\n        if length not in self.symbolic_inputs:\n            self.symbolic_inputs[length] = []\n\n        self.symbolic_inputs[length].append(data)\n        self.hash_result_store[length].append(func(data))\n        return func(data)\n\n    def create_conditions(self) -> Bool:\n        condition = symbol_factory.Bool(True)\n        for inputs_list in self.symbolic_inputs.values():\n            for symbolic_input in inputs_list:\n                condition = And(\n                    condition, self._create_condition(func_input=symbolic_input)\n                )\n        for concrete_input, concrete_hash in self.concrete_hashes.items():\n            func, inverse = self.get_function(concrete_input.size())\n            condition = And(\n                condition,\n                func(concrete_input) == concrete_hash,\n                inverse(func(concrete_input)) == concrete_input,\n            )\n        return condition\n\n    def get_concrete_hash_data(self, model) -> Dict[int, List[Optional[int]]]:\n        \"\"\"\n        returns concrete values of hashes in the self.hash_result_store\n        :param model: The z3 model to query for concrete values\n        :return: A dictionary with concrete hashes { <hash_input_size> : [<concrete_hash>, <concrete_hash>]}\n        \"\"\"\n        concrete_hashes: Dict[int, List[Optional[int]]] = {}\n        for size in self.hash_result_store:\n            concrete_hashes[size] = []\n            for val in self.hash_result_store[size]:\n                eval_ = model.eval(val.raw)\n                try:\n                    concrete_val = eval_.as_long()\n                    concrete_hashes[size].append(concrete_val)\n                except AttributeError:\n                    continue\n        return concrete_hashes\n\n    def _create_condition(self, func_input: BitVec) -> Bool:\n        \"\"\"\n        Creates the constraints for hash\n        :param func_input: input of the hash\n        :return: condition\n        \"\"\"\n        length = func_input.size()\n        func, inv = self.get_function(length)\n        try:\n            index = self.interval_hook_for_size[length]\n        except KeyError:\n            self.interval_hook_for_size[length] = self._index_counter\n            index = self._index_counter\n            self._index_counter -= INTERVAL_DIFFERENCE\n\n        lower_bound = index * PART\n        upper_bound = lower_bound + PART\n\n        cond = And(\n            inv(func(func_input)) == func_input,\n            ULE(symbol_factory.BitVecVal(lower_bound, 256), func(func_input)),\n            ULT(func(func_input), symbol_factory.BitVecVal(upper_bound, 256)),\n            URem(func(func_input), symbol_factory.BitVecVal(64, 256)) == 0,\n        )\n        concrete_cond = symbol_factory.Bool(False)\n        for key, keccak in self.concrete_hashes.items():\n            if key.size() == func_input.size():\n                hash_eq = And(func(func_input) == keccak, key == func_input)\n                concrete_cond = Or(concrete_cond, hash_eq)\n        return And(inv(func(func_input)) == func_input, Or(cond, concrete_cond))\n\n\nkeccak_function_manager = KeccakFunctionManager()\n"
  },
  {
    "path": "mythril/laser/ethereum/instruction_data.py",
    "content": "from typing import Tuple\n\nfrom eth._utils.numeric import ceil32\nfrom eth.constants import (\n    GAS_ECRECOVER,\n    GAS_IDENTITY,\n    GAS_IDENTITYWORD,\n    GAS_RIPEMD160,\n    GAS_RIPEMD160WORD,\n    GAS_SHA3,\n    GAS_SHA3WORD,\n    GAS_SHA256,\n    GAS_SHA256WORD,\n)\n\nfrom mythril.support.opcodes import GAS, OPCODES, STACK\n\n\ndef calculate_sha3_gas(length: int):\n    \"\"\"\n\n    :param length:\n    :return:\n    \"\"\"\n    gas_val = GAS_SHA3 + GAS_SHA3WORD * (ceil32(length) // 32)\n    return gas_val, gas_val\n\n\ndef calculate_native_gas(size: int, contract: str):\n    \"\"\"\n\n    :param size:\n    :param contract:\n    :return:\n    \"\"\"\n    gas_value = 0\n    word_num = ceil32(size) // 32\n    if contract == \"ecrecover\":\n        gas_value = GAS_ECRECOVER\n    elif contract == \"sha256\":\n        gas_value = GAS_SHA256 + word_num * GAS_SHA256WORD\n    elif contract == \"ripemd160\":\n        gas_value = GAS_RIPEMD160 + word_num * GAS_RIPEMD160WORD\n    elif contract == \"identity\":\n        gas_value = GAS_IDENTITY + word_num * GAS_IDENTITYWORD\n    else:\n        # TODO: Add gas for other precompiles, computation should be shifted to natives.py\n        #  as some data isn't available here\n        pass\n    return gas_value, gas_value\n\n\ndef get_opcode_gas(opcode: str) -> Tuple[int, int]:\n    return OPCODES[opcode][GAS]\n\n\ndef get_required_stack_elements(opcode: str) -> int:\n    return OPCODES[opcode][STACK][0]\n"
  },
  {
    "path": "mythril/laser/ethereum/instructions.py",
    "content": "\"\"\"This module contains a representation class for EVM instructions and\ntransitions between them.\"\"\"\n\nimport logging\nfrom copy import copy, deepcopy\nfrom typing import Callable, List, Tuple, Union, cast\n\nimport mythril.laser.ethereum.util as helper\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum import util\nfrom mythril.laser.ethereum.call import (\n    SYMBOLIC_CALLDATA_SIZE,\n    get_call_data,\n    get_call_parameters,\n    native_call,\n)\nfrom mythril.laser.ethereum.evm_exceptions import (\n    InvalidInstruction,\n    InvalidJumpDestination,\n    OutOfGasException,\n    StackUnderflowException,\n    VmException,\n    WriteProtection,\n)\nfrom mythril.laser.ethereum.function_managers import (\n    exponent_function_manager,\n    keccak_function_manager,\n)\nfrom mythril.laser.ethereum.instruction_data import calculate_sha3_gas, get_opcode_gas\nfrom mythril.laser.ethereum.state.calldata import ConcreteCalldata, SymbolicCalldata\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.return_data import ReturnData\nfrom mythril.laser.ethereum.transaction import (\n    ContractCreationTransaction,\n    MessageCallTransaction,\n    TransactionStartSignal,\n    tx_id_manager,\n)\nfrom mythril.laser.smt import (\n    UGE,\n    UGT,\n    ULT,\n    BitVec,\n    Concat,\n    Expression,\n    Extract,\n    If,\n    LShR,\n    Not,\n    SRem,\n    UDiv,\n    URem,\n    is_false,\n    simplify,\n    symbol_factory,\n)\nfrom mythril.laser.smt import (\n    SMTBool as Bool,\n)\nfrom mythril.support.loader import DynLoader\nfrom mythril.support.model import get_model\nfrom mythril.support.support_utils import get_code_hash\n\nlog = logging.getLogger(__name__)\n\nTT256 = symbol_factory.BitVecVal(0, 256)\nTT256M1 = symbol_factory.BitVecVal(2**256 - 1, 256)\n\n\ndef transfer_ether(\n    global_state: GlobalState,\n    sender: BitVec,\n    receiver: BitVec,\n    value: Union[int, BitVec],\n):\n    \"\"\"\n    Perform an Ether transfer between two accounts\n\n    :param global_state: The global state in which the Ether transfer occurs\n    :param sender: The sender of the Ether\n    :param receiver: The recipient of the Ether\n    :param value: The amount of Ether to send\n    :return:\n    \"\"\"\n    value = value if isinstance(value, BitVec) else symbol_factory.BitVecVal(value, 256)\n\n    global_state.world_state.constraints.append(\n        UGE(global_state.world_state.balances[sender], value)\n    )\n    global_state.world_state.balances[receiver] += value\n    global_state.world_state.balances[sender] -= value\n\n\nclass StateTransition(object):\n    \"\"\"Decorator that handles global state copy and original return.\n\n    This decorator calls the decorated instruction mutator function on a\n    copy of the state that is passed to it. After the call, the\n    resulting new states' program counter is automatically incremented\n    if `increment_pc=True`.\n    \"\"\"\n\n    def __init__(\n        self, increment_pc=True, enable_gas=True, is_state_mutation_instruction=False\n    ):\n        \"\"\"\n\n        :param increment_pc:\n        :param enable_gas:\n        :param is_state_mutation_instruction: The function mutates state\n        \"\"\"\n        self.increment_pc = increment_pc\n        self.enable_gas = enable_gas\n        self.is_state_mutation_instruction = is_state_mutation_instruction\n\n    @staticmethod\n    def call_on_state_copy(func: Callable, func_obj: \"Instruction\", state: GlobalState):\n        \"\"\"\n\n        :param func:\n        :param func_obj:\n        :param state:\n        :return:\n        \"\"\"\n        global_state_copy = copy(state)\n        return func(func_obj, global_state_copy)\n\n    def increment_states_pc(self, states: List[GlobalState]) -> List[GlobalState]:\n        \"\"\"\n\n        :param states:\n        :return:\n        \"\"\"\n        if self.increment_pc:\n            for state in states:\n                state.mstate.pc += 1\n        return states\n\n    @staticmethod\n    def check_gas_usage_limit(global_state: GlobalState):\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.check_gas()\n        if isinstance(global_state.current_transaction.gas_limit, BitVec):\n            value = global_state.current_transaction.gas_limit.value\n            if value is None:\n                return\n            global_state.current_transaction.gas_limit = value\n        if (\n            global_state.mstate.min_gas_used\n            >= global_state.current_transaction.gas_limit\n        ):\n            raise OutOfGasException()\n\n    def accumulate_gas(self, global_state: GlobalState):\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        if not self.enable_gas:\n            return global_state\n        opcode = global_state.instruction[\"opcode\"]\n        min_gas, max_gas = get_opcode_gas(opcode)\n        global_state.mstate.min_gas_used += min_gas\n        global_state.mstate.max_gas_used += max_gas\n        self.check_gas_usage_limit(global_state)\n\n        return global_state\n\n    def __call__(self, func: Callable) -> Callable:\n        def wrapper(\n            func_obj: \"Instruction\", global_state: GlobalState\n        ) -> List[GlobalState]:\n            \"\"\"\n\n            :param func_obj:\n            :param global_state:\n            :return:\n            \"\"\"\n            if self.is_state_mutation_instruction and global_state.environment.static:\n                raise WriteProtection(\n                    \"The function {} cannot be executed in a static call\".format(\n                        func.__name__[:-1]\n                    )\n                )\n\n            new_global_states = self.call_on_state_copy(func, func_obj, global_state)\n            new_global_states = [\n                self.accumulate_gas(state) for state in new_global_states\n            ]\n\n            return self.increment_states_pc(new_global_states)\n\n        return wrapper\n\n\nclass Instruction:\n    \"\"\"Instruction class is used to mutate a state according to the current\n    instruction.\"\"\"\n\n    def __init__(\n        self,\n        op_code: str,\n        dynamic_loader: DynLoader,\n        pre_hooks: List[Callable] = None,\n        post_hooks: List[Callable] = None,\n    ) -> None:\n        \"\"\"\n\n        :param op_code:\n        :param dynamic_loader:\n        :param iprof:\n        \"\"\"\n        self.dynamic_loader = dynamic_loader\n        self.op_code = op_code.upper()\n        self.pre_hook = pre_hooks if pre_hooks else []\n        self.post_hook = post_hooks if post_hooks else []\n\n    def _execute_pre_hooks(self, global_state: GlobalState):\n        for hook in self.pre_hook:\n            hook(global_state)\n\n    def _execute_post_hooks(self, global_state: GlobalState):\n        for hook in self.post_hook:\n            hook(global_state)\n\n    def evaluate(self, global_state: GlobalState, post=False) -> List[GlobalState]:\n        \"\"\"Performs the mutation for this instruction.\n\n        :param global_state:\n        :param post:\n        :return:\n        \"\"\"\n        # Generalize some ops\n        log.debug(\"Evaluating %s at %i\", self.op_code, global_state.mstate.pc)\n\n        op = self.op_code.lower()\n        if self.op_code.startswith(\"PUSH\"):\n            op = \"push\"\n        elif self.op_code.startswith(\"DUP\"):\n            op = \"dup\"\n        elif self.op_code.startswith(\"SWAP\"):\n            op = \"swap\"\n        elif self.op_code.startswith(\"LOG\"):\n            op = \"log\"\n\n        instruction_mutator = (\n            getattr(self, op + \"_\", None)\n            if not post\n            else getattr(self, op + \"_\" + \"post\", None)\n        )\n        if instruction_mutator is None:\n            raise NotImplementedError\n\n        self._execute_pre_hooks(global_state)\n        result = instruction_mutator(global_state)\n        self._execute_post_hooks(global_state)\n\n        return result\n\n    @StateTransition()\n    def jumpdest_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        return [global_state]\n\n    @StateTransition()\n    def push_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        push_instruction = global_state.get_current_instruction()\n        push_value = push_instruction.get(\"argument\", 0)\n\n        try:\n            length_of_value = 2 * int(push_instruction[\"opcode\"][4:])\n        except ValueError:\n            raise VmException(\"Invalid Push instruction\")\n\n        if length_of_value == 0:\n            global_state.mstate.stack.append(symbol_factory.BitVecVal(0, 256))\n        elif isinstance(push_value, tuple):\n            if isinstance(push_value[0], int):\n                new_value = symbol_factory.BitVecVal(push_value[0], 8)\n            else:\n                new_value = push_value[0]\n            if len(push_value) > 1:\n                for val in push_value[1:]:\n                    if isinstance(val, int):\n                        new_value = Concat(new_value, symbol_factory.BitVecVal(val, 8))\n                    else:\n                        new_value = Concat(new_value, val)\n\n            pad_length = length_of_value // 2 - len(push_value)\n\n            if pad_length > 0:\n                new_value = Concat(new_value, symbol_factory.BitVecVal(0, pad_length))\n            if new_value.size() < 256:\n                new_value = Concat(\n                    symbol_factory.BitVecVal(0, 256 - new_value.size()), new_value\n                )\n\n            global_state.mstate.stack.append(new_value)\n\n        else:\n            push_value += \"0\" * max(length_of_value - (len(push_value) - 2), 0)\n            global_state.mstate.stack.append(\n                symbol_factory.BitVecVal(int(push_value, 16), 256)\n            )\n        return [global_state]\n\n    @StateTransition()\n    def dup_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        value = int(global_state.get_current_instruction()[\"opcode\"][3:], 10)\n        global_state.mstate.stack.append(global_state.mstate.stack[-value])\n        return [global_state]\n\n    @StateTransition()\n    def swap_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        depth = int(self.op_code[4:])\n        stack = global_state.mstate.stack\n        stack[-depth - 1], stack[-1] = stack[-1], stack[-depth - 1]\n        return [global_state]\n\n    @StateTransition()\n    def pop_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.pop()\n        return [global_state]\n\n    @StateTransition()\n    def and_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        stack = global_state.mstate.stack\n        op1, op2 = stack.pop(), stack.pop()\n        if isinstance(op1, Bool):\n            op1 = If(\n                op1, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)\n            )\n        if isinstance(op2, Bool):\n            op2 = If(\n                op2, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)\n            )\n        if not isinstance(op1, Expression):\n            op1 = symbol_factory.BitVecVal(op1, 256)\n        if not isinstance(op2, Expression):\n            op2 = symbol_factory.BitVecVal(op2, 256)\n        stack.append(op1 & op2)\n\n        return [global_state]\n\n    @StateTransition()\n    def or_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        stack = global_state.mstate.stack\n        op1, op2 = stack.pop(), stack.pop()\n\n        if isinstance(op1, Bool):\n            op1 = If(\n                op1, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)\n            )\n\n        if isinstance(op2, Bool):\n            op2 = If(\n                op2, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)\n            )\n\n        stack.append(op1 | op2)\n\n        return [global_state]\n\n    @StateTransition()\n    def xor_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        mstate = global_state.mstate\n        mstate.stack.append(mstate.stack.pop() ^ mstate.stack.pop())\n        return [global_state]\n\n    @StateTransition()\n    def not_(self, global_state: GlobalState):\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        mstate = global_state.mstate\n        mstate.stack.append(TT256M1 - mstate.stack.pop())\n        return [global_state]\n\n    @StateTransition()\n    def byte_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        mstate = global_state.mstate\n        op0, op1 = mstate.stack.pop(), mstate.stack.pop()\n        if not isinstance(op1, Expression):\n            op1 = symbol_factory.BitVecVal(op1, 256)\n        try:\n            index = util.get_concrete_int(op0)\n            offset = (31 - index) * 8\n            if offset >= 0:\n                result: Union[int, Expression] = simplify(\n                    Concat(\n                        symbol_factory.BitVecVal(0, 248),\n                        Extract(offset + 7, offset, op1),\n                    )\n                )\n            else:\n                result = 0\n        except TypeError:\n            log.debug(\"BYTE: Unsupported symbolic byte offset\")\n            result = global_state.new_bitvec(\n                str(simplify(op1)) + \"[\" + str(simplify(op0)) + \"]\", 256\n            )\n\n        mstate.stack.append(result)\n        return [global_state]\n\n    # Arithmetic\n    @StateTransition()\n    def add_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.append(\n            (\n                helper.pop_bitvec(global_state.mstate)\n                + helper.pop_bitvec(global_state.mstate)\n            )\n        )\n        return [global_state]\n\n    @StateTransition()\n    def sub_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.append(\n            (\n                helper.pop_bitvec(global_state.mstate)\n                - helper.pop_bitvec(global_state.mstate)\n            )\n        )\n        return [global_state]\n\n    @StateTransition()\n    def mul_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.append(\n            (\n                helper.pop_bitvec(global_state.mstate)\n                * helper.pop_bitvec(global_state.mstate)\n            )\n        )\n\n        return [global_state]\n\n    @StateTransition()\n    def div_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        op0, op1 = (\n            util.pop_bitvec(global_state.mstate),\n            util.pop_bitvec(global_state.mstate),\n        )\n        if op1 == 0:\n            global_state.mstate.stack.append(symbol_factory.BitVecVal(0, 256))\n        else:\n            global_state.mstate.stack.append(UDiv(op0, op1))\n        return [global_state]\n\n    @StateTransition()\n    def sdiv_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        s0, s1 = (\n            util.pop_bitvec(global_state.mstate),\n            util.pop_bitvec(global_state.mstate),\n        )\n        if s1 == 0:\n            global_state.mstate.stack.append(symbol_factory.BitVecVal(0, 256))\n        else:\n            global_state.mstate.stack.append(s0 / s1)\n        return [global_state]\n\n    @StateTransition()\n    def mod_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        s0, s1 = (\n            util.pop_bitvec(global_state.mstate),\n            util.pop_bitvec(global_state.mstate),\n        )\n        global_state.mstate.stack.append(0 if s1 == 0 else URem(s0, s1))\n        return [global_state]\n\n    @StateTransition()\n    def shl_(self, global_state: GlobalState) -> List[GlobalState]:\n        shift, value = (\n            util.pop_bitvec(global_state.mstate),\n            util.pop_bitvec(global_state.mstate),\n        )\n        global_state.mstate.stack.append(value << shift)\n        return [global_state]\n\n    @StateTransition()\n    def shr_(self, global_state: GlobalState) -> List[GlobalState]:\n        shift, value = (\n            util.pop_bitvec(global_state.mstate),\n            util.pop_bitvec(global_state.mstate),\n        )\n        global_state.mstate.stack.append(LShR(value, shift))\n        return [global_state]\n\n    @StateTransition()\n    def sar_(self, global_state: GlobalState) -> List[GlobalState]:\n        shift, value = (\n            util.pop_bitvec(global_state.mstate),\n            util.pop_bitvec(global_state.mstate),\n        )\n        global_state.mstate.stack.append(value >> shift)\n        return [global_state]\n\n    @StateTransition()\n    def smod_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        s0, s1 = (\n            util.pop_bitvec(global_state.mstate),\n            util.pop_bitvec(global_state.mstate),\n        )\n        global_state.mstate.stack.append(0 if s1 == 0 else SRem(s0, s1))\n        return [global_state]\n\n    @StateTransition()\n    def addmod_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        s0, s1, s2 = (\n            util.pop_bitvec(global_state.mstate),\n            util.pop_bitvec(global_state.mstate),\n            util.pop_bitvec(global_state.mstate),\n        )\n        global_state.mstate.stack.append(URem(URem(s0, s2) + URem(s1, s2), s2))\n        return [global_state]\n\n    @StateTransition()\n    def mulmod_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        s0, s1, s2 = (\n            util.pop_bitvec(global_state.mstate),\n            util.pop_bitvec(global_state.mstate),\n            util.pop_bitvec(global_state.mstate),\n        )\n        global_state.mstate.stack.append(URem(URem(s0, s2) * URem(s1, s2), s2))\n        return [global_state]\n\n    @StateTransition()\n    def exp_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        base, exponent = util.pop_bitvec(state), util.pop_bitvec(state)\n        exponentiation, constraint = exponent_function_manager.create_condition(\n            base, exponent\n        )\n        state.stack.append(exponentiation)\n        global_state.world_state.constraints.append(constraint)\n        return [global_state]\n\n    @StateTransition()\n    def signextend_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        mstate = global_state.mstate\n        s0, s1 = mstate.stack.pop(), mstate.stack.pop()\n\n        testbit = s0 * symbol_factory.BitVecVal(8, 256) + symbol_factory.BitVecVal(\n            7, 256\n        )\n        set_testbit = symbol_factory.BitVecVal(1, 256) << testbit\n        sign_bit_set = simplify(Not(s1 & set_testbit == 0))\n\n        mstate.stack.append(\n            simplify(\n                If(\n                    s0 <= 31,\n                    If(\n                        sign_bit_set, s1 | (TT256 - set_testbit), s1 & (set_testbit - 1)\n                    ),\n                    s1,\n                )\n            )\n        )\n\n        return [global_state]\n\n    # Comparisons\n    @StateTransition()\n    def lt_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        exp = ULT(util.pop_bitvec(state), util.pop_bitvec(state))\n        state.stack.append(exp)\n        return [global_state]\n\n    @StateTransition()\n    def gt_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        op1, op2 = util.pop_bitvec(state), util.pop_bitvec(state)\n        exp = UGT(op1, op2)\n        state.stack.append(exp)\n        return [global_state]\n\n    @StateTransition()\n    def slt_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        exp = util.pop_bitvec(state) < util.pop_bitvec(state)\n        state.stack.append(exp)\n        return [global_state]\n\n    @StateTransition()\n    def sgt_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n\n        exp = util.pop_bitvec(state) > util.pop_bitvec(state)\n        state.stack.append(exp)\n        return [global_state]\n\n    @StateTransition()\n    def eq_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n\n        op1 = state.stack.pop()\n        op2 = state.stack.pop()\n        if isinstance(op1, Bool):\n            op1 = If(\n                op1, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)\n            )\n\n        if isinstance(op2, Bool):\n            op2 = If(\n                op2, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)\n            )\n\n        exp = op1 == op2\n\n        state.stack.append(exp)\n        return [global_state]\n\n    @StateTransition()\n    def iszero_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        val = state.stack.pop()\n        exp = Not(val) if isinstance(val, Bool) else val == 0\n\n        exp = If(\n            exp, symbol_factory.BitVecVal(1, 256), symbol_factory.BitVecVal(0, 256)\n        )\n        state.stack.append(simplify(exp))\n\n        return [global_state]\n\n    # Call data\n    @StateTransition()\n    def callvalue_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        environment = global_state.environment\n        state.stack.append(environment.callvalue)\n\n        return [global_state]\n\n    @StateTransition()\n    def calldataload_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        environment = global_state.environment\n        op0 = state.stack.pop()\n\n        value = environment.calldata.get_word_at(op0)\n\n        state.stack.append(value)\n\n        return [global_state]\n\n    @StateTransition()\n    def calldatasize_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.append(global_state.environment.calldata.calldatasize)\n        return [global_state]\n\n    @staticmethod\n    def _calldata_copy_helper(global_state, mstate, mstart, dstart, size):\n        environment = global_state.environment\n\n        try:\n            mstart = util.get_concrete_int(mstart)\n        except TypeError:\n            log.debug(\"Unsupported symbolic memory offset in CALLDATACOPY\")\n            return [global_state]\n\n        try:\n            dstart: Union[int, BitVec] = util.get_concrete_int(dstart)\n        except TypeError:\n            log.debug(\"Unsupported symbolic calldata offset in CALLDATACOPY\")\n            dstart = simplify(dstart)\n\n        try:\n            size: Union[int, BitVec] = util.get_concrete_int(size)\n        except TypeError:\n            log.debug(\"Unsupported symbolic size in CALLDATACOPY\")\n            size = SYMBOLIC_CALLDATA_SIZE  # The excess size will get overwritten\n\n        size = cast(int, size)\n        if size > 0:\n            try:\n                mstate.mem_extend(mstart, size)\n            except TypeError as e:\n                log.debug(\"Memory allocation error: {}\".format(e))\n                mstate.mem_extend(mstart, 1)\n                mstate.memory[mstart] = global_state.new_bitvec(\n                    \"calldata_\"\n                    + str(environment.active_account.contract_name)\n                    + \"[\"\n                    + str(dstart)\n                    + \": + \"\n                    + str(size)\n                    + \"]\",\n                    8,\n                )\n                return [global_state]\n\n            try:\n                i_data = dstart\n                new_memory = []\n                for i in range(size):\n                    value = environment.calldata[i_data]\n                    new_memory.append(value)\n\n                    i_data = (\n                        i_data + 1\n                        if isinstance(i_data, int)\n                        else simplify(cast(BitVec, i_data) + 1)\n                    )\n                for i in range(len(new_memory)):\n                    mstate.memory[i + mstart] = new_memory[i]\n\n            except IndexError:\n                log.debug(\"Exception copying calldata to memory\")\n\n                mstate.memory[mstart] = global_state.new_bitvec(\n                    \"calldata_\"\n                    + str(environment.active_account.contract_name)\n                    + \"[\"\n                    + str(dstart)\n                    + \": + \"\n                    + str(size)\n                    + \"]\",\n                    8,\n                )\n        return [global_state]\n\n    @StateTransition()\n    def calldatacopy_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        op0, op1, op2 = state.stack.pop(), state.stack.pop(), state.stack.pop()\n\n        if isinstance(global_state.current_transaction, ContractCreationTransaction):\n            log.debug(\"Attempt to use CALLDATACOPY in creation transaction\")\n            return [global_state]\n\n        return self._calldata_copy_helper(global_state, state, op0, op1, op2)\n\n    # Environment\n    @StateTransition()\n    def address_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        environment = global_state.environment\n        state.stack.append(environment.address)\n        return [global_state]\n\n    @StateTransition()\n    def balance_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        address = state.stack.pop()\n        onchain_access = True\n        if address.symbolic is False:\n            try:\n                balance = global_state.world_state.accounts_exist_or_load(\n                    address.value, self.dynamic_loader\n                ).balance()\n            except ValueError:\n                onchain_access = False\n        else:\n            onchain_access = False\n\n        if onchain_access is False:\n            balance = symbol_factory.BitVecVal(0, 256)\n            for account in global_state.world_state.accounts.values():\n                balance = If(address == account.address, account.balance(), balance)\n        state.stack.append(balance)\n        return [global_state]\n\n    @StateTransition()\n    def origin_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        environment = global_state.environment\n        state.stack.append(environment.origin)\n        return [global_state]\n\n    @StateTransition()\n    def caller_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        environment = global_state.environment\n        state.stack.append(environment.sender)\n        return [global_state]\n\n    @StateTransition()\n    def chainid_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.append(global_state.environment.chainid)\n        return [global_state]\n\n    @StateTransition()\n    def selfbalance_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        balance = global_state.environment.active_account.balance()\n        global_state.mstate.stack.append(balance)\n        return [global_state]\n\n    @StateTransition()\n    def codesize_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        environment = global_state.environment\n        disassembly = environment.code\n        calldata = global_state.environment.calldata\n        if isinstance(global_state.current_transaction, ContractCreationTransaction):\n            # Hacky way to ensure constructor arguments work - Pick some reasonably large size.\n            no_of_bytes = len(disassembly.bytecode) // 2\n            if isinstance(calldata, ConcreteCalldata):\n                no_of_bytes += calldata.size\n            else:\n                no_of_bytes += 0x200  # space for 16 32-byte arguments\n                global_state.world_state.constraints.append(\n                    global_state.environment.calldata.size == no_of_bytes\n                )\n\n        else:\n            no_of_bytes = len(disassembly.bytecode) // 2\n        state.stack.append(no_of_bytes)\n        return [global_state]\n\n    @staticmethod\n    def _sha3_gas_helper(global_state, length):\n        min_gas, max_gas = calculate_sha3_gas(length)\n        global_state.mstate.min_gas_used += min_gas\n        global_state.mstate.max_gas_used += max_gas\n        StateTransition.check_gas_usage_limit(global_state)\n        return global_state\n\n    @StateTransition(enable_gas=False)\n    def sha3_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n\n        state = global_state.mstate\n        index, op1 = state.stack.pop(), state.stack.pop()\n\n        try:\n            length = util.get_concrete_int(op1)\n        except TypeError:\n            # Can't access symbolic memory offsets\n            length = 64\n            global_state.world_state.constraints.append(op1 == length)\n        Instruction._sha3_gas_helper(global_state, length)\n\n        state.mem_extend(index, length)\n        data_list = [\n            b if isinstance(b, BitVec) else symbol_factory.BitVecVal(b, 8)\n            for b in state.memory[index : index + length]\n        ]\n\n        if len(data_list) > 1:\n            data = simplify(Concat(data_list))\n        elif len(data_list) == 1:\n            data = data_list[0]\n        else:\n            # TODO: handle finding x where func(x)==func(\"\")\n            result = keccak_function_manager.get_empty_keccak_hash()\n            state.stack.append(result)\n            return [global_state]\n\n        result = keccak_function_manager.create_keccak(data)\n        state.stack.append(result)\n\n        return [global_state]\n\n    @StateTransition()\n    def gasprice_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.append(global_state.environment.gasprice)\n        return [global_state]\n\n    @StateTransition()\n    def basefee_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.append(global_state.environment.basefee)\n        return [global_state]\n\n    @StateTransition()\n    def codecopy_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        memory_offset, code_offset, size = (\n            global_state.mstate.stack.pop(),\n            global_state.mstate.stack.pop(),\n            global_state.mstate.stack.pop(),\n        )\n        code = global_state.environment.code.bytecode\n        if isinstance(code, tuple):\n            log.debug(\"unsupported symbolic code for CODECOPY\")\n            return [global_state]\n\n        if code.startswith(\"0x\"):\n            code = code[2:]\n        code_size = len(code) // 2\n        if isinstance(global_state.current_transaction, ContractCreationTransaction):\n            # Treat creation code after the expected disassembly as calldata.\n            # This is a slightly hacky way to ensure that symbolic constructor\n            # arguments work correctly.\n            mstate = global_state.mstate\n            offset = code_offset - code_size\n            log.debug(\"Copying from code offset: {} with size: {}\".format(offset, size))\n\n            if isinstance(global_state.environment.calldata, SymbolicCalldata):\n                if code_offset >= code_size:\n                    return self._calldata_copy_helper(\n                        global_state, mstate, memory_offset, offset, size\n                    )\n            else:\n                # Copy from both code and calldata appropriately.\n                concrete_code_offset = helper.get_concrete_int(code_offset)\n                concrete_size = helper.get_concrete_int(size)\n\n                code_copy_offset = concrete_code_offset\n                code_copy_size = (\n                    concrete_size\n                    if concrete_code_offset + concrete_size <= code_size\n                    else code_size - concrete_code_offset\n                )\n                code_copy_size = code_copy_size if code_copy_size >= 0 else 0\n\n                calldata_copy_offset = (\n                    concrete_code_offset - code_size\n                    if concrete_code_offset - code_size > 0\n                    else 0\n                )\n                calldata_copy_size = concrete_code_offset + concrete_size - code_size\n                calldata_copy_size = (\n                    calldata_copy_size if calldata_copy_size >= 0 else 0\n                )\n\n                [global_state] = self._code_copy_helper(\n                    code=global_state.environment.code.bytecode,\n                    memory_offset=memory_offset,\n                    code_offset=code_copy_offset,\n                    size=code_copy_size,\n                    op=\"CODECOPY\",\n                    global_state=global_state,\n                )\n                return self._calldata_copy_helper(\n                    global_state=global_state,\n                    mstate=mstate,\n                    mstart=memory_offset + code_copy_size,\n                    dstart=calldata_copy_offset,\n                    size=calldata_copy_size,\n                )\n\n        return self._code_copy_helper(\n            code=global_state.environment.code.bytecode,\n            memory_offset=memory_offset,\n            code_offset=code_offset,\n            size=size,\n            op=\"CODECOPY\",\n            global_state=global_state,\n        )\n\n    @StateTransition()\n    def extcodesize_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        addr = state.stack.pop()\n        try:\n            addr = hex(helper.get_concrete_int(addr))\n        except TypeError:\n            log.debug(\"unsupported symbolic address for EXTCODESIZE\")\n            state.stack.append(global_state.new_bitvec(\"extcodesize_\" + str(addr), 256))\n            return [global_state]\n        try:\n            code = global_state.world_state.accounts_exist_or_load(\n                addr, self.dynamic_loader\n            ).code.bytecode\n        except (ValueError, AttributeError) as e:\n            log.debug(\"error accessing contract storage due to: \" + str(e))\n            state.stack.append(global_state.new_bitvec(\"extcodesize_\" + str(addr), 256))\n            return [global_state]\n\n        state.stack.append(len(code) // 2)\n\n        return [global_state]\n\n    @staticmethod\n    def _code_copy_helper(\n        code: Union[str, Tuple],\n        memory_offset: Union[int, BitVec],\n        code_offset: Union[int, BitVec],\n        size: Union[int, BitVec],\n        op: str,\n        global_state: GlobalState,\n    ) -> List[GlobalState]:\n        try:\n            concrete_memory_offset = helper.get_concrete_int(memory_offset)\n        except TypeError:\n            log.debug(\"Unsupported symbolic memory offset in {}\".format(op))\n            return [global_state]\n\n        try:\n            concrete_size = helper.get_concrete_int(size)\n            global_state.mstate.mem_extend(concrete_memory_offset, concrete_size)\n\n        except TypeError:\n            # except both attribute error and Exception\n            global_state.mstate.mem_extend(concrete_memory_offset, 1)\n            global_state.mstate.memory[concrete_memory_offset] = (\n                global_state.new_bitvec(\n                    \"code({})\".format(\n                        global_state.environment.active_account.contract_name\n                    ),\n                    8,\n                )\n            )\n            return [global_state]\n\n        try:\n            concrete_code_offset = helper.get_concrete_int(code_offset)\n        except TypeError:\n            log.debug(\"Unsupported symbolic code offset in {}\".format(op))\n            global_state.mstate.mem_extend(concrete_memory_offset, concrete_size)\n            for i in range(concrete_size):\n                global_state.mstate.memory[concrete_memory_offset + i] = (\n                    global_state.new_bitvec(\n                        \"code({})\".format(\n                            global_state.environment.active_account.contract_name\n                        ),\n                        8,\n                    )\n                )\n            return [global_state]\n\n        if isinstance(code, str) and code.startswith(\"0x\"):\n            code = code[2:]\n\n        for i in range(concrete_size):\n            if isinstance(code, str):\n                if 2 * (concrete_code_offset + i + 1) > len(code):\n                    break\n\n                global_state.mstate.memory[concrete_memory_offset + i] = int(\n                    code[\n                        2 * (concrete_code_offset + i) : 2\n                        * (concrete_code_offset + i + 1)\n                    ],\n                    16,\n                )\n            else:\n                if (concrete_code_offset + i + 1) > len(code):\n                    break\n\n                global_state.mstate.memory[concrete_memory_offset + i] = code[\n                    concrete_code_offset + i\n                ]\n\n        return [global_state]\n\n    @StateTransition()\n    def extcodecopy_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        addr, memory_offset, code_offset, size = (\n            state.stack.pop(),\n            state.stack.pop(),\n            state.stack.pop(),\n            state.stack.pop(),\n        )\n        try:\n            addr = hex(helper.get_concrete_int(addr))\n        except TypeError:\n            log.debug(\"unsupported symbolic address for EXTCODECOPY\")\n            return [global_state]\n\n        try:\n            code = global_state.world_state.accounts_exist_or_load(\n                addr, self.dynamic_loader\n            ).code.bytecode\n        except (ValueError, AttributeError) as e:\n            log.debug(\"error accessing contract storage due to: \" + str(e))\n            return [global_state]\n\n        return self._code_copy_helper(\n            code=code,\n            memory_offset=memory_offset,\n            code_offset=code_offset,\n            size=size,\n            op=\"EXTCODECOPY\",\n            global_state=global_state,\n        )\n\n    @StateTransition()\n    def extcodehash_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return: List of global states possible, list of size 1 in this case\n        \"\"\"\n        world_state = global_state.world_state\n        stack = global_state.mstate.stack\n        address = Extract(159, 0, stack.pop())\n\n        if address.symbolic:\n            code_hash = symbol_factory.BitVecVal(int(get_code_hash(\"\"), 16), 256)\n        elif address.value not in world_state.accounts:\n            code_hash = symbol_factory.BitVecVal(0, 256)\n        else:\n            addr = \"0\" * (40 - len(hex(address.value)[2:])) + hex(address.value)[2:]\n            code = world_state.accounts_exist_or_load(\n                addr, self.dynamic_loader\n            ).code.bytecode\n            code_hash = symbol_factory.BitVecVal(int(get_code_hash(code), 16), 256)\n        stack.append(code_hash)\n        return [global_state]\n\n    @StateTransition()\n    def returndatacopy_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        memory_offset, return_offset, size = (\n            state.stack.pop(),\n            state.stack.pop(),\n            state.stack.pop(),\n        )\n\n        try:\n            concrete_memory_offset = helper.get_concrete_int(memory_offset)\n        except TypeError:\n            log.debug(\"Unsupported symbolic memory offset in RETURNDATACOPY\")\n            return [global_state]\n\n        try:\n            concrete_return_offset = helper.get_concrete_int(return_offset)\n        except TypeError:\n            log.debug(\"Unsupported symbolic return offset in RETURNDATACOPY\")\n            return [global_state]\n\n        try:\n            concrete_size = helper.get_concrete_int(size)\n        except TypeError:\n            log.debug(\"Unsupported symbolic max_length offset in RETURNDATACOPY\")\n            return [global_state]\n\n        if global_state.last_return_data is None:\n            return [global_state]\n\n        global_state.mstate.mem_extend(concrete_memory_offset, concrete_size)\n        for i in range(concrete_size):\n            global_state.mstate.memory[concrete_memory_offset + i] = (\n                global_state.last_return_data[concrete_return_offset + i]\n                if concrete_return_offset + i < global_state.last_return_data.size\n                else 0\n            )\n\n        return [global_state]\n\n    @StateTransition()\n    def returndatasize_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        if global_state.last_return_data:\n            global_state.mstate.stack.append(global_state.last_return_data.size)\n        else:\n            global_state.mstate.stack.append(0)\n        return [global_state]\n\n    @StateTransition()\n    def blockhash_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        blocknumber = state.stack.pop()\n        state.stack.append(\n            global_state.new_bitvec(\"blockhash_block_\" + str(blocknumber), 256)\n        )\n        return [global_state]\n\n    @StateTransition()\n    def coinbase_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.append(global_state.new_bitvec(\"coinbase\", 256))\n        return [global_state]\n\n    @StateTransition()\n    def timestamp_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.append(global_state.new_bitvec(\"timestamp\", 256))\n        return [global_state]\n\n    @StateTransition()\n    def number_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.append(global_state.environment.block_number)\n        return [global_state]\n\n    @StateTransition()\n    def difficulty_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.append(\n            global_state.new_bitvec(\"block_difficulty\", 256)\n        )\n        return [global_state]\n\n    @StateTransition()\n    def gaslimit_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.append(global_state.mstate.gas_limit)\n        return [global_state]\n\n    # Memory operations\n    @StateTransition()\n    def mload_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        offset = state.stack.pop()\n\n        state.mem_extend(offset, 32)\n        data = state.memory.get_word_at(offset)\n        state.stack.append(data)\n        return [global_state]\n\n    @StateTransition()\n    def mstore_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        mstart, value = state.stack.pop(), state.stack.pop()\n\n        try:\n            state.mem_extend(mstart, 32)\n        except Exception:\n            log.debug(\"Error extending memory\")\n\n        state.memory.write_word_at(mstart, value)\n\n        return [global_state]\n\n    @StateTransition()\n    def mstore8_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        offset, value = state.stack.pop(), state.stack.pop()\n\n        state.mem_extend(offset, 1)\n\n        try:\n            value_to_write: Union[int, BitVec] = util.get_concrete_int(value) % 256\n        except TypeError:  # BitVec\n            value_to_write = Extract(7, 0, value)\n\n        state.memory[offset] = value_to_write\n\n        return [global_state]\n\n    @StateTransition()\n    def sload_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n\n        state = global_state.mstate\n        index = state.stack.pop()\n        state.stack.append(global_state.environment.active_account.storage[index])\n        return [global_state]\n\n    @StateTransition(is_state_mutation_instruction=True)\n    def sstore_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        index, value = state.stack.pop(), state.stack.pop()\n        global_state.environment.active_account.storage[index] = value\n        return [global_state]\n\n    @StateTransition()\n    def tload_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n\n        state = global_state.mstate\n        address = global_state.environment.active_account.address\n        index = state.stack.pop()\n        value = global_state.world_state.transient_storage.get(address, index)\n        state.stack.append(value)\n        return [global_state]\n\n    @StateTransition(is_state_mutation_instruction=True)\n    def tstore_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        address = global_state.environment.active_account.address\n        index, value = state.stack.pop(), state.stack.pop()\n        global_state.world_state.transient_storage.set(address, index, value)\n        return [global_state]\n\n    @StateTransition(increment_pc=False, enable_gas=False)\n    def jump_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        disassembly = global_state.environment.code\n        try:\n            jump_addr = util.get_concrete_int(state.stack.pop())\n        except TypeError:\n            raise InvalidJumpDestination(\"Invalid jump argument (symbolic address)\")\n        except IndexError:\n            raise StackUnderflowException()\n\n        index = util.get_instruction_index(disassembly.instruction_list, jump_addr)\n        if index is None:\n            raise InvalidJumpDestination(\"JUMP to invalid address\")\n\n        op_code = disassembly.instruction_list[index][\"opcode\"]\n\n        if op_code != \"JUMPDEST\":\n            raise InvalidJumpDestination(\n                \"Skipping JUMP to invalid destination (not JUMPDEST): \" + str(jump_addr)\n            )\n\n        new_state = copy(global_state)\n        # add JUMP gas cost\n        min_gas, max_gas = get_opcode_gas(\"JUMP\")\n        new_state.mstate.min_gas_used += min_gas\n        new_state.mstate.max_gas_used += max_gas\n\n        # manually set PC to destination\n        new_state.mstate.pc = index\n\n        return [new_state]\n\n    @StateTransition(increment_pc=False, enable_gas=False)\n    def jumpi_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        state = global_state.mstate\n        disassembly = global_state.environment.code\n        min_gas, max_gas = get_opcode_gas(\"JUMPI\")\n        states = []\n\n        op0, condition = state.stack.pop(), state.stack.pop()\n\n        try:\n            jump_addr = util.get_concrete_int(op0)\n        except TypeError:\n            log.debug(\"Skipping JUMPI to invalid destination.\")\n            global_state.mstate.pc += 1\n            global_state.mstate.min_gas_used += min_gas\n            global_state.mstate.max_gas_used += max_gas\n            return [global_state]\n        # False case\n\n        negated = (\n            simplify(Not(condition)) if isinstance(condition, Bool) else condition == 0\n        )\n        negated.simplify()\n        # True case\n        condi = simplify(condition) if isinstance(condition, Bool) else condition != 0\n        condi.simplify()\n\n        negated_cond = (isinstance(negated, bool) and negated) or (\n            isinstance(negated, Bool) and not is_false(negated)\n        )\n        positive_cond = (isinstance(condi, bool) and condi) or (\n            isinstance(condi, Bool) and not is_false(condi)\n        )\n\n        if negated_cond:\n            # States have to be deep copied during a fork as summaries assume independence across states.\n            new_state = deepcopy(global_state)\n            # add JUMPI gas cost\n            new_state.mstate.min_gas_used += min_gas\n            new_state.mstate.max_gas_used += max_gas\n\n            # manually increment PC\n\n            new_state.mstate.depth += 1\n            new_state.mstate.pc += 1\n            new_state.world_state.constraints.append(negated)\n            states.append(new_state)\n        else:\n            log.debug(\"Pruned unreachable states.\")\n\n        # Get jump destination\n        index = util.get_instruction_index(disassembly.instruction_list, jump_addr)\n\n        if index is None:\n            log.debug(\"Invalid jump destination: \" + str(jump_addr))\n            return states\n\n        instr = disassembly.instruction_list[index]\n\n        if instr[\"opcode\"] == \"JUMPDEST\":\n            if positive_cond:\n                new_state = deepcopy(global_state)\n                # add JUMPI gas cost\n                new_state.mstate.min_gas_used += min_gas\n                new_state.mstate.max_gas_used += max_gas\n\n                # manually set PC to destination\n                new_state.mstate.pc = index\n                new_state.mstate.depth += 1\n                new_state.world_state.constraints.append(condi)\n                states.append(new_state)\n            else:\n                log.debug(\"Pruned unreachable states.\")\n        return states\n\n    @StateTransition()\n    def pc_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        index = global_state.mstate.pc\n        program_counter = global_state.environment.code.instruction_list[index][\n            \"address\"\n        ]\n        global_state.mstate.stack.append(symbol_factory.BitVecVal(program_counter, 256))\n\n        return [global_state]\n\n    @StateTransition()\n    def msize_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        global_state.mstate.stack.append(global_state.mstate.memory_size)\n        return [global_state]\n\n    @StateTransition()\n    def gas_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        # TODO: Push a Constrained variable which lies between min gas and max gas\n        global_state.mstate.stack.append(global_state.new_bitvec(\"gas\", 256))\n        return [global_state]\n\n    @StateTransition(is_state_mutation_instruction=True)\n    def log_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        # TODO: implement me\n        state = global_state.mstate\n        depth = int(self.op_code[3:])\n        state.stack.pop(), state.stack.pop()\n        _ = [state.stack.pop() for _ in range(depth)]\n        # Not supported\n        return [global_state]\n\n    def _create_transaction_helper(\n        self, global_state, call_value, mem_offset, mem_size, create2_salt=None\n    ) -> List[GlobalState]:\n        mstate = global_state.mstate\n        environment = global_state.environment\n        world_state = global_state.world_state\n\n        call_data = get_call_data(global_state, mem_offset, mem_offset + mem_size)\n        code_raw: List[int] = []\n        code_end = call_data.size\n        size = call_data.size\n\n        if isinstance(size, BitVec):\n            # Other size restriction checks handle this\n            if size.symbolic:\n                size = 10**4\n            else:\n                size = size.value\n        code_raw = []\n        constraints = global_state.world_state.constraints\n        try:\n            model = get_model(constraints)\n        except UnsatError:\n            model = None\n        if isinstance(call_data, ConcreteCalldata):\n            for element in call_data.concrete(model):\n                if isinstance(element, BitVec) and element.symbolic:\n                    break\n                if isinstance(element, BitVec):\n                    code_raw.append(element.value)\n                else:\n                    code_raw.append(element)\n\n        if len(code_raw) < 1:\n            global_state.mstate.stack.append(1)\n            log.debug(\"No code found for trying to execute a create type instruction.\")\n            return [global_state]\n\n        code_str = bytes.hex(bytes(code_raw))\n\n        next_transaction_id = tx_id_manager.get_next_tx_id()\n        constructor_arguments = ConcreteCalldata(\n            next_transaction_id, call_data[code_end:]\n        )\n        code = Disassembly(code_str)\n\n        caller = environment.active_account.address\n        gas_price = environment.gasprice\n        origin = environment.origin\n\n        contract_address: Union[BitVec, int] = None\n        Instruction._sha3_gas_helper(global_state, len(code_str[2:]) // 2)\n\n        if create2_salt:\n            if create2_salt.symbolic:\n                if create2_salt.size() != 256:\n                    pad = symbol_factory.BitVecVal(0, 256 - create2_salt.size())\n                    create2_salt = Concat(pad, create2_salt)\n                address = keccak_function_manager.create_keccak(\n                    Concat(\n                        symbol_factory.BitVecVal(255, 8),\n                        caller,\n                        create2_salt,\n                        symbol_factory.BitVecVal(int(get_code_hash(code_str), 16), 256),\n                    )\n                )\n                contract_address = Extract(255, 96, address)\n\n            else:\n                salt = hex(create2_salt.value)[2:]\n                salt = \"0\" * (64 - len(salt)) + salt\n\n                addr = hex(caller.value)[2:]\n                addr = \"0\" * (40 - len(addr)) + addr\n\n                contract_address = int(\n                    get_code_hash(\"0xff\" + addr + salt + get_code_hash(code_str)[2:])[\n                        26:\n                    ],\n                    16,\n                )\n        transaction = ContractCreationTransaction(\n            world_state=world_state,\n            caller=caller,\n            code=code,\n            call_data=constructor_arguments,\n            gas_price=gas_price,\n            gas_limit=mstate.gas_limit,\n            origin=origin,\n            call_value=call_value,\n            contract_address=contract_address,\n        )\n        log.info(\"Raise transaction start signal\")\n        raise TransactionStartSignal(transaction, self.op_code, global_state)\n\n    @StateTransition(is_state_mutation_instruction=True)\n    def create_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        call_value, mem_offset, mem_size = global_state.mstate.pop(3)\n        return self._create_transaction_helper(\n            global_state, call_value, mem_offset, mem_size\n        )\n\n    @StateTransition()\n    def create_post(self, global_state: GlobalState) -> List[GlobalState]:\n        return self._handle_create_type_post(global_state)\n\n    @StateTransition(is_state_mutation_instruction=True)\n    def create2_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        call_value, mem_offset, mem_size, salt = global_state.mstate.pop(4)\n\n        return self._create_transaction_helper(\n            global_state, call_value, mem_offset, mem_size, salt\n        )\n\n    @StateTransition()\n    def create2_post(self, global_state: GlobalState) -> List[GlobalState]:\n        return self._handle_create_type_post(global_state, opcode=\"create2\")\n\n    @staticmethod\n    def _handle_create_type_post(global_state, opcode=\"create\"):\n        if opcode == \"create2\":\n            global_state.mstate.pop(4)\n        else:\n            global_state.mstate.pop(3)\n        if global_state.last_return_data:\n            return_val = symbol_factory.BitVecVal(\n                int(global_state.last_return_data.return_data, 16), 256\n            )\n        else:\n            return_val = symbol_factory.BitVecVal(0, 256)\n        global_state.mstate.stack.append(return_val)\n        return [global_state]\n\n    @StateTransition()\n    def return_(self, global_state: GlobalState):\n        \"\"\"\n\n        :param global_state:\n        \"\"\"\n        state = global_state.mstate\n        offset, length = state.stack.pop(), state.stack.pop()\n        if length.symbolic:\n            return_data = [global_state.new_bitvec(\"return_data\", 8)]\n            log.debug(\"Return with symbolic length or offset. Not supported\")\n        else:\n            state.mem_extend(offset, length)\n            StateTransition.check_gas_usage_limit(global_state)\n            return_data = state.memory[offset : offset + length]\n        global_state.current_transaction.end(\n            global_state, ReturnData(return_data, length)\n        )\n\n    @StateTransition(is_state_mutation_instruction=True)\n    def selfdestruct_(self, global_state: GlobalState):\n        \"\"\"\n\n        :param global_state:\n        \"\"\"\n        target = global_state.mstate.stack.pop()\n        transfer_amount = global_state.environment.active_account.balance()\n        # Often the target of the selfdestruct instruction will be symbolic\n        # If it isn't then we'll transfer the balance to the indicated contract\n        global_state.world_state.balances[target] += transfer_amount\n\n        global_state.environment.active_account = deepcopy(\n            global_state.environment.active_account\n        )\n        global_state.accounts[global_state.environment.active_account.address.value] = (\n            global_state.environment.active_account\n        )\n\n        global_state.environment.active_account.set_balance(0)\n        global_state.environment.active_account.deleted = True\n        global_state.current_transaction.end(global_state)\n\n    @StateTransition()\n    def revert_(self, global_state: GlobalState) -> None:\n        \"\"\"\n\n        :param global_state:\n        \"\"\"\n        state = global_state.mstate\n        offset, length = state.stack.pop(), state.stack.pop()\n        if length.symbolic is False:\n            return_data = [\n                global_state.new_bitvec(\n                    f\"{global_state.current_transaction.id}_return_data_{i}\", 8\n                )\n                for i in range(length.value)\n            ]\n        else:\n            return_data = [\n                If(\n                    i < length,\n                    global_state.new_bitvec(\n                        f\"{global_state.current_transaction.id}_return_data_{i}\", 8\n                    ),\n                    0,\n                )\n                for i in range(300)\n            ]\n\n        try:\n            return_data = state.memory[\n                util.get_concrete_int(offset) : util.get_concrete_int(offset + length)\n            ]\n        except TypeError:\n            log.debug(\"Return with symbolic length or offset. Not supported\")\n        global_state.current_transaction.end(\n            global_state, return_data=ReturnData(return_data, length), revert=True\n        )\n\n    @StateTransition()\n    def assert_fail_(self, global_state: GlobalState):\n        \"\"\"\n\n        :param global_state:\n        \"\"\"\n        # 0xfe: designated invalid opcode\n        raise InvalidInstruction\n\n    @StateTransition()\n    def invalid_(self, global_state: GlobalState):\n        \"\"\"\n\n        :param global_state:\n        \"\"\"\n        raise InvalidInstruction\n\n    @StateTransition()\n    def stop_(self, global_state: GlobalState):\n        \"\"\"\n\n        :param global_state:\n        \"\"\"\n        global_state.current_transaction.end(global_state)\n\n    @staticmethod\n    def _write_symbolic_returndata(\n        global_state: GlobalState, memory_out_offset: BitVec, memory_out_size: BitVec\n    ):\n        \"\"\"\n        Writes symbolic return-data into memory, The memory offset and size should be concrete\n        :param global_state:\n        :param memory_out_offset:\n        :param memory_out_size:\n        :return:\n        \"\"\"\n        if memory_out_offset.symbolic is True or memory_out_size.symbolic is True:\n            return\n        return_data = []\n        return_data_size = global_state.new_bitvec(\"returndatasize\", 256)\n\n        for i in range(memory_out_size.value):\n            data = global_state.new_bitvec(\n                \"call_output_var({})_{}\".format(\n                    simplify(memory_out_offset + i), global_state.mstate.pc\n                ),\n                8,\n            )\n            return_data.append(data)\n\n        global_state.mstate.mem_extend(memory_out_offset, memory_out_size)\n        for i in range(memory_out_size.value):\n            global_state.mstate.memory[memory_out_offset + i] = If(\n                i <= return_data_size,\n                return_data[i],\n                global_state.mstate.memory[memory_out_offset + i],\n            )\n\n        global_state.last_return_data = ReturnData(\n            return_data=return_data, return_data_size=return_data_size\n        )\n\n    @StateTransition()\n    def call_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        instr = global_state.get_current_instruction()\n        environment = global_state.environment\n\n        memory_out_size, memory_out_offset = global_state.mstate.stack[-7:-5]\n        try:\n            (\n                callee_address,\n                callee_account,\n                call_data,\n                value,\n                gas,\n                memory_out_offset,\n                memory_out_size,\n            ) = get_call_parameters(global_state, self.dynamic_loader, True)\n\n            if callee_account is not None and callee_account.code.bytecode == \"\":\n                log.debug(\"The call is related to ether transfer between accounts\")\n                sender = environment.active_account.address\n                receiver = callee_account.address\n\n                transfer_ether(global_state, sender, receiver, value)\n                self._write_symbolic_returndata(\n                    global_state, memory_out_offset, memory_out_size\n                )\n\n                global_state.mstate.stack.append(\n                    global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n                )\n                return [global_state]\n\n        except ValueError as e:\n            log.debug(\n                \"Could not determine required parameters for call, putting fresh symbol on the stack. \\n{}\".format(\n                    e\n                )\n            )\n            self._write_symbolic_returndata(\n                global_state, memory_out_offset, memory_out_size\n            )\n            # TODO: decide what to do in this case\n            global_state.mstate.stack.append(\n                global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n            )\n            return [global_state]\n\n        if environment.static:\n            if isinstance(value, int) and value > 0:\n                raise WriteProtection(\n                    \"Cannot call with non zero value in a static call\"\n                )\n            if isinstance(value, BitVec):\n                if value.symbolic:\n                    global_state.world_state.constraints.append(\n                        value == symbol_factory.BitVecVal(0, 256)\n                    )\n                elif value.value > 0:\n                    raise WriteProtection(\n                        \"Cannot call with non zero value in a static call\"\n                    )\n\n        native_result = native_call(\n            global_state, callee_address, call_data, memory_out_offset, memory_out_size\n        )\n        if native_result:\n            return native_result\n        transaction = MessageCallTransaction(\n            world_state=global_state.world_state,\n            gas_price=environment.gasprice,\n            gas_limit=gas,\n            origin=environment.origin,\n            caller=environment.active_account.address,\n            callee_account=callee_account,\n            call_data=call_data,\n            call_value=value,\n            static=environment.static,\n        )\n        raise TransactionStartSignal(transaction, self.op_code, global_state)\n\n    @StateTransition()\n    def call_post(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n\n        return self.post_handler(global_state, function_name=\"call\")\n\n    @StateTransition()\n    def callcode_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        instr = global_state.get_current_instruction()\n        environment = global_state.environment\n        memory_out_size, memory_out_offset = global_state.mstate.stack[-7:-5]\n        try:\n            (\n                callee_address,\n                callee_account,\n                call_data,\n                value,\n                gas,\n                _,\n                _,\n            ) = get_call_parameters(global_state, self.dynamic_loader, True)\n\n            if callee_account is not None and callee_account.code.bytecode == \"\":\n                log.debug(\"The call is related to ether transfer between accounts\")\n                sender = global_state.environment.active_account.address\n                receiver = callee_account.address\n                transfer_ether(global_state, sender, receiver, value)\n                self._write_symbolic_returndata(\n                    global_state, memory_out_offset, memory_out_size\n                )\n\n                global_state.mstate.stack.append(\n                    global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n                )\n                return [global_state]\n\n        except ValueError as e:\n            log.debug(\n                \"Could not determine required parameters for call, putting fresh symbol on the stack. \\n{}\".format(\n                    e\n                )\n            )\n            self._write_symbolic_returndata(\n                global_state, memory_out_offset, memory_out_size\n            )\n            global_state.mstate.stack.append(\n                global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n            )\n            return [global_state]\n\n        native_result = native_call(\n            global_state, callee_address, call_data, memory_out_offset, memory_out_size\n        )\n        if native_result:\n            return native_result\n\n        transaction = MessageCallTransaction(\n            world_state=global_state.world_state,\n            gas_price=environment.gasprice,\n            gas_limit=gas,\n            origin=environment.origin,\n            code=callee_account.code,\n            caller=environment.address,\n            callee_account=environment.active_account,\n            call_data=call_data,\n            call_value=value,\n            static=environment.static,\n        )\n        raise TransactionStartSignal(transaction, self.op_code, global_state)\n\n    @StateTransition()\n    def callcode_post(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        instr = global_state.get_current_instruction()\n        memory_out_size, memory_out_offset = global_state.mstate.stack[-7:-5]\n        try:\n            (\n                _,\n                _,\n                _,\n                _,\n                _,\n                memory_out_offset,\n                memory_out_size,\n            ) = get_call_parameters(global_state, self.dynamic_loader, True)\n        except ValueError as e:\n            log.debug(\n                \"Could not determine required parameters for call, putting fresh symbol on the stack. \\n{}\".format(\n                    e\n                )\n            )\n            self._write_symbolic_returndata(\n                global_state, memory_out_offset, memory_out_size\n            )\n            global_state.mstate.stack.append(\n                global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n            )\n            return [global_state]\n\n        if global_state.last_return_data is None:\n            # Put return value on stack\n            return_value = global_state.new_bitvec(\n                \"retval_\" + str(instr[\"address\"]), 256\n            )\n            global_state.mstate.stack.append(return_value)\n            self._write_symbolic_returndata(\n                global_state, memory_out_offset, memory_out_size\n            )\n            global_state.world_state.constraints.append(return_value == 0)\n            return [global_state]\n\n        try:\n            memory_out_offset = (\n                util.get_concrete_int(memory_out_offset)\n                if isinstance(memory_out_offset, Expression)\n                else memory_out_offset\n            )\n            memory_out_size = (\n                util.get_concrete_int(memory_out_size)\n                if isinstance(memory_out_size, Expression)\n                else memory_out_size\n            )\n        except TypeError:\n            global_state.mstate.stack.append(\n                global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n            )\n            return [global_state]\n\n        # Copy memory\n        global_state.mstate.mem_extend(\n            memory_out_offset, min(memory_out_size, global_state.last_return_data.size)\n        )\n        if global_state.last_return_data.size.symbolic:\n            ret_size = 500\n        else:\n            ret_size = global_state.last_return_data.size.value\n        for i in range(min(memory_out_size, ret_size)):\n            global_state.mstate.memory[i + memory_out_offset] = (\n                global_state.last_return_data[i]\n            )\n\n        # Put return value on stack\n        return_value = global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n        global_state.mstate.stack.append(return_value)\n        global_state.world_state.constraints.append(return_value == 1)\n        return [global_state]\n\n    @StateTransition()\n    def delegatecall_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        instr = global_state.get_current_instruction()\n        environment = global_state.environment\n        memory_out_size, memory_out_offset = global_state.mstate.stack[-6:-4]\n\n        try:\n            (\n                callee_address,\n                callee_account,\n                call_data,\n                value,\n                gas,\n                _,\n                _,\n            ) = get_call_parameters(global_state, self.dynamic_loader)\n\n            if callee_account is not None and callee_account.code.bytecode == \"\":\n                log.debug(\"The call is related to ether transfer between accounts\")\n                sender = global_state.environment.active_account.address\n                receiver = callee_account.address\n\n                transfer_ether(global_state, sender, receiver, value)\n                self._write_symbolic_returndata(\n                    global_state, memory_out_offset, memory_out_size\n                )\n                global_state.mstate.stack.append(\n                    global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n                )\n                return [global_state]\n        except ValueError as e:\n            log.debug(\n                \"Could not determine required parameters for call, putting fresh symbol on the stack. \\n{}\".format(\n                    e\n                )\n            )\n            self._write_symbolic_returndata(\n                global_state, memory_out_offset, memory_out_size\n            )\n            global_state.mstate.stack.append(\n                global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n            )\n            return [global_state]\n\n        native_result = native_call(\n            global_state, callee_address, call_data, memory_out_offset, memory_out_size\n        )\n        if native_result:\n            return native_result\n\n        transaction = MessageCallTransaction(\n            world_state=global_state.world_state,\n            gas_price=environment.gasprice,\n            gas_limit=gas,\n            origin=environment.origin,\n            code=callee_account.code,\n            caller=environment.sender,\n            callee_account=environment.active_account,\n            call_data=call_data,\n            call_value=environment.callvalue,\n            static=environment.static,\n        )\n        raise TransactionStartSignal(transaction, self.op_code, global_state)\n\n    @StateTransition()\n    def delegatecall_post(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        instr = global_state.get_current_instruction()\n        memory_out_size, memory_out_offset = global_state.mstate.stack[-6:-4]\n\n        try:\n            (\n                _,\n                _,\n                _,\n                _,\n                _,\n                memory_out_offset,\n                memory_out_size,\n            ) = get_call_parameters(global_state, self.dynamic_loader)\n        except ValueError as e:\n            log.debug(\n                \"Could not determine required parameters for call, putting fresh symbol on the stack. \\n{}\".format(\n                    e\n                )\n            )\n            global_state.mstate.stack.append(\n                global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n            )\n            self._write_symbolic_returndata(\n                global_state, memory_out_offset, memory_out_size\n            )\n            return [global_state]\n\n        if global_state.last_return_data is None:\n            # Put return value on stack\n            return_value = global_state.new_bitvec(\n                \"retval_\" + str(instr[\"address\"]), 256\n            )\n            global_state.mstate.stack.append(return_value)\n            global_state.world_state.constraints.append(return_value == 0)\n            return [global_state]\n\n        try:\n            memory_out_offset = (\n                util.get_concrete_int(memory_out_offset)\n                if isinstance(memory_out_offset, Expression)\n                else memory_out_offset\n            )\n            memory_out_size = (\n                util.get_concrete_int(memory_out_size)\n                if isinstance(memory_out_size, Expression)\n                else memory_out_size\n            )\n        except TypeError:\n            global_state.mstate.stack.append(\n                global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n            )\n            return [global_state]\n\n            # Copy memory\n        global_state.mstate.mem_extend(\n            memory_out_offset, min(memory_out_size, global_state.last_return_data.size)\n        )\n        if global_state.last_return_data.size.symbolic:\n            ret_size = 500\n        else:\n            ret_size = global_state.last_return_data.size.value\n        for i in range(min(memory_out_size, ret_size)):\n            global_state.mstate.memory[i + memory_out_offset] = (\n                global_state.last_return_data[i]\n            )\n\n        # Put return value on stack\n        return_value = global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n        global_state.mstate.stack.append(return_value)\n        global_state.world_state.constraints.append(return_value == 1)\n        return [global_state]\n\n    @StateTransition()\n    def staticcall_(self, global_state: GlobalState) -> List[GlobalState]:\n        \"\"\"\n\n        :param global_state:\n        :return:\n        \"\"\"\n        instr = global_state.get_current_instruction()\n        environment = global_state.environment\n        memory_out_size, memory_out_offset = global_state.mstate.stack[-6:-4]\n        try:\n            (\n                callee_address,\n                callee_account,\n                call_data,\n                value,\n                gas,\n                memory_out_offset,\n                memory_out_size,\n            ) = get_call_parameters(global_state, self.dynamic_loader)\n\n            if callee_account is not None and callee_account.code.bytecode == \"\":\n                log.debug(\"The call is related to ether transfer between accounts\")\n                sender = environment.active_account.address\n                receiver = callee_account.address\n                transfer_ether(global_state, sender, receiver, value)\n                self._write_symbolic_returndata(\n                    global_state, memory_out_offset, memory_out_size\n                )\n                global_state.mstate.stack.append(\n                    global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n                )\n\n                return [global_state]\n\n        except ValueError as e:\n            log.debug(\n                \"Could not determine required parameters for call, putting fresh symbol on the stack. \\n{}\".format(\n                    e\n                )\n            )\n            self._write_symbolic_returndata(\n                global_state, memory_out_offset, memory_out_size\n            )\n            global_state.mstate.stack.append(\n                global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n            )\n\n            return [global_state]\n\n        native_result = native_call(\n            global_state, callee_address, call_data, memory_out_offset, memory_out_size\n        )\n\n        if native_result:\n            return native_result\n\n        transaction = MessageCallTransaction(\n            world_state=global_state.world_state,\n            gas_price=environment.gasprice,\n            gas_limit=gas,\n            origin=environment.origin,\n            code=callee_account.code,\n            caller=environment.address,\n            callee_account=callee_account,\n            call_data=call_data,\n            call_value=value,\n            static=True,\n        )\n        raise TransactionStartSignal(transaction, self.op_code, global_state)\n\n    @StateTransition()\n    def staticcall_post(self, global_state: GlobalState) -> List[GlobalState]:\n        return self.post_handler(global_state, function_name=\"staticcall\")\n\n    def post_handler(self, global_state, function_name: str):\n        instr = global_state.get_current_instruction()\n        if function_name in (\"staticcall\", \"delegatecall\"):\n            memory_out_size, memory_out_offset = global_state.mstate.stack[-6:-4]\n        else:\n            memory_out_size, memory_out_offset = global_state.mstate.stack[-7:-5]\n\n        try:\n            with_value = function_name != \"staticcall\"\n            (\n                _,\n                _,\n                _,\n                _,\n                _,\n                memory_out_offset,\n                memory_out_size,\n            ) = get_call_parameters(global_state, self.dynamic_loader, with_value)\n        except ValueError as e:\n            log.debug(\n                \"Could not determine required parameters for {}, putting fresh symbol on the stack. \\n{}\".format(\n                    function_name, e\n                )\n            )\n            self._write_symbolic_returndata(\n                global_state, memory_out_offset, memory_out_size\n            )\n            global_state.mstate.stack.append(\n                global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n            )\n            return [global_state]\n\n        if global_state.last_return_data is None:\n            # Put return value on stack\n            return_value = global_state.new_bitvec(\n                \"retval_\" + str(instr[\"address\"]), 256\n            )\n            global_state.mstate.stack.append(return_value)\n            return [global_state]\n\n        try:\n            memory_out_offset = (\n                util.get_concrete_int(memory_out_offset)\n                if isinstance(memory_out_offset, Expression)\n                else memory_out_offset\n            )\n            memory_out_size = (\n                util.get_concrete_int(memory_out_size)\n                if isinstance(memory_out_size, Expression)\n                else memory_out_size\n            )\n        except TypeError:\n            global_state.mstate.stack.append(\n                global_state.new_bitvec(\"retval_\" + str(instr[\"address\"]), 256)\n            )\n            return [global_state]\n\n        global_state.mstate.mem_extend(\n            memory_out_offset, min(memory_out_size, global_state.last_return_data.size)\n        )\n        if global_state.last_return_data.size.symbolic:\n            ret_size = 500\n        else:\n            ret_size = global_state.last_return_data.size.value\n\n        for i in range(min(memory_out_size, ret_size)):\n            global_state.mstate.memory[i + memory_out_offset] = (\n                global_state.last_return_data[i]\n            )\n\n        # Put return value on stack\n        return_value = global_state.new_bitvec(\n            \"retval_\" + str(global_state.get_current_instruction()[\"address\"]), 256\n        )\n        global_state.mstate.stack.append(return_value)\n        global_state.world_state.constraints.append(return_value == 1)\n\n        return [global_state]\n"
  },
  {
    "path": "mythril/laser/ethereum/natives.py",
    "content": "\"\"\"This nodule defines helper functions to deal with native calls.\"\"\"\n\nimport hashlib\nimport logging\nfrom typing import List\n\nimport blake2b\nimport coincurve\nimport py_ecc.optimized_bn128 as bn128\nfrom eth._utils.blake2.coders import extract_blake2b_parameters\nfrom eth._utils.bn128 import validate_point\nfrom eth_utils import ValidationError, big_endian_to_int, int_to_big_endian\nfrom py_ecc.secp256k1 import N as secp256k1n\nfrom py_ecc.secp256k1 import ecdsa_raw_recover\nfrom rlp.utils import ALL_BYTES\n\nfrom mythril.laser.ethereum.state.calldata import BaseCalldata, ConcreteCalldata\nfrom mythril.laser.ethereum.util import extract32, extract_copy\nfrom mythril.support.support_utils import sha3, zpad\n\nlog = logging.getLogger(__name__)\n\n\ndef encode_int32(v):\n    return v.to_bytes(32, byteorder=\"big\")\n\n\ndef safe_ord(value):\n    if isinstance(value, int):\n        return value\n    else:\n        return ord(value)\n\n\ndef int_to_32bytearray(i):\n    o = [0] * 32\n    for x in range(32):\n        o[31 - x] = i & 0xFF\n        i >>= 8\n    return o\n\n\ndef ecrecover_to_pub(rawhash, v, r, s):\n    if hasattr(coincurve, \"PublicKey\"):\n        try:\n            pk = coincurve.PublicKey.from_signature_and_message(\n                zpad(bytes(int_to_32bytearray(r)), 32)\n                + zpad(bytes(int_to_32bytearray(s)), 32)\n                + ALL_BYTES[v - 27],\n                rawhash,\n                hasher=None,\n            )\n            pub = pk.format(compressed=False)[1:]\n        except BaseException:\n            pub = b\"\\x00\" * 64\n    else:\n        result = ecdsa_raw_recover(rawhash, (v, r, s))\n        if result:\n            x, y = result\n            pub = encode_int32(x) + encode_int32(y)\n        else:\n            raise ValueError(\"Invalid VRS\")\n    assert len(pub) == 64\n    return pub\n\n\nclass NativeContractException(Exception):\n    \"\"\"An exception denoting an error during a native call.\"\"\"\n\n    pass\n\n\ndef ecrecover(data: List[int]) -> List[int]:\n    \"\"\"\n\n    :param data:\n    :return:\n    \"\"\"\n    # TODO: Add type hints\n    try:\n        bytes_data = bytearray(data)\n        v = extract32(bytes_data, 32)\n        r = extract32(bytes_data, 64)\n        s = extract32(bytes_data, 96)\n    except TypeError:\n        raise NativeContractException\n\n    message = b\"\".join([ALL_BYTES[x] for x in bytes_data[0:32]])\n    if r >= secp256k1n or s >= secp256k1n or v < 27 or v > 28:\n        return []\n    try:\n        pub = ecrecover_to_pub(message, v, r, s)\n    except Exception as e:\n        log.debug(\"An error has occurred while extracting public key: \" + str(e))\n        return []\n    o = [0] * 12 + [x for x in sha3(pub)[-20:]]\n    return list(bytearray(o))\n\n\ndef sha256(data: List[int]) -> List[int]:\n    \"\"\"\n\n    :param data:\n    :return:\n    \"\"\"\n    try:\n        bytes_data = bytes(data)\n    except TypeError:\n        raise NativeContractException\n    return list(bytearray(hashlib.sha256(bytes_data).digest()))\n\n\ndef ripemd160(data: List[int]) -> List[int]:\n    \"\"\"\n\n    :param data:\n    :return:\n    \"\"\"\n    try:\n        bytes_data = bytes(data)\n    except TypeError:\n        raise NativeContractException\n    digest = hashlib.new(\"ripemd160\", bytes_data).digest()\n    padded = 12 * [0] + list(digest)\n    return list(bytearray(bytes(padded)))\n\n\ndef identity(data: List[int]) -> List[int]:\n    \"\"\"\n\n    :param data:\n    :return:\n    \"\"\"\n    return data\n\n\ndef mod_exp(data: List[int]) -> List[int]:\n    \"\"\"\n    TODO: Some symbolic parts can be handled here\n    Modular Exponentiation\n    :param data: Data with <length_of_BASE> <length_of_EXPONENT> <length_of_MODULUS> <BASE> <EXPONENT> <MODULUS>\n    :return: modular exponentiation\n    \"\"\"\n    bytes_data = bytearray(data)\n    baselen = extract32(bytes_data, 0)\n    explen = extract32(bytes_data, 32)\n    modlen = extract32(bytes_data, 64)\n    if baselen == 0:\n        return [0] * modlen\n    if modlen == 0:\n        return []\n\n    first_exp_bytes = extract32(bytes_data, 96 + baselen) >> (8 * max(32 - explen, 0))\n    while first_exp_bytes:\n        first_exp_bytes >>= 1\n\n    base = bytearray(baselen)\n    extract_copy(bytes_data, base, 0, 96, baselen)\n    exp = bytearray(explen)\n    extract_copy(bytes_data, exp, 0, 96 + baselen, explen)\n    mod = bytearray(modlen)\n    extract_copy(bytes_data, mod, 0, 96 + baselen + explen, modlen)\n    if big_endian_to_int(mod) == 0:\n        return [0] * modlen\n    o = pow(big_endian_to_int(base), big_endian_to_int(exp), big_endian_to_int(mod))\n    return [safe_ord(x) for x in zpad(int_to_big_endian(o), modlen)]\n\n\ndef ec_add(data: List[int]) -> List[int]:\n    bytes_data = bytearray(data)\n    x1 = extract32(bytes_data, 0)\n    y1 = extract32(bytes_data, 32)\n    x2 = extract32(bytes_data, 64)\n    y2 = extract32(bytes_data, 96)\n    try:\n        p1 = validate_point(x1, y1)\n        p2 = validate_point(x2, y2)\n    except ValidationError:\n        return []\n    if p1 is False or p2 is False:\n        return []\n    o = bn128.normalize(bn128.add(p1, p2))\n    return [safe_ord(x) for x in (encode_int32(o[0].n) + encode_int32(o[1].n))]\n\n\ndef ec_mul(data: List[int]) -> List[int]:\n    bytes_data = bytearray(data)\n    x = extract32(bytes_data, 0)\n    y = extract32(bytes_data, 32)\n    m = extract32(bytes_data, 64)\n    try:\n        p = validate_point(x, y)\n    except ValidationError:\n        return []\n    if p is False:\n        return []\n    o = bn128.normalize(bn128.multiply(p, m))\n    return [safe_ord(c) for c in (encode_int32(o[0].n) + encode_int32(o[1].n))]\n\n\ndef ec_pair(data: List[int]) -> List[int]:\n    if len(data) % 192:\n        return []\n\n    zero = (bn128.FQ2.one(), bn128.FQ2.one(), bn128.FQ2.zero())\n    exponent = bn128.FQ12.one()\n    bytes_data = bytearray(data)\n    for i in range(0, len(bytes_data), 192):\n        x1 = extract32(bytes_data, i)\n        y1 = extract32(bytes_data, i + 32)\n        x2_i = extract32(bytes_data, i + 64)\n        x2_r = extract32(bytes_data, i + 96)\n        y2_i = extract32(bytes_data, i + 128)\n        y2_r = extract32(bytes_data, i + 160)\n        p1 = validate_point(x1, y1)\n        if p1 is False:\n            return []\n        for v in (x2_i, x2_r, y2_i, y2_r):\n            if v >= bn128.field_modulus:\n                return []\n        fq2_x = bn128.FQ2([x2_r, x2_i])\n        fq2_y = bn128.FQ2([y2_r, y2_i])\n        if (fq2_x, fq2_y) != (bn128.FQ2.zero(), bn128.FQ2.zero()):\n            p2 = (fq2_x, fq2_y, bn128.FQ2.one())\n            if not bn128.is_on_curve(p2, bn128.b2):\n                return []\n        else:\n            p2 = zero\n        if bn128.multiply(p2, bn128.curve_order)[-1] != bn128.FQ2.zero():\n            return []\n        exponent *= bn128.pairing(p2, p1, final_exponentiate=False)\n    result = bn128.final_exponentiate(exponent) == bn128.FQ12.one()\n    return [0] * 31 + [1 if result else 0]\n\n\ndef blake2b_fcompress(data: List[int]) -> List[int]:\n    \"\"\"\n    blake2b hashing\n    :param data:\n    :return:\n    \"\"\"\n    try:\n        parameters = extract_blake2b_parameters(bytes(data))\n    except ValidationError as v:\n        logging.debug(\"Invalid blake2b params: {}\".format(v))\n        return []\n    return list(bytearray(blake2b.compress(*parameters)))\n\n\nPRECOMPILE_FUNCTIONS = (\n    ecrecover,\n    sha256,\n    ripemd160,\n    identity,\n    mod_exp,\n    ec_add,\n    ec_mul,\n    ec_pair,\n    blake2b_fcompress,\n)\n\nPRECOMPILE_COUNT = len(PRECOMPILE_FUNCTIONS)\n\n\ndef native_contracts(address: int, data: BaseCalldata) -> List[int]:\n    \"\"\"Takes integer address 1, 2, 3, 4.\n\n    :param address:\n    :param data:\n    :return:\n    \"\"\"\n\n    if not isinstance(data, ConcreteCalldata):\n        raise NativeContractException\n    concrete_data = data.concrete(None)\n    try:\n        return PRECOMPILE_FUNCTIONS[address - 1](concrete_data)\n    except TypeError:\n        raise NativeContractException\n"
  },
  {
    "path": "mythril/laser/ethereum/state/__init__.py",
    "content": "# Hello!\n"
  },
  {
    "path": "mythril/laser/ethereum/state/account.py",
    "content": "\"\"\"This module contains account-related functionality.\n\nThis includes classes representing accounts and their storage.\n\"\"\"\n\nimport logging\nfrom copy import copy, deepcopy\nfrom typing import Any, Dict, Set, Union\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.smt import Array, BaseArray, BitVec, If, K, simplify, symbol_factory\nfrom mythril.laser.smt import SMTBool as Bool\nfrom mythril.support.support_args import args\n\nlog = logging.getLogger(__name__)\n\n\nclass Storage:\n    \"\"\"Storage class represents the storage of an Account.\"\"\"\n\n    def __init__(self, concrete=False, address=None, dynamic_loader=None) -> None:\n        \"\"\"Constructor for Storage.\n\n        :param concrete: bool indicating whether to interpret uninitialized storage as concrete versus symbolic\n        \"\"\"\n        if concrete and args.unconstrained_storage is False:\n            self._standard_storage: BaseArray = K(256, 256, 0)\n        else:\n            self._standard_storage = Array(f\"Storage{address}\", 256, 256)\n\n        self.printable_storage: Dict[BitVec, BitVec] = {}\n\n        self.dynld = dynamic_loader\n        self.storage_keys_loaded: Set[int] = set()\n        self.address = address\n\n        # Stores all keys set in the storage\n        self.keys_set: Set[BitVec] = set()\n\n        # Stores all get keys in the storage\n        self.keys_get: Set[BitVec] = set()\n\n    def __getitem__(self, item: BitVec) -> BitVec:\n        storage = self._standard_storage\n        self.keys_get.add(item)\n        if (\n            self.address\n            and self.address.value != 0\n            and item.symbolic is False\n            and int(item.value) not in self.storage_keys_loaded\n            and (self.dynld and self.dynld.active)\n            and args.unconstrained_storage is False\n        ):\n            try:\n                value = symbol_factory.BitVecVal(\n                    int(\n                        self.dynld.read_storage(\n                            contract_address=\"0x{:040X}\".format(self.address.value),\n                            index=int(item.value),\n                        ),\n                        16,\n                    ),\n                    256,\n                )\n\n                for key in self.keys_set:\n                    value = If(key == item, storage[item], value)\n\n                storage[item] = value\n                self.storage_keys_loaded.add(int(item.value))\n                self.printable_storage[item] = storage[item]\n            except ValueError as e:\n                log.debug(\"Couldn't read storage at %s: %s\", item, e)\n\n        return simplify(storage[item])\n\n    def __setitem__(self, key, value: Any) -> None:\n        if isinstance(value, Bool):\n            value = If(value, 1, 0)\n\n        self.printable_storage[key] = value\n        self._standard_storage[key] = value\n\n        self.keys_set.add(key)\n\n        if key.symbolic is False:\n            self.storage_keys_loaded.add(int(key.value))\n\n    def __deepcopy__(self, memodict=dict()):\n        concrete = isinstance(self._standard_storage, K)\n        storage = Storage(\n            concrete=concrete, address=self.address, dynamic_loader=self.dynld\n        )\n        storage._standard_storage = deepcopy(self._standard_storage)\n        storage.printable_storage = copy(self.printable_storage)\n        storage.storage_keys_loaded = copy(self.storage_keys_loaded)\n        storage.keys_set = deepcopy(self.keys_set)\n        storage.keys_get = deepcopy(self.keys_get)\n        return storage\n\n    def __str__(self) -> str:\n        # TODO: Do something better here\n        return str(self.printable_storage)\n\n\nclass Account:\n    \"\"\"Account class representing ethereum accounts.\"\"\"\n\n    def __init__(\n        self,\n        address: Union[BitVec, str],\n        code=None,\n        contract_name=None,\n        balances: Array = None,\n        concrete_storage=False,\n        dynamic_loader=None,\n        nonce=0,\n    ) -> None:\n        \"\"\"Constructor for account.\n\n        :param address: Address of the account\n        :param code: The contract code of the account\n        :param contract_name: The name associated with the account\n        :param balances: The balance for the account\n        :param concrete_storage: Interpret storage as concrete\n        \"\"\"\n        self.concrete_storage = concrete_storage\n        self.nonce = nonce\n        self.code = code or Disassembly(\"\")\n        self.address = (\n            address\n            if isinstance(address, BitVec)\n            else symbol_factory.BitVecVal(int(address, 16), 256)\n        )\n\n        self.storage = Storage(\n            concrete_storage, address=self.address, dynamic_loader=dynamic_loader\n        )\n\n        # Metadata\n        if contract_name is None:\n            self.contract_name = (\n                \"{0:#0{1}x}\".format(self.address.value, 42)\n                if not self.address.symbolic\n                else \"unknown\"\n            )\n        else:\n            self.contract_name = contract_name\n\n        self.deleted = False\n\n        self._balances = balances\n        self.balance = lambda: self._balances[self.address]\n\n    def __str__(self) -> str:\n        return str(self.as_dict)\n\n    def set_balance(self, balance: Union[int, BitVec]) -> None:\n        \"\"\"\n\n        :param balance:\n        \"\"\"\n        balance = (\n            symbol_factory.BitVecVal(balance, 256)\n            if isinstance(balance, int)\n            else balance\n        )\n        assert self._balances is not None\n        self._balances[self.address] = balance\n\n    def set_storage(self, storage: Dict):\n        \"\"\"\n        Sets concrete storage\n        \"\"\"\n        for key, value in storage.items():\n            concrete_key, concrete_value = int(key, 16), int(value, 16)\n            self.storage[symbol_factory.BitVecVal(concrete_key, 256)] = (\n                symbol_factory.BitVecVal(concrete_value, 256)\n            )\n\n    def add_balance(self, balance: Union[int, BitVec]) -> None:\n        \"\"\"\n\n        :param balance:\n        \"\"\"\n        balance = (\n            symbol_factory.BitVecVal(balance, 256)\n            if isinstance(balance, int)\n            else balance\n        )\n        self._balances[self.address] += balance\n\n    @property\n    def as_dict(self) -> Dict:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return {\n            \"nonce\": self.nonce,\n            \"code\": self.serialised_code(),\n            \"balance\": self.balance(),\n            \"storage\": self.storage,\n        }\n\n    def serialised_code(self):\n        if isinstance(self.code.bytecode, str):\n            return self.code.bytecode\n        new_code = \"0x\"\n        for byte in self.code.bytecode:\n            if isinstance(byte, int):\n                new_code += hex(byte)\n            else:\n                new_code += \"<call_data>\"\n        return new_code\n\n    def __copy__(self, memodict={}):\n        new_account = Account(\n            address=self.address,\n            code=self.code,\n            contract_name=self.contract_name,\n            balances=deepcopy(self._balances),\n            concrete_storage=self.concrete_storage,\n            nonce=self.nonce,\n        )\n        new_account.storage = deepcopy(self.storage)\n        new_account.code = self.code\n        return new_account\n"
  },
  {
    "path": "mythril/laser/ethereum/state/annotation.py",
    "content": "\"\"\"This module includes classes used for annotating trace information.\n\nThis includes the base StateAnnotation class, as well as an adaption,\nwhich will not be copied on every new state.\n\"\"\"\n\nfrom abc import abstractmethod\n\n\nclass StateAnnotation:\n    \"\"\"The StateAnnotation class is used to persist information over traces.\n\n    This allows modules to reason about traces without the need to\n    traverse the state space themselves.\n    \"\"\"\n\n    # TODO: Remove this? It seems to be used only in the MutationPruner, and\n    # we could simply use world state annotations if we want them to be persisted.\n    @property\n    def persist_to_world_state(self) -> bool:\n        \"\"\"If this function returns true then laser will also annotate the\n        world state.\n\n        If you want annotations to persist through different user initiated message call transactions\n        then this should be enabled.\n\n        The default is set to False\n        \"\"\"\n        return False\n\n    @property\n    def persist_over_calls(self) -> bool:\n        \"\"\"If this function returns true then laser will propagate the annotation between calls\n\n        The default is set to False\n        \"\"\"\n        return False\n\n    @property\n    def search_importance(self) -> int:\n        \"\"\"\n        Used in estimating the priority of a state annotated with the corresponding annotation.\n        Default is 1\n        \"\"\"\n        return 1\n\n\nclass MergeableStateAnnotation(StateAnnotation):\n    \"\"\"This class allows a base annotation class for annotations that\n    can be merged.\n    \"\"\"\n\n    @abstractmethod\n    def check_merge_annotation(self, annotation) -> bool:\n        pass\n\n    @abstractmethod\n    def merge_annotation(self, annotation):\n        pass\n\n\nclass NoCopyAnnotation(StateAnnotation):\n    \"\"\"This class provides a base annotation class for annotations that\n    shouldn't be copied on every new state.\n\n    Rather the same object should be propagated. This is very useful if\n    you are looking to analyze a property over multiple substates\n    \"\"\"\n\n    def __copy__(self):\n        return self\n\n    def __deepcopy__(self, _):\n        return self\n"
  },
  {
    "path": "mythril/laser/ethereum/state/calldata.py",
    "content": "\"\"\"This module declares classes to represent call data.\"\"\"\n\nfrom typing import Any, List, Tuple, Union, cast\n\nfrom z3 import Model, unknown, unsat\nfrom z3.z3types import Z3Exception\n\nfrom mythril.laser.ethereum.util import get_concrete_int\nfrom mythril.laser.smt import (\n    Array,\n    BitVec,\n    Concat,\n    Expression,\n    If,\n    K,\n    Solver,\n    simplify,\n    symbol_factory,\n)\nfrom mythril.laser.smt import (\n    SMTBool as Bool,\n)\n\n\nclass BaseCalldata:\n    \"\"\"Base calldata class This represents the calldata provided when sending a\n    transaction to a contract.\"\"\"\n\n    def __init__(self, tx_id: str) -> None:\n        \"\"\"\n\n        :param tx_id:\n        \"\"\"\n        self.tx_id = tx_id\n\n    @property\n    def calldatasize(self) -> BitVec:\n        \"\"\"\n\n        :return: Calldata size for this calldata object\n        \"\"\"\n        result = self.size\n        if isinstance(result, int):\n            return symbol_factory.BitVecVal(result, 256)\n        return result\n\n    def get_word_at(self, offset: int) -> Expression:\n        \"\"\"Gets word at offset.\n\n        :param offset:\n        :return:\n        \"\"\"\n        parts = self[offset : offset + 32]\n        return simplify(Concat(parts))\n\n    def __getitem__(self, item: Union[int, slice, BitVec]) -> Any:\n        \"\"\"\n\n        :param item:\n        :return:\n        \"\"\"\n        if isinstance(item, int) or isinstance(item, Expression):\n            return self._load(item)\n\n        if isinstance(item, slice):\n            start = 0 if item.start is None else item.start\n            step = 1 if item.step is None else item.step\n            stop = self.size if item.stop is None else item.stop\n\n            try:\n                current_index = (\n                    start\n                    if isinstance(start, BitVec)\n                    else symbol_factory.BitVecVal(start, 256)\n                )\n                parts = []\n                while True:\n                    s = Solver()\n                    s.set_timeout(1000)\n                    s.add(current_index != stop)\n                    result = s.check()\n                    if result in (unsat, unknown):\n                        break\n                    element = self._load(current_index)\n                    if not isinstance(element, Expression):\n                        element = symbol_factory.BitVecVal(element, 8)\n\n                    parts.append(element)\n                    current_index = simplify(current_index + step)\n\n            except Z3Exception:\n                raise IndexError(\"Invalid Calldata Slice\")\n            return parts\n\n        raise ValueError\n\n    def _load(self, item: Union[int, BitVec]) -> Any:\n        \"\"\"\n\n        :param item:\n        \"\"\"\n        raise NotImplementedError()\n\n    @property\n    def size(self) -> Union[BitVec, int]:\n        \"\"\"Returns the exact size of this calldata, this is not normalized.\n\n        :return: unnormalized call data size\n        \"\"\"\n        raise NotImplementedError()\n\n    def concrete(self, model: Model) -> list:\n        \"\"\"Returns a concrete version of the calldata using the provided model.\n\n        :param model:\n        \"\"\"\n        raise NotImplementedError\n\n\nclass ConcreteCalldata(BaseCalldata):\n    \"\"\"A concrete call data representation.\"\"\"\n\n    def __init__(self, tx_id: str, calldata: list) -> None:\n        \"\"\"Initializes the ConcreteCalldata object.\n\n        :param tx_id: Id of the transaction that the calldata is for.\n        :param calldata: The concrete calldata content\n        \"\"\"\n        self._concrete_calldata = calldata\n        self._calldata = K(256, 8, 0)\n        for i, element in enumerate(calldata, 0):\n            element = (\n                symbol_factory.BitVecVal(element, 8)\n                if isinstance(element, int)\n                else element\n            )\n            self._calldata[symbol_factory.BitVecVal(i, 256)] = element\n\n        super().__init__(tx_id)\n\n    def _load(self, item: Union[int, BitVec]) -> BitVec:\n        \"\"\"\n\n        :param item:\n        :return:\n        \"\"\"\n        item = symbol_factory.BitVecVal(item, 256) if isinstance(item, int) else item\n        return simplify(self._calldata[item])\n\n    def concrete(self, model: Model) -> list:\n        \"\"\"\n\n        :param model:\n        :return:\n        \"\"\"\n        return self._concrete_calldata\n\n    @property\n    def size(self) -> int:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return len(self._concrete_calldata)\n\n\nclass BasicConcreteCalldata(BaseCalldata):\n    \"\"\"A base class to represent concrete call data.\"\"\"\n\n    def __init__(self, tx_id: str, calldata: list) -> None:\n        \"\"\"Initializes the ConcreteCalldata object, that doesn't use z3 arrays.\n\n        :param tx_id: Id of the transaction that the calldata is for.\n        :param calldata: The concrete calldata content\n        \"\"\"\n        self._calldata = calldata\n        super().__init__(tx_id)\n\n    def _load(self, item: Union[int, Expression]) -> Any:\n        \"\"\"\n\n        :param item:\n        :return:\n        \"\"\"\n        if isinstance(item, int):\n            try:\n                return self._calldata[item]\n            except IndexError:\n                return 0\n\n        value = symbol_factory.BitVecVal(0x0, 8)\n        for i in range(self.size):\n            value = If(cast(Union[BitVec, Bool], item) == i, self._calldata[i], value)\n        return value\n\n    def concrete(self, model: Model) -> list:\n        \"\"\"\n\n        :param model:\n        :return:\n        \"\"\"\n        concrete_calldata = []\n        for data in self._calldata:\n            if isinstance(data, BitVec) and data.symbolic and model is not None:\n                concrete_calldata.append(model.eval(data, model_completion=True))\n            elif isinstance(data, BitVec) and data.symbolic is False:\n                concrete_calldata.append(data)\n            else:\n                break\n        return concrete_calldata\n\n    @property\n    def size(self) -> int:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return len(self._calldata)\n\n\nclass SymbolicCalldata(BaseCalldata):\n    \"\"\"A class for representing symbolic call data.\"\"\"\n\n    def __init__(self, tx_id: str) -> None:\n        \"\"\"Initializes the SymbolicCalldata object.\n\n        :param tx_id: Id of the transaction that the calldata is for.\n        \"\"\"\n        self._size = symbol_factory.BitVecSym(str(tx_id) + \"_calldatasize\", 256)\n        self._calldata = Array(\"{}_calldata\".format(tx_id), 256, 8)\n        super().__init__(tx_id)\n\n    def _load(self, item: Union[int, BitVec]) -> Any:\n        \"\"\"\n\n        :param item:\n        :return:\n        \"\"\"\n        item = symbol_factory.BitVecVal(item, 256) if isinstance(item, int) else item\n        return simplify(\n            If(\n                item < self._size,\n                simplify(self._calldata[cast(BitVec, item)]),\n                symbol_factory.BitVecVal(0, 8),\n            )\n        )\n\n    def concrete(self, model: Model) -> list:\n        \"\"\"\n\n        :param model:\n        :return:\n        \"\"\"\n        concrete_length = model.eval(self.size.raw, model_completion=True).as_long()\n        result = []\n        for i in range(concrete_length):\n            value = self._load(i)\n            c_value = model.eval(value.raw, model_completion=True).as_long()\n            result.append(c_value)\n\n        return result\n\n    @property\n    def size(self) -> BitVec:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self._size\n\n\nclass BasicSymbolicCalldata(BaseCalldata):\n    \"\"\"A basic class representing symbolic call data.\"\"\"\n\n    def __init__(self, tx_id: str) -> None:\n        \"\"\"Initializes the SymbolicCalldata object.\n\n        :param tx_id: Id of the transaction that the calldata is for.\n        \"\"\"\n        self._reads: List[Tuple[Union[int, BitVec], BitVec]] = []\n        self._size = symbol_factory.BitVecSym(str(tx_id) + \"_calldatasize\", 256)\n        super().__init__(tx_id)\n\n    def _load(self, item: Union[int, BitVec], clean=False) -> Any:\n        expr_item: BitVec = (\n            symbol_factory.BitVecVal(item, 256) if isinstance(item, int) else item\n        )\n\n        symbolic_base_value = If(\n            expr_item >= self._size,\n            symbol_factory.BitVecVal(0, 8),\n            BitVec(\n                symbol_factory.BitVecSym(\n                    \"{}_calldata_{}\".format(self.tx_id, str(item)), 8\n                )\n            ),\n        )\n        return_value = symbolic_base_value\n        for r_index, r_value in self._reads:\n            return_value = If(r_index == expr_item, r_value, return_value)\n        if not clean:\n            self._reads.append((expr_item, symbolic_base_value))\n        return simplify(return_value)\n\n    def concrete(self, model: Model) -> list:\n        \"\"\"\n\n        :param model:\n        :return:\n        \"\"\"\n        concrete_length = get_concrete_int(model.eval(self.size, model_completion=True))\n        result = []\n        for i in range(concrete_length):\n            value = self._load(i, clean=True)\n            c_value = get_concrete_int(model.eval(value, model_completion=True))\n            result.append(c_value)\n\n        return result\n\n    @property\n    def size(self) -> BitVec:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self._size\n"
  },
  {
    "path": "mythril/laser/ethereum/state/constraints.py",
    "content": "\"\"\"This module contains the class used to represent state-change constraints in\nthe call graph.\"\"\"\n\nfrom copy import copy\nfrom typing import Iterable, List, Optional, Union\n\nfrom mythril.exceptions import SolverTimeOutException, UnsatError\nfrom mythril.laser.ethereum.function_managers import keccak_function_manager\nfrom mythril.laser.smt import SMTBool as Bool\nfrom mythril.laser.smt import simplify, symbol_factory\nfrom mythril.laser.smt.model import Model\nfrom mythril.support.model import get_model\n\n\nclass Constraints(list):\n    \"\"\"This class should maintain a solver and it's constraints, This class\n    tries to make the Constraints() object as a simple list of constraints with\n    some background processing.\n\n    \"\"\"\n\n    def __init__(self, constraint_list: Optional[List[Bool]] = None) -> None:\n        \"\"\"\n\n        :param constraint_list: List of constraints\n        \"\"\"\n        constraint_list = constraint_list or []\n        constraint_list = self._get_smt_bool_list(constraint_list)\n        super(Constraints, self).__init__(constraint_list)\n\n    def is_possible(self, solver_timeout=None) -> bool:\n        \"\"\"\n        :param solver_timeout: The default timeout uses analysis timeout from args.solver_timeout\n        :return: True/False based on the existence of solution of constraints\n        \"\"\"\n        try:\n            get_model(self, solver_timeout=solver_timeout)\n        except SolverTimeOutException:\n            # If it uses the long analysis solver timeout\n            if solver_timeout is None:\n                return False\n            # If it uses a short custom solver timeout\n            return True\n        except UnsatError:\n            return False\n        return True\n\n    def get_model(self, solver_timeout=None) -> Optional[Model]:\n        \"\"\"\n        :param solver_timeout: The default timeout uses analysis timeout from args.solver_timeout\n        :return: True/False based on the existence of solution of constraints\n        \"\"\"\n        try:\n            return get_model(self, solver_timeout=solver_timeout)\n        except SolverTimeOutException:\n            return None\n        except UnsatError:\n            return None\n\n    def append(self, constraint: Union[bool, Bool]) -> None:\n        \"\"\"\n\n        :param constraint: The constraint to be appended\n        \"\"\"\n        constraint = (\n            simplify(constraint)\n            if isinstance(constraint, Bool)\n            else symbol_factory.Bool(constraint)\n        )\n        super(Constraints, self).append(constraint)\n\n    @property\n    def as_list(self) -> List[Bool]:\n        \"\"\"\n        :return: returns the list of constraints\n        \"\"\"\n        return self[:] + [keccak_function_manager.create_conditions()]\n\n    def __copy__(self) -> \"Constraints\":\n        \"\"\"\n\n        :return: The copied constraint List\n        \"\"\"\n        constraint_list = super(Constraints, self).copy()\n        return Constraints(constraint_list)\n\n    def copy(self) -> \"Constraints\":\n        return self.__copy__()\n\n    def __deepcopy__(self, memodict=None) -> \"Constraints\":\n        \"\"\"\n\n        :param memodict:\n        :return: The copied constraint List\n        \"\"\"\n        new_constraints = Constraints()\n        for constraint in self:\n            new_constraints.append(copy(constraint))\n        return new_constraints\n\n    def __add__(self, constraints: List[Union[bool, Bool]]) -> \"Constraints\":\n        \"\"\"\n\n        :param constraints:\n        :return: the new list after the + operation\n        \"\"\"\n        constraints_list = self._get_smt_bool_list(constraints)\n        constraints_list = super(Constraints, self).__add__(constraints_list)\n        return Constraints(constraint_list=constraints_list)\n\n    def __iadd__(self, constraints: Iterable[Union[bool, Bool]]) -> \"Constraints\":\n        \"\"\"\n\n        :param constraints:\n        :return:\n        \"\"\"\n        list_constraints = self._get_smt_bool_list(constraints)\n        super(Constraints, self).__iadd__(list_constraints)\n        return self\n\n    @staticmethod\n    def _get_smt_bool_list(constraints: Iterable[Union[bool, Bool]]) -> List[Bool]:\n        return [\n            (\n                constraint\n                if isinstance(constraint, Bool)\n                else symbol_factory.Bool(constraint)\n            )\n            for constraint in constraints\n        ]\n\n    def get_all_constraints(self):\n        return self[:] + [keccak_function_manager.create_conditions()]\n\n    def __hash__(self):\n        return tuple(self[:]).__hash__()\n"
  },
  {
    "path": "mythril/laser/ethereum/state/environment.py",
    "content": "\"\"\"This module contains the representation for an execution state's\nenvironment.\"\"\"\n\nfrom typing import Dict\n\nfrom z3 import ExprRef\n\nfrom mythril.laser.ethereum.state.account import Account\nfrom mythril.laser.ethereum.state.calldata import BaseCalldata\nfrom mythril.laser.smt import symbol_factory\n\n\nclass Environment:\n    \"\"\"The environment class represents the current execution environment for\n    the symbolic executor.\"\"\"\n\n    def __init__(\n        self,\n        active_account: Account,\n        sender: ExprRef,\n        calldata: BaseCalldata,\n        gasprice: ExprRef,\n        callvalue: ExprRef,\n        origin: ExprRef,\n        basefee: ExprRef,\n        code=None,\n        static=False,\n    ) -> None:\n        \"\"\"\n\n        :param active_account:\n        :param sender:\n        :param calldata:\n        :param gasprice:\n        :param callvalue:\n        :param origin:\n        :param code:\n        :param static: Makes the environment static.\n        \"\"\"\n        # Metadata\n\n        self.active_account = active_account\n        self.active_function_name = \"\"\n\n        self.address = active_account.address\n\n        # TODO: Add tx_2 > tx_1 then block_no(tx_2) > block_no(tx_1)\n        self.block_number = symbol_factory.BitVecSym(\"block_number\", 256)\n        self.chainid = symbol_factory.BitVecSym(\"chain_id\", 256)\n\n        # Ib\n        self.code = active_account.code if code is None else code\n\n        self.sender = sender\n        self.calldata = calldata\n        self.gasprice = gasprice\n        self.origin = origin\n        self.callvalue = callvalue\n        self.static = static\n        self.basefee = basefee\n\n    def __str__(self) -> str:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return str(self.as_dict)\n\n    @property\n    def as_dict(self) -> Dict:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return dict(\n            active_account=self.active_account,\n            sender=self.sender,\n            calldata=self.calldata,\n            gasprice=self.gasprice,\n            callvalue=self.callvalue,\n            origin=self.origin,\n        )\n"
  },
  {
    "path": "mythril/laser/ethereum/state/global_state.py",
    "content": "\"\"\"This module contains a representation of the global execution state.\"\"\"\n\nfrom copy import copy, deepcopy\nfrom typing import TYPE_CHECKING, Dict, Iterable, List, Union\n\nfrom z3 import BitVec\n\nfrom mythril.laser.ethereum.cfg import Node\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.smt import symbol_factory\n\nif TYPE_CHECKING:\n    from mythril.laser.ethereum.state.world_state import WorldState\n    from mythril.laser.ethereum.transaction.transaction_models import (\n        ContractCreationTransaction,\n        MessageCallTransaction,\n    )\n\n\nclass GlobalState:\n    \"\"\"GlobalState represents the current globalstate.\"\"\"\n\n    def __init__(\n        self,\n        world_state: \"WorldState\",\n        environment: Environment,\n        node: Node,\n        machine_state=None,\n        transaction_stack=None,\n        last_return_data=None,\n        annotations=None,\n    ) -> None:\n        \"\"\"Constructor for GlobalState.\n\n        :param world_state:\n        :param environment:\n        :param node:\n        :param machine_state:\n        :param transaction_stack:\n        :param last_return_data:\n        :param annotations:\n        \"\"\"\n        self.node = node\n        self.world_state = world_state\n        self.environment = environment\n        self.mstate = (\n            machine_state if machine_state else MachineState(gas_limit=1000000000)\n        )\n        self.transaction_stack = transaction_stack if transaction_stack else []\n        self.op_code = \"\"\n        self.last_return_data = last_return_data\n        self._annotations = annotations or []\n\n    def add_annotations(self, annotations: List[StateAnnotation]):\n        \"\"\"\n        Function used to add annotations to global state\n        :param annotations:\n        :return:\n        \"\"\"\n        self._annotations += annotations\n\n    def __copy__(self) -> \"GlobalState\":\n        \"\"\"\n\n        :return:\n        \"\"\"\n        world_state = copy(self.world_state)\n        environment = copy(self.environment)\n        mstate = deepcopy(self.mstate)\n        transaction_stack = copy(self.transaction_stack)\n        environment.active_account = world_state[environment.active_account.address]\n\n        return GlobalState(\n            world_state,\n            environment,\n            self.node,\n            mstate,\n            transaction_stack=transaction_stack,\n            last_return_data=self.last_return_data,\n            annotations=[copy(a) for a in self._annotations],\n        )\n\n    def __deepcopy__(self, _) -> \"GlobalState\":\n        \"\"\"\n        Deepcopy is much slower than copy, since it deepcopies constraints.\n        :return:\n        \"\"\"\n        world_state = deepcopy(self.world_state)\n        environment = copy(self.environment)\n        mstate = deepcopy(self.mstate)\n        transaction_stack = copy(self.transaction_stack)\n        environment.active_account = world_state[environment.active_account.address]\n        return GlobalState(\n            world_state,\n            environment,\n            self.node,\n            mstate,\n            transaction_stack=transaction_stack,\n            last_return_data=self.last_return_data,\n            annotations=[copy(a) for a in self._annotations],\n        )\n\n    @property\n    def accounts(self) -> Dict:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self.world_state._accounts\n\n    # TODO: remove this, as two instructions are confusing\n    def get_current_instruction(self) -> Dict:\n        \"\"\"Gets the current instruction for this GlobalState.\n\n        :return:\n        \"\"\"\n        instructions = self.environment.code.instruction_list\n        try:\n            return instructions[self.mstate.pc]\n        except IndexError:\n            return {\"address\": self.mstate.pc, \"opcode\": \"STOP\"}\n\n    @property\n    def current_transaction(\n        self,\n    ) -> Union[\"MessageCallTransaction\", \"ContractCreationTransaction\", None]:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        # TODO: Remove circular to transaction package to import Transaction classes\n        try:\n            return self.transaction_stack[-1][0]\n        except IndexError:\n            return None\n\n    @property\n    def instruction(self) -> Dict:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self.get_current_instruction()\n\n    def new_bitvec(self, name: str, size=256, annotations=None) -> BitVec:\n        \"\"\"\n\n        :param name:\n        :param size:\n        :return:\n        \"\"\"\n        transaction_id = self.current_transaction.id\n        return symbol_factory.BitVecSym(\n            \"{}_{}\".format(transaction_id, name), size, annotations=annotations\n        )\n\n    def annotate(self, annotation: StateAnnotation) -> None:\n        \"\"\"\n\n        :param annotation:\n        \"\"\"\n        self._annotations.append(annotation)\n\n        if annotation.persist_to_world_state:\n            self.world_state.annotate(annotation)\n\n    @property\n    def annotations(self) -> List[StateAnnotation]:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self._annotations\n\n    def get_annotations(self, annotation_type: type) -> Iterable[StateAnnotation]:\n        \"\"\"Filters annotations for the queried annotation type. Designed\n        particularly for modules with annotations:\n        globalstate.get_annotations(MySpecificModuleAnnotation)\n\n        :param annotation_type: The type to filter annotations for\n        :return: filter of matching annotations\n        \"\"\"\n        return filter(lambda x: isinstance(x, annotation_type), self.annotations)\n"
  },
  {
    "path": "mythril/laser/ethereum/state/machine_state.py",
    "content": "\"\"\"This module contains a representation of the EVM's machine state and its\nstack.\"\"\"\n\nfrom copy import copy\nfrom typing import Any, Dict, List, Optional, Sized, Union, cast\n\nfrom eth._utils.numeric import ceil32\nfrom eth.constants import GAS_MEMORY, GAS_MEMORY_QUADRATIC_DENOMINATOR\n\nfrom mythril.laser.ethereum.evm_exceptions import (\n    OutOfGasException,\n    StackOverflowException,\n    StackUnderflowException,\n)\nfrom mythril.laser.ethereum.state.memory import Memory\nfrom mythril.laser.smt import BitVec, Expression, If, symbol_factory\nfrom mythril.laser.smt import SMTBool as Bool\n\n\nclass MachineStack(list):\n    \"\"\"Defines EVM stack, overrides the default list to handle overflows.\"\"\"\n\n    STACK_LIMIT = 1024\n\n    def __init__(self, default_list=None) -> None:\n        \"\"\"\n\n        :param default_list:\n        \"\"\"\n        super(MachineStack, self).__init__(default_list or [])\n\n    def append(self, element: Union[int, Expression]) -> None:\n        \"\"\"\n        This function ensures the following properties when appending to a list:\n            - Element appended to this list should be a BitVec\n            - Ensures stack overflow bound\n\n        :param element: element to be appended to the list\n        :function: appends the element to list if the size is less than STACK_LIMIT, else throws an error\n        \"\"\"\n        if isinstance(element, int):\n            element = symbol_factory.BitVecVal(element, 256)\n        if isinstance(element, Bool):\n            element = If(\n                element,\n                symbol_factory.BitVecVal(1, 256),\n                symbol_factory.BitVecVal(0, 256),\n            )\n        if super(MachineStack, self).__len__() >= self.STACK_LIMIT:\n            raise StackOverflowException(\n                \"Reached the EVM stack limit of {}, you can't append more \"\n                \"elements\".format(self.STACK_LIMIT)\n            )\n        super(MachineStack, self).append(element)\n\n    def pop(self, index=-1) -> Union[int, Expression]:\n        \"\"\"\n        This function ensures stack underflow bound\n        :param index:index to be popped, same as the list() class.\n        :returns popped value\n        :function: same as list() class but throws StackUnderflowException for popping from an empty list\n        \"\"\"\n\n        try:\n            return super(MachineStack, self).pop(index)\n        except IndexError:\n            raise StackUnderflowException(\"Trying to pop from an empty stack\")\n\n    def __getitem__(self, item: Union[int, slice]) -> Any:\n        \"\"\"\n\n        :param item:\n        :return:\n        \"\"\"\n        try:\n            return super(MachineStack, self).__getitem__(item)\n        except IndexError:\n            raise StackUnderflowException(\n                \"Trying to access a stack element which doesn't exist\"\n            )\n\n    def __add__(self, other):\n        \"\"\"Implement list concatenation if needed.\n\n        :param other:\n        \"\"\"\n        raise NotImplementedError(\"Implement this if needed\")\n\n    def __iadd__(self, other):\n        \"\"\"Implement list concatenation if needed.\n\n        :param other:\n        \"\"\"\n        raise NotImplementedError(\"Implement this if needed\")\n\n\nclass MachineState:\n    \"\"\"\n    MachineState represents current machine state also referenced to as \\mu.\n    \"\"\"\n\n    def __init__(\n        self,\n        gas_limit: int,\n        pc=0,\n        stack=None,\n        subroutine_stack=None,\n        memory: Optional[Memory] = None,\n        depth=0,\n        max_gas_used=0,\n        min_gas_used=0,\n    ) -> None:\n        \"\"\"Constructor for machineState.\n\n        :param gas_limit:\n        :param pc:\n        :param stack:\n        :param memory:\n        :param depth:\n        :param max_gas_used:\n        :param min_gas_used:\n        \"\"\"\n        self.pc = pc\n        self.stack = MachineStack(stack)\n        self.subroutine_stack = MachineStack(subroutine_stack)\n        self.memory = memory or Memory()\n        self.gas_limit = gas_limit\n        self.min_gas_used = min_gas_used  # lower gas usage bound\n        self.max_gas_used = max_gas_used  # upper gas usage bound\n        self.depth = depth\n\n    def calculate_extension_size(self, start: int, size: int) -> int:\n        \"\"\"\n\n        :param start:\n        :param size:\n        :return:\n        \"\"\"\n        if self.memory_size > start + size:\n            return 0\n\n        # The extension size is calculated based on the word length\n        new_size = ceil32(start + size) // 32\n        old_size = self.memory_size // 32\n\n        return (new_size - old_size) * 32\n\n    def calculate_memory_gas(self, start: int, size: int):\n        \"\"\"\n\n        :param start:\n        :param size:\n        :return:\n        \"\"\"\n        # https://github.com/ethereum/pyethereum/blob/develop/ethereum/vm.py#L148\n        oldsize = self.memory_size // 32\n        old_totalfee = (\n            oldsize * GAS_MEMORY + oldsize**2 // GAS_MEMORY_QUADRATIC_DENOMINATOR\n        )\n        newsize = ceil32(start + size) // 32\n        new_totalfee = (\n            newsize * GAS_MEMORY + newsize**2 // GAS_MEMORY_QUADRATIC_DENOMINATOR\n        )\n        return new_totalfee - old_totalfee\n\n    def check_gas(self):\n        \"\"\"Check whether the machine is out of gas.\"\"\"\n        if self.min_gas_used > self.gas_limit:\n            raise OutOfGasException()\n\n    def mem_extend(self, start: Union[int, BitVec], size: Union[int, BitVec]) -> None:\n        \"\"\"Extends the memory of this machine state.\n\n        :param start: Start of memory extension\n        :param size: Size of memory extension\n        \"\"\"\n        if (isinstance(start, BitVec) and start.symbolic) or (\n            isinstance(size, BitVec) and size.symbolic\n        ):\n            return\n        if isinstance(start, BitVec):\n            start = start.value\n        if isinstance(size, BitVec):\n            size = size.value\n        m_extend = self.calculate_extension_size(start, size)\n        if m_extend:\n            extend_gas = self.calculate_memory_gas(start, size)\n            self.min_gas_used += extend_gas\n            self.max_gas_used += extend_gas\n            self.check_gas()\n            self.memory.extend(m_extend)\n\n    def memory_write(self, offset: int, data: List[Union[int, BitVec]]) -> None:\n        \"\"\"Writes data to memory starting at offset.\n\n        :param offset:\n        :param data:\n        \"\"\"\n        self.mem_extend(offset, len(data))\n        self.memory[offset : offset + len(data)] = data\n\n    def pop(self, amount=1) -> Union[BitVec, List[BitVec]]:\n        \"\"\"Pops amount elements from the stack.\n\n        :param amount:\n        :return:\n        \"\"\"\n        if amount > len(self.stack):\n            raise StackUnderflowException\n        values = self.stack[-amount:][::-1]\n        del self.stack[-amount:]\n\n        return values[0] if amount == 1 else values\n\n    def __deepcopy__(self, memodict=None):\n        \"\"\"\n\n        :param memodict:\n        :return:\n        \"\"\"\n        memodict = {} if memodict is None else memodict\n        return MachineState(\n            gas_limit=self.gas_limit,\n            max_gas_used=self.max_gas_used,\n            min_gas_used=self.min_gas_used,\n            pc=self.pc,\n            stack=copy(self.stack),\n            memory=copy(self.memory),\n            depth=self.depth,\n            subroutine_stack=copy(self.subroutine_stack),\n        )\n\n    def __str__(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return str(self.as_dict)\n\n    @property\n    def memory_size(self) -> int:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return len(cast(Sized, self.memory))\n\n    @property\n    def as_dict(self) -> Dict:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return dict(\n            pc=self.pc,\n            stack=self.stack,\n            subroutine_stack=self.subroutine_stack,\n            memory=self.memory,\n            memsize=self.memory_size,\n            gas=self.gas_limit,\n            max_gas_used=self.max_gas_used,\n            min_gas_used=self.min_gas_used,\n        )\n"
  },
  {
    "path": "mythril/laser/ethereum/state/memory.py",
    "content": "\"\"\"This module contains a representation of a smart contract's memory.\"\"\"\n\nfrom copy import copy\nfrom typing import Dict, List, Union, cast, overload\n\nfrom z3 import Z3Exception\n\nfrom mythril.laser.ethereum import util\nfrom mythril.laser.smt import (\n    BitVec,\n    Concat,\n    Extract,\n    If,\n    simplify,\n    symbol_factory,\n)\nfrom mythril.laser.smt import (\n    SMTBool as Bool,\n)\n\n\ndef convert_bv(val: Union[int, BitVec]) -> BitVec:\n    if isinstance(val, BitVec):\n        return val\n    return symbol_factory.BitVecVal(val, 256)\n\n\n# No of iterations to perform when iteration size is symbolic\nAPPROX_ITR = 100\n\n\nclass Memory:\n    \"\"\"A class representing contract memory with random access.\"\"\"\n\n    def __init__(self):\n        \"\"\"\"\"\"\n        self._msize = 0\n        self._memory: Dict[BitVec, Union[int, BitVec]] = {}\n\n    def __len__(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self._msize\n\n    def __copy__(self):\n        new_memory = Memory()\n        new_memory._memory = copy(self._memory)\n        new_memory._msize = self._msize\n        return new_memory\n\n    def extend(self, size: int):\n        \"\"\"\n\n        :param size:\n        \"\"\"\n        self._msize += size\n\n    def get_word_at(self, index: int) -> Union[int, BitVec]:\n        \"\"\"Access a word from a specified memory index.\n\n        :param index: integer representing the index to access\n        :return: 32 byte word at the specified index\n        \"\"\"\n        try:\n            return symbol_factory.BitVecVal(\n                util.concrete_int_from_bytes(\n                    bytes([util.get_concrete_int(b) for b in self[index : index + 32]]),\n                    0,\n                ),\n                256,\n            )\n        except TypeError:\n            result = simplify(\n                Concat(\n                    [\n                        b if isinstance(b, BitVec) else symbol_factory.BitVecVal(b, 8)\n                        for b in cast(\n                            List[Union[int, BitVec]], self[index : index + 32]\n                        )\n                    ]\n                )\n            )\n            assert result.size() == 256\n            return result\n\n    def write_word_at(self, index: int, value: Union[int, BitVec, bool, Bool]) -> None:\n        \"\"\"Writes a 32 byte word to memory at the specified index`\n\n        :param index: index to write to\n        :param value: the value to write to memory\n        \"\"\"\n        try:\n            # Attempt to concretize value\n            if isinstance(value, bool):\n                _bytes = (\n                    int(1).to_bytes(32, byteorder=\"big\")\n                    if value\n                    else int(0).to_bytes(32, byteorder=\"big\")\n                )\n            else:\n                _bytes = util.concrete_int_to_bytes(value)\n            assert len(_bytes) == 32\n            self[index : index + 32] = list(bytearray(_bytes))\n        except (Z3Exception, AttributeError):  # BitVector or BoolRef\n            value = cast(Union[BitVec, Bool], value)\n            if isinstance(value, Bool):\n                value_to_write = If(\n                    value,\n                    symbol_factory.BitVecVal(1, 256),\n                    symbol_factory.BitVecVal(0, 256),\n                )\n            else:\n                value_to_write = value\n            assert value_to_write.size() == 256\n\n            for i in range(0, value_to_write.size(), 8):\n                self[index + 31 - (i // 8)] = Extract(i + 7, i, value_to_write)\n\n    @overload\n    def __getitem__(self, item: BitVec) -> Union[int, BitVec]: ...\n\n    @overload\n    def __getitem__(self, item: slice) -> List[Union[int, BitVec]]: ...\n\n    def __getitem__(\n        self, item: Union[BitVec, slice]\n    ) -> Union[BitVec, int, List[Union[int, BitVec]]]:\n        \"\"\"\n\n        :param item:\n        :return:\n        \"\"\"\n        if isinstance(item, slice):\n            start, step, stop = item.start, item.step, item.stop\n            if start is None:\n                start = 0\n            if stop is None:  # 2**256 is just a bit too big\n                raise IndexError(\"Invalid Memory Slice\")\n            if step is None:\n                step = 1\n            bvstart, bvstop, bvstep = (\n                convert_bv(start),\n                convert_bv(stop),\n                convert_bv(step),\n            )\n            ret_lis = []\n            symbolic_len = False\n            itr = symbol_factory.BitVecVal(0, 256)\n            if (bvstop - bvstart).symbolic:\n                symbolic_len = True\n\n            while simplify(bvstep * itr != simplify(bvstop - bvstart)) and (\n                not symbolic_len or itr <= APPROX_ITR\n            ):\n                ret_lis.append(self[bvstart + bvstep * itr])\n                itr += 1\n            return ret_lis\n        item = simplify(convert_bv(item))\n        return self._memory.get(item, 0)\n\n    def __setitem__(\n        self,\n        key: Union[int, BitVec, slice],\n        value: Union[BitVec, int, List[Union[int, BitVec]]],\n    ):\n        \"\"\"\n\n        :param key:\n        :param value:\n        \"\"\"\n        if isinstance(key, slice):\n            start, step, stop = key.start, key.step, key.stop\n\n            if start is None:\n                start = 0\n            if stop is None:\n                raise IndexError(\"Invalid Memory Slice\")\n            if step is None:\n                step = 1\n            else:\n                assert False, \"Currently mentioning step size is not supported\"\n            assert isinstance(value, list)\n            bvstart, bvstop, bvstep = (\n                convert_bv(start),\n                convert_bv(stop),\n                convert_bv(step),\n            )\n            symbolic_len = False\n            itr = symbol_factory.BitVecVal(0, 256)\n            if (bvstop - bvstart).symbolic:\n                symbolic_len = True\n            while simplify(bvstep * itr != simplify(bvstop - bvstart)) and (\n                not symbolic_len or itr <= APPROX_ITR\n            ):\n                self[bvstart + itr * bvstep] = cast(List[Union[int, BitVec]], value)[\n                    itr.value\n                ]\n                itr += 1\n\n        else:\n            bv_key = simplify(convert_bv(key))\n            if bv_key >= len(self):\n                return\n            if isinstance(value, int):\n                assert 0 <= value <= 0xFF\n            if isinstance(value, BitVec):\n                assert value.size() == 8\n            self._memory[bv_key] = cast(Union[int, BitVec], value)\n"
  },
  {
    "path": "mythril/laser/ethereum/state/return_data.py",
    "content": "\"\"\"This module declares classes to represent call data.\"\"\"\n\nfrom typing import List\n\nfrom mythril.laser.smt import (\n    BitVec,\n)\n\n\nclass ReturnData:\n    \"\"\"Base returndata class.\"\"\"\n\n    def __init__(self, return_data: List[BitVec], return_data_size: BitVec) -> None:\n        \"\"\"\n\n        :param tx_id:\n        \"\"\"\n        self.return_data = return_data\n        self.return_data_size = return_data_size\n\n    @property\n    def size(self) -> BitVec:\n        \"\"\"\n\n        :return: Calldata size for this calldata object\n        \"\"\"\n        return self.return_data_size\n\n    def __getitem__(self, index):\n        if index < self.size:\n            return self.return_data[index]\n        else:\n            return 0\n"
  },
  {
    "path": "mythril/laser/ethereum/state/transient_storage.py",
    "content": "from copy import copy, deepcopy\n\nfrom mythril.laser.smt import Concat, K, simplify\n\n\nclass TransientStorage:\n    \"\"\"\n    Implements transient storage using an SMT Array.\n    This class tracks set operations in a journal and dynamically constructs SMT queries based on the journal entries.\n    \"\"\"\n\n    def __init__(self, journal=None):\n        \"\"\"\n        Initializes the TransientStorage object.\n\n        Args:\n            journal (list): A list to track set operations. Defaults to an empty list.\n        \"\"\"\n        self.journal = journal or []\n\n    def get(self, addr, index):\n        \"\"\"\n        Constructs and returns an SMT query using the journal.\n\n        Args:\n            addr: Address component of the key.\n            index: Index component of the key.\n\n        Returns:\n            An SMT query representing the value associated with the given key.\n        \"\"\"\n        key = Concat(addr, index)  # Size: 256 + 256\n        dynamic_storage = K(512, 256, 0)\n\n        # Construct an SMT array based on journal entries\n        for entry in self.journal:\n            current_key, current_value = entry[\"key\"], entry[\"value\"]\n            dynamic_storage[current_key] = current_value\n        return dynamic_storage[key]\n\n    def set(self, addr, index, value):\n        \"\"\"\n        Logs the set operation in the journal.\n\n        Args:\n            addr: Address component of the key.\n            index: Index component of the key.\n            value: Value to be associated with the key.\n        \"\"\"\n        key = simplify(Concat(addr, index))\n        self.journal.append({\"key\": key, \"value\": value})\n\n    def clear(self):\n        \"\"\"\n        Clears the journal.\n        This method should be called before user transactions.\n        \"\"\"\n        self.journal = []\n\n    def __copy__(self):\n        \"\"\"\n        Returns a shallow copy of the TransientStorage object.\n        \"\"\"\n        return TransientStorage(copy(self.journal))\n\n    def __deepcopy__(self):\n        \"\"\"\n        Returns a deep copy of the TransientStorage object.\n        \"\"\"\n        return TransientStorage(deepcopy(self.journal))\n"
  },
  {
    "path": "mythril/laser/ethereum/state/world_state.py",
    "content": "\"\"\"This module contains a representation of the EVM's world state.\"\"\"\n\nfrom copy import copy, deepcopy\nfrom random import randint\nfrom typing import TYPE_CHECKING, Dict, Iterator, List, Optional\n\nfrom eth._utils.address import generate_contract_address\n\nfrom mythril.laser.ethereum.state.account import Account\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.constraints import Constraints\nfrom mythril.laser.ethereum.state.transient_storage import TransientStorage\nfrom mythril.laser.smt import Array, BitVec, symbol_factory\nfrom mythril.support.loader import DynLoader\n\nif TYPE_CHECKING:\n    from mythril.laser.ethereum.cfg import Node\n\n\nclass WorldState:\n    \"\"\"The WorldState class represents the world state as described in the\n    yellow paper.\"\"\"\n\n    def __init__(\n        self,\n        transaction_sequence=None,\n        annotations: List[StateAnnotation] = None,\n        constraints: Constraints = None,\n        transient_storage: TransientStorage = None,\n    ) -> None:\n        \"\"\"Constructor for the world state. Initializes the accounts record.\n\n        :param transaction_sequence:\n        :param annotations:\n        \"\"\"\n        self._accounts: Dict[int, Account] = {}\n        self.balances = Array(\"balance\", 256, 256)\n        self.starting_balances = deepcopy(self.balances)\n        self.constraints = constraints or Constraints()\n\n        self.node: Optional[\"Node\"] = None\n        self.transaction_sequence = transaction_sequence or []\n        self._annotations = annotations or []\n        self.transient_storage = transient_storage or TransientStorage()\n\n    @property\n    def accounts(self):\n        return self._accounts\n\n    def __getitem__(self, item: BitVec) -> Account:\n        \"\"\"Gets an account from the worldstate using item as key.\n\n        :param item: Address of the account to get\n        :return: Account associated with the address\n        \"\"\"\n        try:\n            return self._accounts[item.value]\n        except KeyError:\n            new_account = Account(address=item, code=None, balances=self.balances)\n            self._accounts[item.value] = new_account\n            return new_account\n\n    def __copy__(self) -> \"WorldState\":\n        \"\"\"\n\n        :return:\n        \"\"\"\n        new_annotations = [copy(a) for a in self._annotations]\n        new_world_state = WorldState(\n            transaction_sequence=self.transaction_sequence[:],\n            annotations=new_annotations,\n        )\n        new_world_state.balances = copy(self.balances)\n        new_world_state.starting_balances = copy(self.starting_balances)\n        for account in self._accounts.values():\n            new_world_state.put_account(copy(account))\n        new_world_state.node = self.node\n        new_world_state.constraints = copy(self.constraints)\n        new_world_state.transient_storage = copy(self.transient_storage)\n\n        return new_world_state\n\n    def __deepcopy__(self, _) -> \"WorldState\":\n        \"\"\"\n\n        :return:\n        \"\"\"\n        new_annotations = [copy(a) for a in self._annotations]\n        new_world_state = WorldState(\n            transaction_sequence=self.transaction_sequence[:],\n            annotations=new_annotations,\n        )\n        new_world_state.balances = copy(self.balances)\n        new_world_state.starting_balances = copy(self.starting_balances)\n        for account in self._accounts.values():\n            new_world_state.put_account(copy(account))\n        new_world_state.node = self.node\n        new_world_state.constraints = deepcopy(self.constraints)\n        new_world_state.transient_storage = copy(self.transient_storage)\n        return new_world_state\n\n    def accounts_exist_or_load(self, addr, dynamic_loader: DynLoader) -> Account:\n        \"\"\"\n        returns account if it exists, else it loads from the dynamic loader\n        :param addr: address\n        :param dynamic_loader: Dynamic Loader\n        :return: The code\n        \"\"\"\n\n        if isinstance(addr, str):\n            addr = int(addr, 16)\n\n        if isinstance(addr, int):\n            addr_bitvec = symbol_factory.BitVecVal(addr, 256)\n        elif not isinstance(addr, BitVec):\n            addr_bitvec = symbol_factory.BitVecVal(int(addr, 16), 256)\n        else:\n            addr_bitvec = addr\n\n        if addr_bitvec.value in self.accounts:\n            return self.accounts[addr_bitvec.value]\n        if dynamic_loader is None:\n            raise ValueError(\"dynamic_loader is None\")\n\n        if dynamic_loader.active is False:\n            raise ValueError(\"Dynamic Loader is deactivated. Use a symbol.\")\n\n        if isinstance(addr, int):\n            try:\n                balance = dynamic_loader.read_balance(\"{0:#0{1}x}\".format(addr, 42))\n                return self.create_account(\n                    balance=balance,\n                    address=addr_bitvec.value,\n                    dynamic_loader=dynamic_loader,\n                    code=dynamic_loader.dynld(addr),\n                    concrete_storage=True,\n                )\n            except ValueError:\n                # Initial balance will be a symbolic variable\n                pass\n        try:\n            code = dynamic_loader.dynld(addr)\n        except ValueError:\n            code = None\n\n        return self.create_account(\n            address=addr_bitvec.value, dynamic_loader=dynamic_loader, code=code\n        )\n\n    def create_account(\n        self,\n        balance=0,\n        address=None,\n        concrete_storage=False,\n        dynamic_loader=None,\n        creator=None,\n        code=None,\n        nonce=0,\n    ) -> Account:\n        \"\"\"Create non-contract account.\n\n        :param address: The account's address\n        :param balance: Initial balance for the account\n        :param concrete_storage: Interpret account storage as concrete\n        :param dynamic_loader: used for dynamically loading storage from the block chain\n        :param creator: The address of the creator of the contract if it's a contract\n        :param code: The code of the contract, if it's a contract\n        :param nonce: Nonce of the account\n        :return: The new account\n        \"\"\"\n        if creator in self.accounts:\n            nonce = self.accounts[creator].nonce\n        elif creator:\n            self.create_account(address=creator)\n\n        address = (\n            symbol_factory.BitVecVal(address, 256)\n            if address is not None\n            else self._generate_new_address(creator, nonce=self.accounts[creator].nonce)\n        )\n        if creator:\n            self.accounts[creator].nonce += 1\n        new_account = Account(\n            address=address,\n            balances=self.balances,\n            dynamic_loader=dynamic_loader,\n            concrete_storage=concrete_storage,\n        )\n        if code:\n            new_account.code = code\n        new_account.nonce = nonce\n        if balance is not None:\n            new_account.set_balance(symbol_factory.BitVecVal(balance, 256))\n\n        self.put_account(new_account)\n        return new_account\n\n    def create_initialized_contract_account(self, contract_code, storage) -> None:\n        \"\"\"Creates a new contract account, based on the contract code and\n        storage provided The contract code only includes the runtime contract\n        bytecode.\n\n        :param contract_code: Runtime bytecode for the contract\n        :param storage: Initial storage for the contract\n        :return: The new account\n        \"\"\"\n        # TODO: Add type hints\n        new_account = Account(\n            self._generate_new_address(), code=contract_code, balances=self.balances\n        )\n        new_account.storage = storage\n        self.put_account(new_account)\n\n    def annotate(self, annotation: StateAnnotation) -> None:\n        \"\"\"\n\n        :param annotation:\n        \"\"\"\n        self._annotations.append(annotation)\n\n    @property\n    def annotations(self) -> List[StateAnnotation]:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self._annotations\n\n    def get_annotations(self, annotation_type: type) -> Iterator[StateAnnotation]:\n        \"\"\"Filters annotations for the queried annotation type. Designed\n        particularly for modules with annotations:\n        worldstate.get_annotations(MySpecificModuleAnnotation)\n\n        :param annotation_type: The type to filter annotations for\n        :return: filter of matching annotations\n        \"\"\"\n        return filter(lambda x: isinstance(x, annotation_type), self.annotations)\n\n    def _generate_new_address(self, creator=None, nonce=0) -> BitVec:\n        \"\"\"Generates a new address for the global state.\n\n        :return:\n        \"\"\"\n        if creator:\n            # TODO: Use nounce\n            address = \"0x\" + str(generate_contract_address(creator, nonce).hex())\n            return symbol_factory.BitVecVal(int(address, 16), 256)\n        while True:\n            address = \"0x\" + \"\".join([str(hex(randint(0, 16)))[-1] for _ in range(40)])\n            if address not in self._accounts.keys():\n                return symbol_factory.BitVecVal(int(address, 16), 256)\n\n    def put_account(self, account: Account) -> None:\n        \"\"\"\n\n        :param account:\n        \"\"\"\n        self._accounts[account.address.value] = account\n        account._balances = self.balances\n"
  },
  {
    "path": "mythril/laser/ethereum/strategy/__init__.py",
    "content": "from abc import ABC, abstractmethod\nfrom typing import List\n\nfrom mythril.laser.ethereum.state.global_state import GlobalState\n\n\nclass BasicSearchStrategy(ABC):\n    \"\"\"\n    A basic search strategy which halts based on depth\n    \"\"\"\n\n    def __init__(self, work_list, max_depth, **kwargs):\n        self.work_list: List[GlobalState] = work_list\n        self.max_depth: int = max_depth\n\n    def __iter__(self):\n        return self\n\n    @abstractmethod\n    def get_strategic_global_state(self):\n        \"\"\"\"\"\"\n        raise NotImplementedError(\"Must be implemented by a subclass\")\n\n    def run_check(self):\n        return True\n\n    def __next__(self):\n        try:\n            global_state = self.get_strategic_global_state()\n            if global_state.mstate.depth >= self.max_depth:\n                return self.__next__()\n            return global_state\n        except (IndexError, StopIteration):\n            raise StopIteration\n\n\nclass CriterionSearchStrategy(BasicSearchStrategy):\n    \"\"\"\n    If a criterion is satisfied, the search halts\n    \"\"\"\n\n    def __init__(self, work_list, max_depth, **kwargs):\n        super().__init__(work_list, max_depth, **kwargs)\n        self._satisfied_criterion = False\n\n    def get_strategic_global_state(self):\n        if self._satisfied_criterion:\n            raise StopIteration\n        try:\n            return self.get_strategic_global_state()\n        except StopIteration:\n            raise StopIteration\n\n    def set_criterion_satisfied(self):\n        self._satisfied_criterion = True\n"
  },
  {
    "path": "mythril/laser/ethereum/strategy/basic.py",
    "content": "\"\"\"This module implements basic symbolic execution search strategies.\"\"\"\n\nfrom random import choices, randrange\n\nfrom mythril.laser.ethereum.state.global_state import GlobalState\n\nfrom . import BasicSearchStrategy\n\n\nclass DepthFirstSearchStrategy(BasicSearchStrategy):\n    \"\"\"Implements a depth first search strategy I.E.\n\n    Follow one path to a leaf, and then continue to the next one\n    \"\"\"\n\n    def get_strategic_global_state(self) -> GlobalState:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self.work_list.pop()\n\n    def view_strategic_global_state(self) -> GlobalState:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self.work_list[-1]\n\n\nclass BreadthFirstSearchStrategy(BasicSearchStrategy):\n    \"\"\"Implements a breadth first search strategy I.E.\n\n    Execute all states of a \"level\" before continuing\n    \"\"\"\n\n    def get_strategic_global_state(self) -> GlobalState:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self.work_list.pop(0)\n\n    def view_strategic_global_state(self) -> GlobalState:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self.work_list[0]\n\n\nclass ReturnRandomNaivelyStrategy(BasicSearchStrategy):\n    \"\"\"chooses a random state from the worklist with equal likelihood.\"\"\"\n\n    def __init__(self, work_list, max_depth, **kwargs):\n        super().__init__(work_list, max_depth, **kwargs)\n        self.previous_random_value = -1\n\n    def get_strategic_global_state(self) -> GlobalState:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        if len(self.work_list) > 0:\n            if self.previous_random_value == -1:\n                return self.work_list.pop(randrange(len(self.work_list)))\n            else:\n                new_state = self.work_list.pop(self.previous_random_value)\n                self.previous_random_value = -1\n                return new_state\n        else:\n            raise IndexError\n\n    def view_strategic_global_state(self) -> GlobalState:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        if len(self.work_list) > 0:\n            self.previous_random_value = randrange(len(self.work_list))\n            return self.work_list[self.previous_random_value]\n        else:\n            raise IndexError\n\n\nclass ReturnWeightedRandomStrategy(BasicSearchStrategy):\n    \"\"\"chooses a random state from the worklist with likelihood based on\n    inverse proportion to depth.\"\"\"\n\n    def __init__(self, work_list, max_depth, **kwargs):\n        super().__init__(work_list, max_depth, **kwargs)\n        self.previous_random_value = -1\n\n    def get_strategic_global_state(self) -> GlobalState:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        probability_distribution = [\n            1 / (global_state.mstate.depth + 1) for global_state in self.work_list\n        ]\n        if self.previous_random_value != -1:\n            ns = self.work_list.pop(self.previous_random_value)\n            self.previous_random_value = -1\n            return ns\n        else:\n            return self.work_list.pop(\n                choices(range(len(self.work_list)), probability_distribution)[0]\n            )\n\n    def view_strategic_global_state(self) -> GlobalState:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        probability_distribution = [\n            1 / (global_state.mstate.depth + 1) for global_state in self.work_list\n        ]\n        self.previous_random_value = choices(\n            range(len(self.work_list)), probability_distribution\n        )[0]\n        return self.work_list[self.previous_random_value]\n"
  },
  {
    "path": "mythril/laser/ethereum/strategy/beam.py",
    "content": "from mythril.laser.ethereum.state.global_state import GlobalState\n\nfrom . import BasicSearchStrategy\n\n\nclass BeamSearch(BasicSearchStrategy):\n    \"\"\"chooses a random state from the worklist with equal likelihood.\"\"\"\n\n    def __init__(self, work_list, max_depth, beam_width, **kwargs):\n        super().__init__(work_list, max_depth)\n        self.beam_width = beam_width\n\n    @staticmethod\n    def beam_priority(state):\n        return sum([annotation.search_importance for annotation in state._annotations])\n\n    def sort_and_eliminate_states(self):\n        self.work_list.sort(key=lambda state: self.beam_priority(state), reverse=True)\n        del self.work_list[self.beam_width :]\n\n    def view_strategic_global_state(self) -> GlobalState:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        self.sort_and_eliminate_states()\n        if len(self.work_list) > 0:\n            return self.work_list[0]\n        else:\n            raise IndexError\n\n    def get_strategic_global_state(self) -> GlobalState:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        self.sort_and_eliminate_states()\n        if len(self.work_list) > 0:\n            return self.work_list.pop(0)\n        else:\n            raise IndexError\n"
  },
  {
    "path": "mythril/laser/ethereum/strategy/concolic.py",
    "content": "import logging\nimport operator\nfrom copy import copy\nfrom functools import reduce\nfrom typing import Any, Dict, List, Tuple, cast\n\nfrom mythril.analysis.solver import get_transaction_sequence\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.constraints import Constraints\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import Not\n\nfrom . import CriterionSearchStrategy\n\nlog = logging.getLogger(__name__)\n\n\nclass TraceAnnotation(StateAnnotation):\n    \"\"\"\n    This is the annotation used by the ConcolicStrategy to store concolic traces.\n    \"\"\"\n\n    def __init__(self, trace=None):\n        self.trace = trace or []\n\n    @property\n    def persist_over_calls(self) -> bool:\n        return True\n\n    def __copy__(self):\n        return TraceAnnotation(copy(self.trace))\n\n\nclass ConcolicStrategy(CriterionSearchStrategy):\n    \"\"\"\n    Executes program concolically using the input trace till a specific branch\n    \"\"\"\n\n    def __init__(\n        self,\n        work_list: List[GlobalState],\n        max_depth: int,\n        trace: List[List[Tuple[int, str]]],\n        flip_branch_addresses: List[str],\n    ):\n        \"\"\"\n\n        work_list: The work-list of states\n        max_depth: The maximum depth for the strategy to go through\n        trace: This is the trace to be followed, each element is of the type Tuple(program counter, tx_id)\n        flip_branch_addresses: Branch addresses to be flipped.\n        \"\"\"\n        super().__init__(work_list, max_depth)\n        self.trace: List[Tuple[int, str]] = reduce(operator.iconcat, trace, [])\n        self.last_tx_count: int = len(trace)\n        self.flip_branch_addresses: List[str] = flip_branch_addresses\n        self.results: Dict[str, Dict[str, Any]] = {}\n\n    def check_completion_criterion(self):\n        if len(self.flip_branch_addresses) == len(self.results):\n            self.set_criterion_satisfied()\n\n    def get_strategic_global_state(self) -> GlobalState:\n        \"\"\"\n        This function does the following:-\n        1) Choose the states by following the concolic trace.\n        2) In case we have an executed JUMPI that is in flip_branch_addresses, flip that branch.\n        :return:\n        \"\"\"\n        while len(self.work_list) > 0:\n            state = self.work_list.pop()\n            seq_id = len(state.world_state.transaction_sequence)\n\n            trace_annotations = cast(\n                List[TraceAnnotation],\n                list(state.world_state.get_annotations(TraceAnnotation)),\n            )\n\n            if len(trace_annotations) == 0:\n                annotation = TraceAnnotation()\n                state.world_state.annotate(annotation)\n            else:\n                annotation = trace_annotations[0]\n\n            # Appends trace\n            annotation.trace.append((state.mstate.pc, state.current_transaction.id))\n\n            # If length of trace is 1 then it is not a JUMPI\n            if len(annotation.trace) < 2:\n                # If trace does not follow the specified path, ignore the state\n                if annotation.trace != self.trace[: len(annotation.trace)]:\n                    continue\n                return state\n\n            # Get the address of the previous pc\n            addr: str = str(\n                state.environment.code.instruction_list[annotation.trace[-2][0]][\n                    \"address\"\n                ]\n            )\n            if (\n                annotation.trace == self.trace[: len(annotation.trace)]\n                and seq_id == self.last_tx_count\n                and addr in self.flip_branch_addresses\n                and addr not in self.results\n            ):\n                if (\n                    state.environment.code.instruction_list[annotation.trace[-2][0]][\n                        \"opcode\"\n                    ]\n                    != \"JUMPI\"\n                ):\n                    log.error(\n                        f\"The branch {addr} does not lead \"\n                        \"to a jump address, skipping this branch\"\n                    )\n                    continue\n\n                constraints = Constraints(state.world_state.constraints[:-1])\n                constraints.append(Not(state.world_state.constraints[-1]))\n\n                try:\n                    self.results[addr] = get_transaction_sequence(state, constraints)\n                except UnsatError:\n                    self.results[addr] = None\n            elif annotation.trace != self.trace[: len(annotation.trace)]:\n                continue\n            self.check_completion_criterion()\n            return state\n        raise StopIteration\n"
  },
  {
    "path": "mythril/laser/ethereum/strategy/constraint_strategy.py",
    "content": "import logging\n\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.strategy.basic import BasicSearchStrategy\nfrom mythril.support.support_utils import ModelCache\n\nlog = logging.getLogger(__name__)\n\n\nclass DelayConstraintStrategy(BasicSearchStrategy):\n    def __init__(self, work_list, max_depth, **kwargs):\n        super().__init__(work_list, max_depth)\n        self.model_cache = ModelCache()\n        self.pending_worklist = []\n        log.info(\"Loaded search strategy extension: DelayConstraintStrategy\")\n\n    def get_strategic_global_state(self) -> GlobalState:\n        \"\"\"Returns the next state\n\n        :return: Global state\n        \"\"\"\n        while len(self.work_list) == 0:\n            state = self.pending_worklist.pop(0)\n            model = state.world_state.constraints.get_model()\n            if model is not None:\n                self.model_cache.put(model, 1)\n                self.work_list.append(state)\n        state = self.work_list.pop(0)\n        return state\n"
  },
  {
    "path": "mythril/laser/ethereum/strategy/extensions/__init__.py",
    "content": ""
  },
  {
    "path": "mythril/laser/ethereum/strategy/extensions/bounded_loops.py",
    "content": "import logging\nfrom copy import copy\nfrom typing import Dict, List, cast\n\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.strategy.basic import BasicSearchStrategy\nfrom mythril.laser.ethereum.transaction import ContractCreationTransaction\n\nlog = logging.getLogger(__name__)\n\n\nclass JumpdestCountAnnotation(StateAnnotation):\n    \"\"\"State annotation that counts the number of jumps per destination.\"\"\"\n\n    def __init__(self) -> None:\n        self._reached_count: Dict[int, int] = {}\n        self.trace: List[int] = []\n\n    def __copy__(self):\n        result = JumpdestCountAnnotation()\n        result._reached_count = copy(self._reached_count)\n        result.trace = copy(self.trace)\n        return result\n\n\nclass BoundedLoopsStrategy(BasicSearchStrategy):\n    \"\"\"Adds loop pruning to the search strategy.\n    Ignores JUMPI instruction if the destination was targeted >JUMPDEST_LIMIT times.\n    \"\"\"\n\n    def __init__(self, super_strategy: BasicSearchStrategy, **kwargs) -> None:\n        \"\"\"\"\"\"\n\n        self.super_strategy = super_strategy\n        self.bound = kwargs[\"loop_bound\"]\n\n        log.info(\n            \"Loaded search strategy extension: Loop bounds (limit = {})\".format(\n                self.bound\n            )\n        )\n\n        BasicSearchStrategy.__init__(\n            self, super_strategy.work_list, super_strategy.max_depth, **kwargs\n        )\n\n    @staticmethod\n    def calculate_hash(i: int, j: int, trace: List[int]) -> int:\n        \"\"\"\n        calculate hash(trace[i: j])\n        :param i:\n        :param j:\n        :param trace:\n        :return: hash(trace[i: j])\n        \"\"\"\n        key = 0\n        size = 0\n        for itr in range(i, j):\n            key |= trace[itr] << ((itr - i) * 8)\n            size += 1\n\n        return key\n\n    @staticmethod\n    def count_key(trace: List[int], key: int, start: int, size: int) -> int:\n        \"\"\"\n        Count continuous loops in the trace.\n        :param trace:\n        :param key:\n        :param size:\n        :return:\n        \"\"\"\n        count = 1\n        i = start\n        while i >= 0:\n            if BoundedLoopsStrategy.calculate_hash(i, i + size, trace) != key:\n                break\n            count += 1\n            i -= size\n        return count\n\n    @staticmethod\n    def get_loop_count(trace: List[int]) -> int:\n        \"\"\"\n        Gets the loop count\n        :param trace: annotation trace\n        :return:\n        \"\"\"\n        found = False\n        for i in range(len(trace) - 3, 0, -1):\n            if trace[i] == trace[-2] and trace[i + 1] == trace[-1]:\n                found = True\n                break\n\n        if found:\n            key = BoundedLoopsStrategy.calculate_hash(i + 1, len(trace) - 1, trace)\n            size = len(trace) - i - 2\n            count = BoundedLoopsStrategy.count_key(trace, key, i + 1, size)\n        else:\n            count = 0\n        return count\n\n    def get_strategic_global_state(self) -> GlobalState:\n        \"\"\"Returns the next state\n\n        :return: Global state\n        \"\"\"\n\n        while True:\n            state = self.super_strategy.get_strategic_global_state()\n\n            annotations = cast(\n                List[JumpdestCountAnnotation],\n                list(state.get_annotations(JumpdestCountAnnotation)),\n            )\n\n            if len(annotations) == 0:\n                annotation = JumpdestCountAnnotation()\n                state.annotate(annotation)\n            else:\n                annotation = annotations[0]\n\n            cur_instr = state.get_current_instruction()\n\n            annotation.trace.append(cur_instr[\"address\"])\n\n            if cur_instr[\"opcode\"].upper() != \"JUMPDEST\":\n                return state\n\n            # create unique instruction identifier\n            count = BoundedLoopsStrategy.get_loop_count(annotation.trace)\n            # The creation transaction gets a higher loop bound to give it a better chance of success.\n            # TODO: There's probably a nicer way to do this\n            if isinstance(\n                state.current_transaction, ContractCreationTransaction\n            ) and count < max(128, self.bound):\n                return state\n\n            elif count > self.bound:\n                log.debug(\"Loop bound reached, skipping state\")\n                continue\n\n            return state\n"
  },
  {
    "path": "mythril/laser/ethereum/svm.py",
    "content": "\"\"\"This module implements the main symbolic execution engine.\"\"\"\n\nimport logging\nimport random\nfrom abc import ABCMeta\nfrom collections import defaultdict\nfrom copy import copy\nfrom datetime import datetime, timedelta\nfrom typing import Callable, DefaultDict, Dict, List, Optional, Tuple\n\nfrom mythril.analysis.potential_issues import check_potential_issues\nfrom mythril.laser.ethereum.cfg import Edge, JumpType, Node, NodeFlags\nfrom mythril.laser.ethereum.evm_exceptions import StackUnderflowException, VmException\nfrom mythril.laser.ethereum.instruction_data import get_required_stack_elements\nfrom mythril.laser.ethereum.instructions import Instruction\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.strategy.basic import DepthFirstSearchStrategy\nfrom mythril.laser.ethereum.strategy.constraint_strategy import DelayConstraintStrategy\nfrom mythril.laser.ethereum.time_handler import time_handler\nfrom mythril.laser.ethereum.transaction import (\n    ContractCreationTransaction,\n    TransactionEndSignal,\n    TransactionStartSignal,\n    execute_contract_creation,\n    execute_message_call,\n)\nfrom mythril.laser.execution_info import ExecutionInfo\nfrom mythril.laser.plugin.signals import PluginSkipState, PluginSkipWorldState\nfrom mythril.laser.smt import And, simplify, symbol_factory\nfrom mythril.support.opcodes import OPCODES\nfrom mythril.support.support_args import args\n\nlog = logging.getLogger(__name__)\n\n\nclass SVMError(Exception):\n    \"\"\"An exception denoting an unexpected state in symbolic execution.\"\"\"\n\n    pass\n\n\nclass LaserEVM:\n    \"\"\"The LASER EVM.\n\n    Just as Mithril had to be mined at great efforts to provide the\n    Dwarves with their exceptional armour, LASER stands at the heart of\n    Mythril, digging deep in the depths of call graphs, unearthing the\n    most precious symbolic call data, that is then hand-forged into\n    beautiful and strong security issues by the experienced smiths we\n    call detection modules. It is truly a magnificent symbiosis.\n    \"\"\"\n\n    def __init__(\n        self,\n        dynamic_loader=None,\n        max_depth=float(\"inf\"),\n        execution_timeout=60,\n        create_timeout=10,\n        strategy=DepthFirstSearchStrategy,\n        transaction_count=2,\n        requires_statespace=True,\n        iprof=None,\n        use_reachability_check=True,\n        beam_width=None,\n        tx_strategy=None,\n    ) -> None:\n        \"\"\"\n        Initializes the laser evm object\n\n        :param dynamic_loader: Loads data from chain\n        :param max_depth: Maximum execution depth this vm should execute\n        :param execution_timeout: Time to take for execution\n        :param create_timeout: Time to take for contract creation\n        :param strategy: Execution search strategy\n        :param transaction_count: The amount of transactions to execute\n        :param requires_statespace: Variable indicating whether the statespace should be recorded\n        :param iprof: Instruction Profiler\n        :param use_reachability_check: Runs reachability check by solving constraints\n        :param beam_width: The beam width for search strategies\n        :param tx_strategy: A global tx prioritisation strategy\n        \"\"\"\n        self.execution_info: List[ExecutionInfo] = []\n\n        self.open_states: List[WorldState] = []\n        self.total_states = 0\n        self.dynamic_loader = dynamic_loader\n        self.use_reachability_check = use_reachability_check\n\n        self.work_list: List[GlobalState] = []\n        self.strategy = strategy(self.work_list, max_depth, beam_width=beam_width)\n        self.max_depth = max_depth\n        self.transaction_count = transaction_count\n        self.tx_strategy = tx_strategy\n\n        self.execution_timeout = execution_timeout or 0\n        self.create_timeout = create_timeout or 0\n\n        self.requires_statespace = requires_statespace\n        if self.requires_statespace:\n            self.nodes: Dict[int, Node] = {}\n            self.edges: List[Edge] = []\n\n        self.time: datetime = None\n        self.executed_transactions: bool = False\n\n        self.pre_hooks: DefaultDict[str, List[Callable]] = defaultdict(list)\n        self.post_hooks: DefaultDict[str, List[Callable]] = defaultdict(list)\n\n        self._add_world_state_hooks: List[Callable] = []\n        self._execute_state_hooks: List[Callable] = []\n\n        self._start_exec_trans_hooks: List[Callable] = []\n        self._stop_exec_trans_hooks: List[Callable] = []\n\n        self._start_sym_trans_hooks: List[Callable] = []\n        self._stop_sym_trans_hooks: List[Callable] = []\n\n        self._start_sym_exec_hooks: List[Callable] = []\n        self._stop_sym_exec_hooks: List[Callable] = []\n\n        self._start_exec_hooks: List[Callable] = []\n        self._stop_exec_hooks: List[Callable] = []\n\n        self._transaction_end_hooks: List[Callable] = []\n\n        self.iprof = iprof\n        self.instr_pre_hook: Dict[str, List[Callable]] = {}\n        self.instr_post_hook: Dict[str, List[Callable]] = {}\n        for op in OPCODES:\n            self.instr_pre_hook[op] = []\n            self.instr_post_hook[op] = []\n        self.hook_type_map = {\n            \"start_execute_transactions\": self._start_exec_trans_hooks,\n            \"stop_execute_transactions\": self._stop_exec_trans_hooks,\n            \"add_world_state\": self._add_world_state_hooks,\n            \"execute_state\": self._execute_state_hooks,\n            \"start_sym_exec\": self._start_sym_exec_hooks,\n            \"stop_sym_exec\": self._stop_sym_exec_hooks,\n            \"start_sym_trans\": self._start_sym_trans_hooks,\n            \"stop_sym_trans\": self._stop_sym_trans_hooks,\n            \"start_exec\": self._start_exec_hooks,\n            \"stop_exec\": self._stop_exec_hooks,\n            \"transaction_end\": self._transaction_end_hooks,\n        }\n        log.info(\"LASER EVM initialized with dynamic loader: \" + str(dynamic_loader))\n\n    def extend_strategy(self, extension: ABCMeta, **kwargs) -> None:\n        self.strategy = extension(self.strategy, **kwargs)\n\n    def sym_exec(\n        self,\n        world_state: WorldState = None,\n        target_address: int = None,\n        creation_code: str = None,\n        contract_name: str = None,\n    ) -> None:\n        \"\"\"Starts symbolic execution\n        There are two modes of execution.\n        Either we analyze a preconfigured configuration, in which case the world_state and target_address variables\n        must be supplied.\n        Or we execute the creation code of a contract, in which case the creation code and desired name of that\n        contract should be provided.\n\n        :param world_state The world state configuration from which to perform analysis\n        :param target_address The address of the contract account in the world state which analysis should target\n        :param creation_code The creation code to create the target contract in the symbolic environment\n        :param contract_name The name that the created account should be associated with\n        \"\"\"\n        pre_configuration_mode = target_address is not None\n        scratch_mode = creation_code is not None and contract_name is not None\n        if pre_configuration_mode == scratch_mode:\n            raise ValueError(\"Symbolic execution started with invalid parameters\")\n\n        log.debug(\"Starting LASER execution\")\n        for hook in self._start_sym_exec_hooks:\n            hook()\n\n        time_handler.start_execution(self.execution_timeout)\n        self.time = datetime.now()\n\n        if pre_configuration_mode:\n            self.open_states = [world_state]\n            log.info(\"Starting message call transaction to {}\".format(target_address))\n            self.execute_transactions(symbol_factory.BitVecVal(target_address, 256))\n\n        elif scratch_mode:\n            log.info(\"Starting contract creation transaction\")\n\n            created_account = execute_contract_creation(\n                self, creation_code, contract_name, world_state=world_state\n            )\n            log.info(\n                \"Finished contract creation, found {} open states\".format(\n                    len(self.open_states)\n                )\n            )\n\n            if len(self.open_states) == 0:\n                log.warning(\n                    \"No contract was created during the execution of contract creation \"\n                    \"Increase the resources for creation execution (--max-depth or --create-timeout) \"\n                    \"Check whether the bytecode is indeed the creation code, otherwise use the --bin-runtime flag\"\n                )\n\n            self.execute_transactions(created_account.address)\n\n        log.info(\"Finished symbolic execution\")\n        if self.requires_statespace:\n            log.info(\n                \"%d nodes, %d edges, %d total states\",\n                len(self.nodes),\n                len(self.edges),\n                self.total_states,\n            )\n\n        for hook in self._stop_sym_exec_hooks:\n            hook()\n\n    def execute_transactions(self, address) -> None:\n        \"\"\"This function helps runs plugins that can order transactions.\n        Such plugins should set self.executed_transactions as True after its execution\n\n        :param address: Address of the contract\n        :return: None\n        \"\"\"\n        for hook in self._start_exec_trans_hooks:\n            hook()\n        if self.tx_strategy is None:\n            if self.executed_transactions is False:\n                self.time = datetime.now()\n                self._execute_transactions_incremental(\n                    address, txs=args.transaction_sequences\n                )\n        else:\n            self.time = datetime.now()\n            self._execute_transactions_non_ordered(address)\n        for hook in self._stop_exec_trans_hooks:\n            hook()\n\n    def _execute_transactions_non_ordered(self, address):\n        \"\"\"\n        This function executes multiple transactions non-incrementally, using some type priority ordering\n\n        :param address: Address of the contract\n        :return:\n        \"\"\"\n        for txs in self.strategy:\n            log.info(f\"Executing the sequence: {txs}\")\n            self._execute_transactions_incremental(address, txs=txs)\n\n    def _execute_transactions_incremental(self, address, txs=None):\n        \"\"\"This function executes multiple transactions incrementally on the address\n\n        :param address: Address of the contract\n        :return:\n        \"\"\"\n\n        for i in range(self.transaction_count):\n            if len(self.open_states) == 0:\n                break\n            old_states_count = len(self.open_states)\n            # Clear journal at every new user transaction\n            for state in self.open_states:\n                state.transient_storage.clear()\n            if self.use_reachability_check:\n                if isinstance(self.strategy, DelayConstraintStrategy):\n                    open_states = []\n                    for state in self.open_states:\n                        c_val = self.strategy.model_cache.check_quick_sat(\n                            simplify(And(*state.world_state.constraints)).raw\n                        )\n                        if c_val:\n                            open_states.append(self.open_states)\n                        else:\n                            self.strategy.pending_worklist.append(state)\n\n                else:\n                    self.open_states = [\n                        state\n                        for state in self.open_states\n                        if state.constraints.is_possible()\n                    ]\n                    prune_count = old_states_count - len(self.open_states)\n                if prune_count:\n                    log.info(\"Pruned {} unreachable states\".format(prune_count))\n            log.info(\n                \"Starting message call transaction, iteration: {}, {} initial states\".format(\n                    i, len(self.open_states)\n                )\n            )\n            func_hashes = txs[i] if txs else None\n\n            if func_hashes:\n                for itr, func_hash in enumerate(func_hashes):\n                    if func_hash in (-1, -2):\n                        func_hashes[itr] = func_hash\n                    else:\n                        func_hashes[itr] = bytes.fromhex(hex(func_hash)[2:].zfill(8))\n\n            for hook in self._start_sym_trans_hooks:\n                hook()\n\n            execute_message_call(self, address, func_hashes=func_hashes)\n\n            for hook in self._stop_sym_trans_hooks:\n                hook()\n\n        self.executed_transactions = True\n\n    def _check_create_termination(self) -> bool:\n        if len(self.open_states) != 0:\n            return (\n                self.create_timeout > 0\n                and self.time + timedelta(seconds=self.create_timeout) <= datetime.now()\n            )\n        return self._check_execution_termination()\n\n    def _check_execution_termination(self) -> bool:\n        return (\n            self.execution_timeout > 0\n            and self.time + timedelta(seconds=self.execution_timeout) <= datetime.now()\n        )\n\n    def exec(self, create=False, track_gas=False) -> Optional[List[GlobalState]]:\n        \"\"\"\n\n        :param create:\n        :param track_gas:\n        :return:\n        \"\"\"\n        final_states: List[GlobalState] = []\n        for hook in self._start_exec_hooks:\n            hook()\n\n        for global_state in self.strategy:\n            if create and self._check_create_termination():\n                log.debug(\"Hit create timeout, returning.\")\n                return final_states + [global_state] if track_gas else None\n\n            if not create and self._check_execution_termination():\n                log.debug(\"Hit execution timeout, returning.\")\n                return final_states + [global_state] if track_gas else None\n            try:\n                new_states, op_code = self.execute_state(global_state)\n            except NotImplementedError:\n                log.debug(\"Encountered unimplemented instruction\")\n                continue\n\n            if self.strategy.run_check() and (\n                len(new_states) > 1 and random.uniform(0, 1) < args.pruning_factor\n            ):\n                new_states = [\n                    state\n                    for state in new_states\n                    if state.world_state.constraints.is_possible()\n                ]\n            self.manage_cfg(op_code, new_states)  # TODO: What about op_code is None?\n            if new_states:\n                self.work_list += new_states\n            elif track_gas:\n                final_states.append(global_state)\n            self.total_states += len(new_states)\n\n        for hook in self._stop_exec_hooks:\n            hook()\n\n        return final_states if track_gas else None\n\n    def _add_world_state(self, global_state: GlobalState):\n        \"\"\"Stores the world_state of the passed global state in the open states\"\"\"\n\n        for hook in self._add_world_state_hooks:\n            try:\n                hook(global_state)\n            except PluginSkipWorldState:\n                return\n\n        self.open_states.append(global_state.world_state)\n\n    def handle_vm_exception(\n        self, global_state: GlobalState, op_code: str, error_msg: str\n    ) -> List[GlobalState]:\n        _, return_global_state = global_state.transaction_stack.pop()\n\n        if return_global_state is None:\n            # In this case we don't put an unmodified world state in the open_states list Since in the case of an\n            #  exceptional halt all changes should be discarded, and this world state would not provide us with a\n            #  previously unseen world state\n            log.debug(\"Encountered a VmException, ending path: `{}`\".format(error_msg))\n            new_global_states: List[GlobalState] = []\n        else:\n            # First execute the post hook for the transaction ending instruction\n            self._execute_post_hook(op_code, [global_state])\n            new_global_states = self._end_message_call(\n                return_global_state, global_state, revert_changes=True, return_data=None\n            )\n        return new_global_states\n\n    def execute_state(\n        self, global_state: GlobalState\n    ) -> Tuple[List[GlobalState], Optional[str]]:\n        \"\"\"Execute a single instruction in global_state.\n\n        :param global_state:\n        :return: A list of successor states.\n        \"\"\"\n        # Execute hooks\n        try:\n            for hook in self._execute_state_hooks:\n                hook(global_state)\n        except PluginSkipState:\n            return [], None\n\n        instructions = global_state.environment.code.instruction_list\n        try:\n            op_code = instructions[global_state.mstate.pc][\"opcode\"]\n        except IndexError:\n            self._add_world_state(global_state)\n            return [], None\n\n        if len(global_state.mstate.stack) < get_required_stack_elements(op_code):\n            error_msg = (\n                \"Stack Underflow Exception due to insufficient \"\n                \"stack elements for the address {}\".format(\n                    instructions[global_state.mstate.pc][\"address\"]\n                )\n            )\n            new_global_states = self.handle_vm_exception(\n                global_state, op_code, error_msg\n            )\n            self._execute_post_hook(op_code, new_global_states)\n            return new_global_states, op_code\n\n        try:\n            self._execute_pre_hook(op_code, global_state)\n        except PluginSkipState:\n            return [], None\n\n        try:\n            new_global_states = Instruction(\n                op_code,\n                self.dynamic_loader,\n                pre_hooks=self.instr_pre_hook[op_code],\n                post_hooks=self.instr_post_hook[op_code],\n            ).evaluate(global_state)\n\n        except VmException as e:\n            for hook in self._transaction_end_hooks:\n                hook(\n                    global_state,\n                    global_state.current_transaction,\n                    None,\n                    False,\n                )\n            new_global_states = self.handle_vm_exception(global_state, op_code, str(e))\n\n        except TransactionStartSignal as start_signal:\n            # Setup new global state\n            new_global_state = start_signal.transaction.initial_global_state()\n\n            new_global_state.transaction_stack = copy(\n                global_state.transaction_stack\n            ) + [(start_signal.transaction, global_state)]\n            new_global_state.node = global_state.node\n            new_global_state.world_state.constraints = (\n                start_signal.global_state.world_state.constraints\n            )\n\n            log.debug(\"Starting new transaction %s\", start_signal.transaction)\n\n            return [new_global_state], op_code\n\n        except TransactionEndSignal as end_signal:\n            (\n                transaction,\n                return_global_state,\n            ) = end_signal.global_state.transaction_stack[-1]\n\n            log.debug(\"Ending transaction %s.\", transaction)\n\n            for hook in self._transaction_end_hooks:\n                hook(\n                    end_signal.global_state,\n                    transaction,\n                    return_global_state,\n                    end_signal.revert,\n                )\n\n            if return_global_state is None:\n                if (\n                    not isinstance(transaction, ContractCreationTransaction)\n                    or transaction.return_data\n                ) and not end_signal.revert:\n                    check_potential_issues(global_state)\n                    end_signal.global_state.world_state.node = global_state.node\n                    self._add_world_state(end_signal.global_state)\n\n                new_global_states = []\n            else:\n                # First execute the post hook for the transaction ending instruction\n                self._execute_post_hook(op_code, [end_signal.global_state])\n\n                # Propagate annotations\n                new_annotations = [\n                    annotation\n                    for annotation in global_state.annotations\n                    if annotation.persist_over_calls\n                ]\n                return_global_state.add_annotations(new_annotations)\n\n                new_global_states = self._end_message_call(\n                    copy(return_global_state),\n                    global_state,\n                    revert_changes=False or end_signal.revert,\n                    return_data=transaction.return_data,\n                )\n\n        self._execute_post_hook(op_code, new_global_states)\n\n        return new_global_states, op_code\n\n    def _end_message_call(\n        self,\n        return_global_state: GlobalState,\n        global_state: GlobalState,\n        revert_changes=False,\n        return_data=None,\n    ) -> List[GlobalState]:\n        \"\"\"\n\n        :param return_global_state:\n        :param global_state:\n        :param revert_changes:\n        :param return_data:\n        :return:\n        \"\"\"\n\n        return_global_state.world_state.constraints += (\n            global_state.world_state.constraints\n        )\n        # Resume execution of the transaction initializing instruction\n        op_code = return_global_state.environment.code.instruction_list[\n            return_global_state.mstate.pc\n        ][\"opcode\"]\n\n        # Set execution result in the return_state\n        return_global_state.last_return_data = return_data\n        if not revert_changes:\n            return_global_state.world_state = copy(global_state.world_state)\n            return_global_state.environment.active_account = global_state.accounts[\n                return_global_state.environment.active_account.address.value\n            ]\n            if isinstance(\n                global_state.current_transaction, ContractCreationTransaction\n            ):\n                return_global_state.mstate.min_gas_used += (\n                    global_state.mstate.min_gas_used\n                )\n                return_global_state.mstate.max_gas_used += (\n                    global_state.mstate.max_gas_used\n                )\n        try:\n            # Execute the post instruction handler\n            new_global_states = Instruction(\n                op_code,\n                self.dynamic_loader,\n                pre_hooks=self.instr_pre_hook[op_code],\n                post_hooks=self.instr_post_hook[op_code],\n            ).evaluate(return_global_state, True)\n        except VmException:\n            new_global_states = []\n        # In order to get a nice call graph we need to set the nodes here\n        for state in new_global_states:\n            state.node = global_state.node\n\n        return new_global_states\n\n    def manage_cfg(self, opcode: str, new_states: List[GlobalState]) -> None:\n        \"\"\"\n\n        :param opcode:\n        :param new_states:\n        \"\"\"\n        if opcode == \"JUMP\":\n            assert len(new_states) <= 1\n            for state in new_states:\n                self._new_node_state(state)\n        elif opcode == \"JUMPI\":\n            assert len(new_states) <= 2\n            for state in new_states:\n                self._new_node_state(\n                    state, JumpType.CONDITIONAL, state.world_state.constraints[-1]\n                )\n        elif opcode == \"RETURN\":\n            for state in new_states:\n                self._new_node_state(state, JumpType.RETURN)\n\n        for state in new_states:\n            state.node.states.append(state)\n\n    def _new_node_state(\n        self, state: GlobalState, edge_type=JumpType.UNCONDITIONAL, condition=None\n    ) -> None:\n        \"\"\"\n\n        :param state:\n        :param edge_type:\n        :param condition:\n        \"\"\"\n        try:\n            address = state.environment.code.instruction_list[state.mstate.pc][\n                \"address\"\n            ]\n        except IndexError:\n            return\n        new_node = Node(state.environment.active_account.contract_name)\n        old_node = state.node\n        state.node = new_node\n        new_node.constraints = state.world_state.constraints\n        if self.requires_statespace:\n            self.nodes[new_node.uid] = new_node\n            self.edges.append(\n                Edge(\n                    old_node.uid, new_node.uid, edge_type=edge_type, condition=condition\n                )\n            )\n\n        if edge_type == JumpType.RETURN:\n            new_node.flags |= NodeFlags.CALL_RETURN\n        elif edge_type == JumpType.CALL:\n            try:\n                if \"retval\" in str(state.mstate.stack[-1]):\n                    new_node.flags |= NodeFlags.CALL_RETURN\n                else:\n                    new_node.flags |= NodeFlags.FUNC_ENTRY\n            except StackUnderflowException:\n                new_node.flags |= NodeFlags.FUNC_ENTRY\n\n        environment = state.environment\n        disassembly = environment.code\n\n        # Only set when encountering new JUMPI\n        if edge_type == JumpType.CONDITIONAL:\n            if isinstance(\n                state.world_state.transaction_sequence[-1], ContractCreationTransaction\n            ):\n                environment.active_function_name = \"constructor\"\n            elif address in disassembly.address_to_function_name:\n                # Enter a new function\n                environment.active_function_name = disassembly.address_to_function_name[\n                    address\n                ]\n                new_node.flags |= NodeFlags.FUNC_ENTRY\n\n                log.debug(\n                    \"- Entering function \"\n                    + environment.active_account.contract_name\n                    + \":\"\n                    + new_node.function_name\n                )\n            elif address == 0:\n                environment.active_function_name = \"fallback\"\n\n        new_node.function_name = environment.active_function_name\n\n    def register_hooks(self, hook_type: str, hook_dict: Dict[str, List[Callable]]):\n        \"\"\"\n\n        :param hook_type:\n        :param hook_dict:\n        \"\"\"\n        if hook_type == \"pre\":\n            entrypoint = self.pre_hooks\n        elif hook_type == \"post\":\n            entrypoint = self.post_hooks\n        else:\n            raise ValueError(\n                \"Invalid hook type %s. Must be one of {pre, post}\", hook_type\n            )\n\n        for op_code, funcs in hook_dict.items():\n            entrypoint[op_code].extend(funcs)\n\n    def register_laser_hooks(self, hook_type: str, hook: Callable):\n        \"\"\"registers the hook with this Laser VM\"\"\"\n\n        if hook_type in self.hook_type_map:\n            self.hook_type_map[hook_type].append(hook)\n        else:\n            raise ValueError(f\"Invalid hook type {hook_type}\")\n\n    def register_instr_hooks(self, hook_type: str, opcode: str, hook: Callable):\n        \"\"\"Registers instructions hooks from plugins\"\"\"\n        if hook_type == \"pre\":\n            if opcode is None:\n                for op in OPCODES:\n                    self.instr_pre_hook[op].append(hook(op))\n            else:\n                self.instr_pre_hook[opcode].append(hook)\n        else:\n            if opcode is None:\n                for op in OPCODES:\n                    self.instr_post_hook[op].append(hook(op))\n            else:\n                self.instr_post_hook[opcode].append(hook)\n\n    def instr_hook(self, hook_type, opcode) -> Callable:\n        \"\"\"Registers the annotated function with register_instr_hooks\n\n        :param hook_type: Type of hook pre/post\n        :param opcode: The opcode related to the function\n        \"\"\"\n\n        def hook_decorator(func: Callable):\n            \"\"\"Hook decorator generated by laser_hook\n\n            :param func: Decorated function\n            \"\"\"\n            self.register_instr_hooks(hook_type, opcode, func)\n\n        return hook_decorator\n\n    def laser_hook(self, hook_type: str) -> Callable:\n        \"\"\"Registers the annotated function with register_laser_hooks\n\n        :param hook_type:\n        :return: hook decorator\n        \"\"\"\n\n        def hook_decorator(func: Callable):\n            \"\"\"Hook decorator generated by laser_hook\n\n            :param func: Decorated function\n            \"\"\"\n            self.register_laser_hooks(hook_type, func)\n            return func\n\n        return hook_decorator\n\n    def _execute_pre_hook(self, op_code: str, global_state: GlobalState) -> None:\n        \"\"\"\n\n        :param op_code:\n        :param global_state:\n        :return:\n        \"\"\"\n        if op_code not in self.pre_hooks.keys():\n            return\n        for hook in self.pre_hooks[op_code]:\n            hook(global_state)\n\n    def _execute_post_hook(\n        self, op_code: str, global_states: List[GlobalState]\n    ) -> None:\n        \"\"\"\n\n        :param op_code:\n        :param global_states:\n        :return:\n        \"\"\"\n        if op_code not in self.post_hooks.keys():\n            return\n\n        for hook in self.post_hooks[op_code]:\n            for global_state in global_states:\n                try:\n                    hook(global_state)\n                except PluginSkipState:\n                    global_states.remove(global_state)\n\n    def pre_hook(self, op_code: str) -> Callable:\n        \"\"\"\n\n        :param op_code:\n        :return:\n        \"\"\"\n\n        def hook_decorator(func: Callable):\n            \"\"\"\n\n            :param func:\n            :return:\n            \"\"\"\n            if op_code not in self.pre_hooks.keys():\n                self.pre_hooks[op_code] = []\n            self.pre_hooks[op_code].append(func)\n            return func\n\n        return hook_decorator\n\n    def post_hook(self, op_code: str) -> Callable:\n        \"\"\"\n\n        :param op_code:\n        :return:\n        \"\"\"\n\n        def hook_decorator(func: Callable):\n            \"\"\"\n\n            :param func:\n            :return:\n            \"\"\"\n            if op_code not in self.post_hooks.keys():\n                self.post_hooks[op_code] = []\n            self.post_hooks[op_code].append(func)\n            return func\n\n        return hook_decorator\n"
  },
  {
    "path": "mythril/laser/ethereum/time_handler.py",
    "content": "import time\n\nfrom mythril.support.support_utils import Singleton\n\n\nclass TimeHandler(object, metaclass=Singleton):\n    def __init__(self):\n        self._start_time = None\n        self._execution_time = None\n\n    def start_execution(self, execution_time):\n        self._start_time = int(time.time() * 1000)\n        self._execution_time = execution_time * 1000\n\n    def time_remaining(self):\n        return self._execution_time - (int(time.time() * 1000) - self._start_time)\n\n\ntime_handler = TimeHandler()\n"
  },
  {
    "path": "mythril/laser/ethereum/transaction/__init__.py",
    "content": "from mythril.laser.ethereum.transaction.symbolic import (\n    execute_contract_creation,\n    execute_message_call,\n)\nfrom mythril.laser.ethereum.transaction.transaction_models import *\n"
  },
  {
    "path": "mythril/laser/ethereum/transaction/concolic.py",
    "content": "\"\"\"This module contains functions to set up and execute concolic message\ncalls.\"\"\"\n\nimport binascii\nfrom typing import List, Union\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.exceptions import IllegalArgumentError\nfrom mythril.laser.ethereum.cfg import Edge, JumpType, Node\nfrom mythril.laser.ethereum.state.calldata import ConcreteCalldata\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.transaction.transaction_models import (\n    ContractCreationTransaction,\n    MessageCallTransaction,\n    tx_id_manager,\n)\nfrom mythril.laser.smt import symbol_factory\n\n\ndef execute_contract_creation(\n    laser_evm,\n    callee_address,\n    caller_address,\n    origin_address,\n    data,\n    gas_limit,\n    gas_price,\n    value,\n    code=None,\n    track_gas=False,\n    contract_name=None,\n):\n    \"\"\"Executes a contract creation transaction concretely.\n\n    :param laser_evm:\n    :param callee_address:\n    :param caller_address:\n    :param origin_address:\n    :param code:\n    :param data:\n    :param gas_limit:\n    :param gas_price:\n    :param value:\n    :param track_gas:\n    :return:\n    \"\"\"\n\n    open_states: List[WorldState] = laser_evm.open_states[:]\n    del laser_evm.open_states[:]\n\n    data = binascii.b2a_hex(data).decode(\"utf-8\")\n\n    for open_world_state in open_states:\n        next_transaction_id = tx_id_manager.get_next_tx_id()\n        transaction = ContractCreationTransaction(\n            world_state=open_world_state,\n            identifier=next_transaction_id,\n            gas_price=gas_price,\n            gas_limit=gas_limit,  # block gas limit\n            origin=origin_address,\n            code=Disassembly(data),\n            caller=caller_address,\n            contract_name=contract_name,\n            call_data=None,\n            call_value=value,\n        )\n        _setup_global_state_for_execution(laser_evm, transaction)\n\n    return laser_evm.exec(True, track_gas=track_gas)\n\n\ndef execute_message_call(\n    laser_evm,\n    callee_address,\n    caller_address,\n    origin_address,\n    data,\n    gas_limit,\n    gas_price,\n    value,\n    code=None,\n    track_gas=False,\n) -> Union[None, List[GlobalState]]:\n    \"\"\"Execute a message call transaction from all open states.\n\n    :param laser_evm:\n    :param callee_address:\n    :param caller_address:\n    :param origin_address:\n    :param code:\n    :param data:\n    :param gas_limit:\n    :param gas_price:\n    :param value:\n    :param track_gas:\n    :return:\n    \"\"\"\n\n    open_states: List[WorldState] = laser_evm.open_states[:]\n    del laser_evm.open_states[:]\n    for open_world_state in open_states:\n        next_transaction_id = tx_id_manager.get_next_tx_id()\n        code = code or open_world_state[callee_address].code.bytecode\n        transaction = MessageCallTransaction(\n            world_state=open_world_state,\n            identifier=next_transaction_id,\n            gas_price=gas_price,\n            gas_limit=gas_limit,\n            origin=origin_address,\n            code=Disassembly(code),\n            caller=caller_address,\n            callee_account=open_world_state[callee_address],\n            call_data=ConcreteCalldata(next_transaction_id, data),\n            call_value=value,\n        )\n\n        _setup_global_state_for_execution(laser_evm, transaction)\n\n    return laser_evm.exec(track_gas=track_gas)\n\n\ndef _setup_global_state_for_execution(laser_evm, transaction) -> None:\n    \"\"\"Set up global state and cfg for a transactions execution.\n\n    :param laser_evm:\n    :param transaction:\n    \"\"\"\n    # TODO: Resolve circular import between .transaction and ..svm to import LaserEVM here\n    global_state = transaction.initial_global_state()\n    global_state.transaction_stack.append((transaction, None))\n\n    new_node = Node(\n        global_state.environment.active_account.contract_name,\n        function_name=global_state.environment.active_function_name,\n    )\n\n    if laser_evm.requires_statespace:\n        laser_evm.nodes[new_node.uid] = new_node\n    if transaction.world_state.node and laser_evm.requires_statespace:\n        laser_evm.edges.append(\n            Edge(\n                transaction.world_state.node.uid,\n                new_node.uid,\n                edge_type=JumpType.Transaction,\n                condition=None,\n            )\n        )\n        new_node.constraints = global_state.world_state.constraints\n\n    global_state.world_state.transaction_sequence.append(transaction)\n    global_state.node = new_node\n    new_node.states.append(global_state)\n    laser_evm.work_list.append(global_state)\n\n\ndef execute_transaction(*args, **kwargs) -> Union[None, List[GlobalState]]:\n    \"\"\"\n    Chooses the transaction type based on callee address and\n    executes the transaction\n    \"\"\"\n    try:\n        if kwargs[\"callee_address\"] == \"\":\n            if kwargs[\"caller_address\"] == \"\":\n                kwargs[\"caller_address\"] = kwargs[\"origin\"]\n            return execute_contract_creation(*args, **kwargs)\n        kwargs[\"callee_address\"] = symbol_factory.BitVecVal(\n            int(kwargs[\"callee_address\"], 16), 256\n        )\n    except KeyError as k:\n        raise IllegalArgumentError(f\"Argument not found: {k}\")\n    return execute_message_call(*args, **kwargs)\n"
  },
  {
    "path": "mythril/laser/ethereum/transaction/symbolic.py",
    "content": "\"\"\"This module contains functions setting up and executing transactions with\nsymbolic values.\"\"\"\n\nimport logging\nfrom typing import List, Optional\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.cfg import Edge, JumpType, Node\nfrom mythril.laser.ethereum.state.account import Account\nfrom mythril.laser.ethereum.state.calldata import SymbolicCalldata\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.transaction.transaction_models import (\n    BaseTransaction,\n    ContractCreationTransaction,\n    MessageCallTransaction,\n    tx_id_manager,\n)\nfrom mythril.laser.smt import BitVec, Or, symbol_factory\nfrom mythril.laser.smt import SMTBool as Bool\n\nFUNCTION_HASH_BYTE_LENGTH = 4\n\nlog = logging.getLogger(__name__)\n\n\nclass Actors:\n    def __init__(\n        self,\n        creator=0xAFFEAFFEAFFEAFFEAFFEAFFEAFFEAFFEAFFEAFFE,\n        attacker=0xDEADBEEFDEADBEEFDEADBEEFDEADBEEFDEADBEEF,\n        someguy=0xAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA,\n    ):\n        self.addresses = {\n            \"CREATOR\": symbol_factory.BitVecVal(creator, 256),\n            \"ATTACKER\": symbol_factory.BitVecVal(attacker, 256),\n            \"SOMEGUY\": symbol_factory.BitVecVal(someguy, 256),\n        }\n\n    def __setitem__(self, actor: str, address: Optional[str]):\n        \"\"\"\n        Sets an actor to a desired address\n\n        :param actor: Name of the actor to set\n        :param address: Address to set the actor to. None to delete the actor\n        \"\"\"\n        if address is None:\n            if actor in (\"CREATOR\", \"ATTACKER\"):\n                raise ValueError(\"Can't delete creator or attacker address\")\n            del self.addresses[actor]\n        else:\n            if address[0:2] != \"0x\":\n                raise ValueError(\"Actor address not in valid format\")\n\n            self.addresses[actor] = symbol_factory.BitVecVal(int(address[2:], 16), 256)\n\n    def __getitem__(self, actor: str):\n        return self.addresses[actor]\n\n    @property\n    def creator(self):\n        return self.addresses[\"CREATOR\"]\n\n    @property\n    def attacker(self):\n        return self.addresses[\"ATTACKER\"]\n\n    def __len__(self):\n        return len(self.addresses)\n\n\nACTORS = Actors()\n\n\ndef generate_function_constraints(\n    calldata: SymbolicCalldata, func_hashes: List[List[int]]\n) -> List[Bool]:\n    \"\"\"\n    This will generate constraints for fixing the function call part of calldata\n    :param calldata: Calldata\n    :param func_hashes: The list of function hashes allowed for this transaction\n    :return: Constraints List\n    \"\"\"\n    if len(func_hashes) == 0:\n        return []\n    constraints = []\n    for i in range(FUNCTION_HASH_BYTE_LENGTH):\n        constraint = Bool(False)\n        for func_hash in func_hashes:\n            if func_hash == -1:\n                # Fallback function without calldata\n                constraint = Or(constraint, calldata.size < 4)\n            elif func_hash == -2:\n                # Receive function\n                constraint = Or(constraint, calldata.size == 0)\n            else:\n                constraint = Or(\n                    constraint, calldata[i] == symbol_factory.BitVecVal(func_hash[i], 8)\n                )\n        constraints.append(constraint)\n    return constraints\n\n\ndef execute_message_call(\n    laser_evm, callee_address: BitVec, func_hashes: List[List[int]] = None\n) -> None:\n    \"\"\"Executes a message call transaction from all open states.\n\n    :param laser_evm:\n    :param callee_address:\n    \"\"\"\n    # TODO: Resolve circular import between .transaction and ..svm to import LaserEVM here\n    open_states = laser_evm.open_states[:]\n    del laser_evm.open_states[:]\n\n    for open_world_state in open_states:\n        if open_world_state[callee_address].deleted:\n            log.debug(\"Can not execute dead contract, skipping.\")\n            continue\n\n        next_transaction_id = tx_id_manager.get_next_tx_id()\n\n        external_sender = symbol_factory.BitVecSym(\n            \"sender_{}\".format(next_transaction_id), 256\n        )\n        calldata = SymbolicCalldata(next_transaction_id)\n        transaction = MessageCallTransaction(\n            world_state=open_world_state,\n            identifier=next_transaction_id,\n            gas_price=symbol_factory.BitVecSym(\n                \"gas_price{}\".format(next_transaction_id), 256\n            ),\n            gas_limit=8000000,  # block gas limit\n            origin=external_sender,\n            caller=external_sender,\n            callee_account=open_world_state[callee_address],\n            call_data=calldata,\n            call_value=symbol_factory.BitVecSym(\n                \"call_value{}\".format(next_transaction_id), 256\n            ),\n        )\n        constraints = (\n            generate_function_constraints(calldata, func_hashes)\n            if func_hashes\n            else None\n        )\n        _setup_global_state_for_execution(laser_evm, transaction, constraints)\n\n    laser_evm.exec()\n\n\ndef execute_contract_creation(\n    laser_evm,\n    contract_initialization_code,\n    contract_name=None,\n    world_state=None,\n    origin=ACTORS[\"CREATOR\"],\n    caller=ACTORS[\"CREATOR\"],\n) -> Account:\n    \"\"\"Executes a contract creation transaction from all open states.\n\n    :param laser_evm:\n    :param contract_initialization_code:\n    :param contract_name:\n    :return:\n    \"\"\"\n\n    world_state = world_state or WorldState()\n    open_states = [world_state]\n    del laser_evm.open_states[:]\n    new_account = None\n    for open_world_state in open_states:\n        next_transaction_id = tx_id_manager.get_next_tx_id()\n        # call_data \"should\" be '[]', but it is easier to model the calldata symbolically\n        # and add logic in codecopy/codesize/calldatacopy/calldatasize than to model code \"correctly\"\n        transaction = ContractCreationTransaction(\n            world_state=open_world_state,\n            identifier=next_transaction_id,\n            gas_price=symbol_factory.BitVecSym(\n                \"gas_price{}\".format(next_transaction_id), 256\n            ),\n            gas_limit=8000000,  # block gas limit\n            origin=origin,\n            code=Disassembly(contract_initialization_code),\n            caller=caller,\n            contract_name=contract_name,\n            call_data=None,\n            call_value=symbol_factory.BitVecSym(\n                \"call_value{}\".format(next_transaction_id), 256\n            ),\n        )\n        _setup_global_state_for_execution(laser_evm, transaction)\n        new_account = new_account or transaction.callee_account\n\n    laser_evm.exec(True)\n\n    return new_account\n\n\ndef _setup_global_state_for_execution(\n    laser_evm,\n    transaction: BaseTransaction,\n    initial_constraints: Optional[List[Bool]] = None,\n) -> None:\n    \"\"\"Sets up global state and cfg for a transactions execution.\n\n    :param laser_evm:\n    :param transaction:\n    \"\"\"\n    # TODO: Resolve circular import between .transaction and ..svm to import LaserEVM here\n    global_state = transaction.initial_global_state()\n    global_state.transaction_stack.append((transaction, None))\n    global_state.world_state.constraints += initial_constraints or []\n\n    global_state.world_state.constraints.append(\n        Or(*[transaction.caller == actor for actor in ACTORS.addresses.values()])\n    )\n\n    new_node = Node(\n        global_state.environment.active_account.contract_name,\n        function_name=global_state.environment.active_function_name,\n    )\n    if laser_evm.requires_statespace:\n        laser_evm.nodes[new_node.uid] = new_node\n\n    if transaction.world_state.node:\n        if laser_evm.requires_statespace:\n            laser_evm.edges.append(\n                Edge(\n                    transaction.world_state.node.uid,\n                    new_node.uid,\n                    edge_type=JumpType.Transaction,\n                    condition=None,\n                )\n            )\n        new_node.constraints = global_state.world_state.constraints\n\n    global_state.world_state.transaction_sequence.append(transaction)\n    global_state.node = new_node\n    new_node.states.append(global_state)\n    laser_evm.work_list.append(global_state)\n\n\ndef execute_transaction(*args, **kwargs):\n    \"\"\"\n    Chooses the transaction type based on callee address and\n    executes the transaction\n    \"\"\"\n    laser_evm = args[0]\n    if kwargs[\"callee_address\"] == \"\":\n        for ws in laser_evm.open_states[:]:\n            execute_contract_creation(\n                laser_evm=laser_evm,\n                contract_initialization_code=kwargs[\"data\"],\n                world_state=ws,\n            )\n        return\n\n    execute_message_call(\n        laser_evm=laser_evm,\n        callee_address=symbol_factory.BitVecVal(int(kwargs[\"callee_address\"], 16), 256),\n    )\n"
  },
  {
    "path": "mythril/laser/ethereum/transaction/transaction_models.py",
    "content": "\"\"\"This module contains the transaction models used throughout LASER's symbolic\nexecution.\"\"\"\n\nimport logging\nfrom copy import deepcopy\nfrom typing import Optional, Union\n\nfrom z3 import ExprRef\n\nfrom mythril.laser.ethereum.state.account import Account\nfrom mythril.laser.ethereum.state.calldata import (\n    BaseCalldata,\n    ConcreteCalldata,\n    SymbolicCalldata,\n)\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.return_data import ReturnData\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.smt import UGE, BitVec, symbol_factory\nfrom mythril.support.support_utils import Singleton\n\nlog = logging.getLogger(__name__)\n\n\nclass TxIdManager(object, metaclass=Singleton):\n    def __init__(self):\n        self._next_transaction_id = 0\n\n    def get_next_tx_id(self):\n        self._next_transaction_id += 1\n        return str(self._next_transaction_id)\n\n    def restart_counter(self):\n        self._next_transaction_id = 0\n\n    def set_counter(self, tx_id):\n        self._next_transaction_id = tx_id\n\n\ntx_id_manager = TxIdManager()\n\n\nclass TransactionEndSignal(Exception):\n    \"\"\"Exception raised when a transaction is finalized.\"\"\"\n\n    def __init__(self, global_state: GlobalState, revert=False) -> None:\n        self.global_state = global_state\n        self.revert = revert\n\n\nclass TransactionStartSignal(Exception):\n    \"\"\"Exception raised when a new transaction is started.\"\"\"\n\n    def __init__(\n        self,\n        transaction: Union[\"MessageCallTransaction\", \"ContractCreationTransaction\"],\n        op_code: str,\n        global_state: GlobalState,\n    ) -> None:\n        self.transaction = transaction\n        self.op_code = op_code\n        self.global_state = global_state\n\n\nclass BaseTransaction:\n    \"\"\"Basic transaction class holding common data.\"\"\"\n\n    def __init__(\n        self,\n        world_state: WorldState,\n        callee_account: Account = None,\n        caller: ExprRef = None,\n        call_data=None,\n        identifier: Optional[str] = None,\n        gas_price=None,\n        gas_limit=None,\n        origin=None,\n        code=None,\n        call_value=None,\n        init_call_data=True,\n        static=False,\n        base_fee=None,\n    ) -> None:\n        assert isinstance(world_state, WorldState)\n        self.world_state = world_state\n        self.id = identifier or tx_id_manager.get_next_tx_id()\n\n        self.gas_price = (\n            gas_price\n            if gas_price is not None\n            else symbol_factory.BitVecSym(f\"gasprice{identifier}\", 256)\n        )\n\n        self.base_fee = (\n            base_fee\n            if base_fee is not None\n            else symbol_factory.BitVecSym(f\"basefee{identifier}\", 256)\n        )\n\n        self.gas_limit = gas_limit\n\n        self.origin = (\n            origin\n            if origin is not None\n            else symbol_factory.BitVecSym(f\"origin{identifier}\", 256)\n        )\n        self.code = code\n\n        self.caller = caller\n        self.callee_account = callee_account\n        if call_data is None and init_call_data:\n            self.call_data: BaseCalldata = SymbolicCalldata(self.id)\n        else:\n            self.call_data = (\n                call_data\n                if isinstance(call_data, BaseCalldata)\n                else ConcreteCalldata(self.id, [])\n            )\n\n        self.call_value = (\n            call_value\n            if call_value is not None\n            else symbol_factory.BitVecSym(f\"callvalue{identifier}\", 256)\n        )\n        self.static = static\n        self.return_data: Optional[ReturnData] = None\n\n    def initial_global_state_from_environment(self, environment, active_function):\n        \"\"\"\n\n        :param environment:\n        :param active_function:\n        :return:\n        \"\"\"\n        # Initialize the execution environment\n        global_state = GlobalState(self.world_state, environment, None)\n        global_state.environment.active_function_name = active_function\n\n        sender = environment.sender\n        receiver = environment.active_account.address\n        value = (\n            environment.callvalue\n            if isinstance(environment.callvalue, BitVec)\n            else symbol_factory.BitVecVal(environment.callvalue, 256)\n        )\n\n        global_state.world_state.constraints.append(\n            UGE(global_state.world_state.balances[sender], value)\n        )\n        global_state.world_state.balances[receiver] += value\n        global_state.world_state.balances[sender] -= value\n\n        return global_state\n\n    def initial_global_state(self) -> GlobalState:\n        raise NotImplementedError\n\n    def __str__(self) -> str:\n        if self.callee_account is None or self.callee_account.address.symbolic is False:\n            return \"{} {} from {} to {:#42x}\".format(\n                self.__class__.__name__,\n                self.id,\n                self.caller,\n                int(str(self.callee_account.address)) if self.callee_account else -1,\n            )\n        else:\n            return \"{} {} from {} to {}\".format(\n                self.__class__.__name__,\n                self.id,\n                self.caller,\n                str(self.callee_account.address),\n            )\n\n\nclass MessageCallTransaction(BaseTransaction):\n    \"\"\"Transaction object models an transaction.\"\"\"\n\n    def __init__(self, *args, **kwargs) -> None:\n        super().__init__(*args, **kwargs)\n\n    def initial_global_state(self) -> GlobalState:\n        \"\"\"Initialize the execution environment.\"\"\"\n        environment = Environment(\n            self.callee_account,\n            self.caller,\n            self.call_data,\n            self.gas_price,\n            self.call_value,\n            self.origin,\n            self.base_fee,\n            code=self.code or self.callee_account.code,\n            static=self.static,\n        )\n        return super().initial_global_state_from_environment(\n            environment, active_function=\"fallback\"\n        )\n\n    def end(self, global_state: GlobalState, return_data=None, revert=False) -> None:\n        \"\"\"\n\n        :param global_state:\n        :param return_data:\n        :param revert:\n        \"\"\"\n        self.return_data = return_data\n\n        raise TransactionEndSignal(global_state, revert)\n\n\nclass ContractCreationTransaction(BaseTransaction):\n    \"\"\"Transaction object models an transaction.\"\"\"\n\n    def __init__(\n        self,\n        world_state: WorldState,\n        caller: ExprRef = None,\n        call_data=None,\n        identifier: Optional[str] = None,\n        gas_price=None,\n        gas_limit=None,\n        origin=None,\n        code=None,\n        call_value=None,\n        contract_name=None,\n        contract_address=None,\n        base_fee=None,\n    ) -> None:\n        self.prev_world_state = deepcopy(world_state)\n        contract_address = (\n            contract_address if isinstance(contract_address, int) else None\n        )\n        # Balance set to None to allow for pre-existing ether.\n        callee_account = world_state.create_account(\n            None, concrete_storage=True, creator=caller.value, address=contract_address\n        )\n        callee_account.contract_name = contract_name or callee_account.contract_name\n        # init_call_data \"should\" be false, but it is easier to model the calldata symbolically\n        # and add logic in codecopy/codesize/calldatacopy/calldatasize than to model code \"correctly\"\n        super().__init__(\n            world_state=world_state,\n            callee_account=callee_account,\n            caller=caller,\n            call_data=call_data,\n            identifier=identifier,\n            gas_price=gas_price,\n            gas_limit=gas_limit,\n            origin=origin,\n            code=code,\n            call_value=call_value,\n            init_call_data=True,\n            base_fee=base_fee,\n        )\n\n    def initial_global_state(self) -> GlobalState:\n        \"\"\"Initialize the execution environment.\"\"\"\n        environment = Environment(\n            active_account=self.callee_account,\n            sender=self.caller,\n            calldata=self.call_data,\n            gasprice=self.gas_price,\n            callvalue=self.call_value,\n            origin=self.origin,\n            basefee=self.base_fee,\n            code=self.code,\n        )\n        return super().initial_global_state_from_environment(\n            environment, active_function=\"constructor\"\n        )\n\n    def end(self, global_state: GlobalState, return_data=None, revert=False):\n        \"\"\"\n\n        :param global_state:\n        :param return_data:\n        :param revert:\n        \"\"\"\n\n        if return_data is None or return_data.size == 0:\n            self.return_data = None\n            raise TransactionEndSignal(global_state, revert=revert)\n\n        global_state.environment.active_account.code.assign_bytecode(\n            tuple(return_data.return_data)\n        )\n        return_data = str(hex(global_state.environment.active_account.address.value))\n        self.return_data: Optional[ReturnData] = ReturnData(\n            return_data, symbol_factory.BitVecVal(len(return_data) // 2, 256)\n        )\n        assert global_state.environment.active_account.code.instruction_list != []\n\n        raise TransactionEndSignal(global_state, revert=revert)\n"
  },
  {
    "path": "mythril/laser/ethereum/tx_prioritiser/__init__.py",
    "content": "from .rf_prioritiser import RfTxPrioritiser\n"
  },
  {
    "path": "mythril/laser/ethereum/tx_prioritiser/rf_prioritiser.py",
    "content": "import logging\nimport pickle\n\nimport numpy as np\n\nlog = logging.getLogger(__name__)\n\n\nclass RfTxPrioritiser:\n    def __init__(self, contract, depth=3, model_path=None):\n        self.rf_path = None\n        self.contract = contract\n        self.depth = depth\n\n        with open(model_path, \"rb\") as file:\n            self.model = pickle.load(file)\n        if self.contract.features is None:\n            log.info(\n                \"There are no available features. Rf based Tx Prioritisation turned off.\"\n            )\n            return None\n        self.preprocessed_features = self.preprocess_features(self.contract.features)\n        self.recent_predictions = []\n\n    def preprocess_features(self, features_dict):\n        flat_features = []\n        for function_name, function_features in features_dict.items():\n            function_features_values = list(function_features.values())\n            flat_features.extend(function_features_values)\n\n        return np.array(flat_features).reshape(1, -1)\n\n    def __next__(self, address):\n        predictions_sequence = []\n        current_features = np.concatenate(\n            [\n                self.preprocessed_features,\n                np.array(self.recent_predictions).reshape(1, -1),\n            ],\n            axis=1,\n        )\n\n        for i in range(self.depth):\n            predictions = self.model.predict_proba(current_features)\n            most_likely_next_tx = np.argmax(predictions, axis=1)[0]\n            predictions_sequence.append(most_likely_next_tx)\n            current_features = np.concatenate(\n                [\n                    self.preprocessed_features,\n                    np.array(\n                        self.recent_predictions + predictions_sequence[: i + 1]\n                    ).reshape(1, -1),\n                ],\n                axis=1,\n            )\n\n        self.recent_predictions.extend(predictions_sequence)\n        while len(self.recent_predictions) > self.depth:\n            self.recent_predictions.pop(0)\n        return predictions_sequence\n"
  },
  {
    "path": "mythril/laser/ethereum/util.py",
    "content": "\"\"\"This module contains various utility conversion functions and constants for\nLASER.\"\"\"\n\nimport re\nfrom typing import TYPE_CHECKING, Dict, List, Union, cast\n\nif TYPE_CHECKING:\n    from mythril.laser.ethereum.state.global_state import GlobalState\n    from mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.smt import (\n    BitVec,\n    Expression,\n    If,\n    simplify,\n    symbol_factory,\n)\nfrom mythril.laser.smt import (\n    SMTBool as Bool,\n)\n\nTT256 = 2**256\nTT256M1 = 2**256 - 1\nTT255 = 2**255\n\n\ndef safe_decode(hex_encoded_string: str) -> bytes:\n    \"\"\"\n\n    :param hex_encoded_string:\n    :return:\n    \"\"\"\n    if hex_encoded_string.startswith(\"0x\"):\n        return bytes.fromhex(hex_encoded_string[2:])\n    else:\n        return bytes.fromhex(hex_encoded_string)\n\n\ndef insert_ret_val(global_state: \"GlobalState\"):\n    retval = global_state.new_bitvec(\n        \"retval_\" + str(global_state.get_current_instruction()[\"address\"]), 256\n    )\n    global_state.mstate.stack.append(retval)\n    global_state.world_state.constraints.append(retval == 1)\n\n\ndef to_signed(i: int) -> int:\n    \"\"\"\n\n    :param i:\n    :return:\n    \"\"\"\n    return i if i < TT255 else i - TT256\n\n\ndef get_instruction_index(\n    instruction_list: List[Dict], address: int\n) -> Union[int, None]:\n    \"\"\"\n\n    :param instruction_list:\n    :param address:\n    :return:\n    \"\"\"\n    index = 0\n    for instr in instruction_list:\n        if instr[\"address\"] >= address:\n            return index\n        index += 1\n    return None\n\n\ndef get_trace_line(instr: Dict, state: \"MachineState\") -> str:\n    \"\"\"\n\n    :param instr:\n    :param state:\n    :return:\n    \"\"\"\n    stack = str(state.stack[::-1])\n    # stack = re.sub(\"(\\d+)\",   lambda m: hex(int(m.group(1))), stack)\n    stack = re.sub(\"\\n\", \"\", stack)\n    return str(instr[\"address\"]) + \" \" + instr[\"opcode\"] + \"\\tSTACK: \" + stack\n\n\ndef pop_bitvec(state: \"MachineState\") -> BitVec:\n    \"\"\"\n\n    :param state:\n    :return:\n    \"\"\"\n    # pop one element from stack, converting boolean expressions and\n    # concrete Python variables to BitVecVal\n\n    item = state.stack.pop()\n\n    if isinstance(item, Bool):\n        return If(\n            cast(Bool, item),\n            symbol_factory.BitVecVal(1, 256),\n            symbol_factory.BitVecVal(0, 256),\n        )\n    elif isinstance(item, int):\n        return symbol_factory.BitVecVal(item, 256)\n    else:\n        item = cast(BitVec, item)\n        return simplify(item)\n\n\ndef get_concrete_int(item: Union[int, Expression]) -> int:\n    \"\"\"\n\n    :param item:\n    :return:\n    \"\"\"\n    if isinstance(item, int):\n        return item\n    elif isinstance(item, BitVec):\n        if item.symbolic:\n            raise TypeError(\"Got a symbolic BitVecRef\")\n        return item.value\n    elif isinstance(item, Bool):\n        value = item.value\n        if value is None:\n            raise TypeError(\"Symbolic boolref encountered\")\n        return value\n\n    assert False, \"Unhandled type {} encountered\".format(str(type(item)))\n\n\ndef concrete_int_from_bytes(\n    concrete_bytes: Union[List[Union[BitVec, int]], bytes], start_index: int\n) -> int:\n    \"\"\"\n\n    :param concrete_bytes:\n    :param start_index:\n    :return:\n    \"\"\"\n    concrete_bytes = [\n        byte.value if isinstance(byte, BitVec) and not byte.symbolic else byte\n        for byte in concrete_bytes\n    ]\n    integer_bytes = concrete_bytes[start_index : start_index + 32]\n\n    # The below statement is expected to fail in some circumstances whose error is caught\n    return int.from_bytes(integer_bytes, byteorder=\"big\")  # type: ignore\n\n\ndef concrete_int_to_bytes(val):\n    \"\"\"\n\n    :param val:\n    :return:\n    \"\"\"\n    # logging.debug(\"concrete_int_to_bytes \" + str(val))\n    if isinstance(val, int):\n        return val.to_bytes(32, byteorder=\"big\")\n    return simplify(val).value.to_bytes(32, byteorder=\"big\")\n\n\ndef bytearray_to_int(arr):\n    \"\"\"\n\n    :param arr:\n    :return:\n    \"\"\"\n    o = 0\n    for a in arr:\n        o = (o << 8) + a\n    return o\n\n\ndef extract_copy(\n    data: bytearray, mem: bytearray, memstart: int, datastart: int, size: int\n):\n    for i in range(size):\n        if datastart + i < len(data):\n            mem[memstart + i] = data[datastart + i]\n        else:\n            mem[memstart + i] = 0\n\n\ndef extract32(data: bytearray, i: int) -> int:\n    \"\"\"\n\n    :param data:\n    :param i:\n    :return:\n    \"\"\"\n    if i >= len(data):\n        return 0\n    o = data[i : min(i + 32, len(data))]\n    o.extend(bytearray(32 - len(o)))\n    return bytearray_to_int(o)\n"
  },
  {
    "path": "mythril/laser/execution_info.py",
    "content": "from abc import ABC, abstractmethod\n\n\nclass ExecutionInfo(ABC):\n    @abstractmethod\n    def as_dict(self):\n        \"\"\"Returns a dictionary with the execution info contained in this object\n\n        The returned dictionary only uses primitive types.\n        \"\"\"\n        pass\n"
  },
  {
    "path": "mythril/laser/plugin/__init__.py",
    "content": "\"\"\"Laser plugins\n\nThis module contains everything to do with laser plugins\n\nLaser plugins are a way of extending laser's functionality without complicating the core business logic.\nDifferent features that have been implemented in the form of plugins are:\n- benchmarking\n- path pruning\n\nPlugins also provide a way to implement optimisations outside of the mythril code base and to inject them.\nThe api that laser currently provides is still unstable and will probably change to suit our needs\nas more plugins get developed.\n\nFor the implementation of plugins the following modules are of interest:\n- laser.plugins.plugin\n- laser.plugins.signals\n- laser.svm\n\nWhich show the basic interfaces with which plugins are able to interact\n\"\"\"\n"
  },
  {
    "path": "mythril/laser/plugin/builder.py",
    "content": "from abc import ABC, abstractmethod\n\nfrom mythril.laser.plugin.interface import LaserPlugin\n\n\nclass PluginBuilder(ABC):\n    \"\"\"PluginBuilder\n\n    The plugin builder interface enables construction of Laser plugins\n    \"\"\"\n\n    name = \"Default Plugin Name\"\n\n    def __init__(self):\n        self.enabled = True\n\n    @abstractmethod\n    def __call__(self, *args, **kwargs) -> LaserPlugin:\n        \"\"\"Constructs the plugin\"\"\"\n        pass\n"
  },
  {
    "path": "mythril/laser/plugin/interface.py",
    "content": "from mythril.laser.ethereum.svm import LaserEVM\n\n\nclass LaserPlugin:\n    \"\"\"Base class for laser plugins\n\n    Functionality in laser that the symbolic execution process does not need to depend on\n    can be implemented in the form of a laser plugin.\n\n    Laser plugins implement the function initialize(symbolic_vm) which is called with the laser virtual machine\n    when they are loaded.\n    Regularly a plugin will introduce several hooks into laser in this function\n\n    Plugins can direct actions by raising Signals defined in mythril.laser.ethereum.plugins.signals\n    For example, a pruning plugin might raise the PluginSkipWorldState signal.\n    \"\"\"\n\n    def initialize(self, symbolic_vm: LaserEVM) -> None:\n        \"\"\"Initializes this plugin on the symbolic virtual machine\n\n        :param symbolic_vm: symbolic virtual machine to initialize the laser plugin on\n        \"\"\"\n        raise NotImplementedError\n"
  },
  {
    "path": "mythril/laser/plugin/loader.py",
    "content": "import logging\nfrom typing import Dict, List, Optional\n\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.plugin.builder import PluginBuilder\nfrom mythril.laser.plugin.interface import LaserPlugin\nfrom mythril.support.support_utils import Singleton\n\nlog = logging.getLogger(__name__)\n\n\nclass LaserPluginLoader(object, metaclass=Singleton):\n    \"\"\"\n    The LaserPluginLoader is used to abstract the logic relating to plugins.\n    Components outside of laser thus don't have to be aware of the interface that plugins provide\n    \"\"\"\n\n    def __init__(self) -> None:\n        \"\"\"Initializes the plugin loader\"\"\"\n        self.laser_plugin_builders: Dict[str, PluginBuilder] = {}\n        self.plugin_args: Dict[str, Dict] = {}\n        self.plugin_list: Dict[str, LaserPlugin] = {}\n\n    def add_args(self, plugin_name, **kwargs):\n        self.plugin_args[plugin_name] = kwargs\n\n    def load(self, plugin_builder: PluginBuilder) -> None:\n        \"\"\"Enables a Laser Plugin\n\n        :param plugin_builder: Builder that constructs the plugin\n        \"\"\"\n        log.info(f\"Loading laser plugin: {plugin_builder.name}\")\n        if plugin_builder.name in self.laser_plugin_builders:\n            log.warning(\n                f\"Laser plugin with name {plugin_builder.name} was already loaded, skipping...\"\n            )\n            return\n        self.laser_plugin_builders[plugin_builder.name] = plugin_builder\n\n    def is_enabled(self, plugin_name: str) -> bool:\n        \"\"\"Returns whether the plugin is loaded in the symbolic_vm\n\n        :param plugin_name: Name of the plugin to check\n        \"\"\"\n        if plugin_name not in self.laser_plugin_builders:\n            return False\n        else:\n            return self.laser_plugin_builders[plugin_name].enabled\n\n    def enable(self, plugin_name: str):\n        if plugin_name not in self.laser_plugin_builders:\n            return ValueError(f\"Plugin with name: {plugin_name} was not loaded\")\n        self.laser_plugin_builders[plugin_name].enabled = True\n\n    def instrument_virtual_machine(\n        self, symbolic_vm: LaserEVM, with_plugins: Optional[List[str]]\n    ):\n        \"\"\"Load enabled plugins into the passed symbolic virtual machine\n        :param symbolic_vm: The virtual machine to instrument the plugins with\n        :param with_plugins: Override the globally enabled/disabled builders and load all plugins in the list\n        \"\"\"\n        for plugin_name, plugin_builder in self.laser_plugin_builders.items():\n            enabled = (\n                plugin_builder.enabled\n                if not with_plugins\n                else plugin_name in with_plugins\n            )\n\n            if not enabled:\n                continue\n\n            log.info(f\"Instrumenting symbolic vm with plugin: {plugin_name}\")\n            plugin = plugin_builder(**self.plugin_args.get(plugin_name, {}))\n            plugin.initialize(symbolic_vm)\n            self.plugin_list[plugin_name] = plugin\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/__init__.py",
    "content": "\"\"\"Plugin implementations\n\nThis module contains the implementation of some features\n\n- benchmarking\n- pruning\n\"\"\"\n\nfrom mythril.laser.plugin.plugins.benchmark import BenchmarkPluginBuilder\nfrom mythril.laser.plugin.plugins.call_depth_limiter import CallDepthLimitBuilder\nfrom mythril.laser.plugin.plugins.coverage.coverage_plugin import CoveragePluginBuilder\nfrom mythril.laser.plugin.plugins.coverage_metrics import CoverageMetricsPluginBuilder\nfrom mythril.laser.plugin.plugins.dependency_pruner import DependencyPrunerBuilder\nfrom mythril.laser.plugin.plugins.instruction_profiler import InstructionProfilerBuilder\nfrom mythril.laser.plugin.plugins.mutation_pruner import MutationPrunerBuilder\nfrom mythril.laser.plugin.plugins.state_merge import StateMergePluginBuilder\nfrom mythril.laser.plugin.plugins.summary import SymbolicSummaryPluginBuilder\nfrom mythril.laser.plugin.plugins.trace import TraceFinderBuilder\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/benchmark.py",
    "content": "import logging\nfrom time import time\n\nimport matplotlib.pyplot as plt\n\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.plugin.builder import PluginBuilder\nfrom mythril.laser.plugin.interface import LaserPlugin\n\nlog = logging.getLogger(__name__)\n\n\nclass BenchmarkPluginBuilder(PluginBuilder):\n    name = \"benchmark\"\n\n    def __call__(self, *args, **kwargs):\n        return BenchmarkPlugin()\n\n\n# TODO: introduce dependency on coverage plugin\nclass BenchmarkPlugin(LaserPlugin):\n    \"\"\"Benchmark Plugin\n\n    This plugin aggregates the following information:\n    - duration\n    - code coverage over time\n    - final code coverage\n    - total number of executed instructions\n\n    \"\"\"\n\n    def __init__(self, name=None):\n        \"\"\"Creates BenchmarkPlugin\n\n        :param name: name of this benchmark, used for storing the results\n        \"\"\"\n        self.nr_of_executed_insns = 0\n        self.begin = None\n        self.end = None\n        self.coverage = {}\n        self.name = name\n\n    def initialize(self, symbolic_vm: LaserEVM):\n        \"\"\"Initializes the BenchmarkPlugin\n\n        Introduces hooks in symbolic_vm to track the desired values\n        :param symbolic_vm: Symbolic virtual machine to analyze\n        \"\"\"\n        self._reset()\n\n        @symbolic_vm.laser_hook(\"execute_state\")\n        def execute_state_hook(_):\n            current_time = time() - self.begin\n            self.nr_of_executed_insns += 1\n\n            for key, value in symbolic_vm.coverage.items():\n                try:\n                    self.coverage[key][current_time] = sum(value[1]) * 100 / value[0]\n                except KeyError:\n                    self.coverage[key] = {}\n                    self.coverage[key][current_time] = sum(value[1]) * 100 / value[0]\n\n        @symbolic_vm.laser_hook(\"start_sym_exec\")\n        def start_sym_exec_hook():\n            self.begin = time()\n\n        @symbolic_vm.laser_hook(\"stop_sym_exec\")\n        def stop_sym_exec_hook():\n            self.end = time()\n\n            self._write_to_graph()\n            self._store_report()\n\n    def _reset(self):\n        \"\"\"Reset this plugin\"\"\"\n        self.nr_of_executed_insns = 0\n        self.begin = None\n        self.end = None\n        self.coverage = {}\n\n    def _store_report(self):\n        \"\"\"Store the results of this plugin\"\"\"\n        pass\n\n    def _write_to_graph(self):\n        \"\"\"Write the coverage results to a graph\"\"\"\n        traces = []\n        for _, trace_data in self.coverage.items():\n            traces += [list(trace_data.keys()), list(trace_data.values()), \"r--\"]\n\n        plt.plot(*traces)\n        plt.axis([0, self.end - self.begin, 0, 100])\n        plt.xlabel(\"Duration (seconds)\")\n        plt.ylabel(\"Coverage (percentage)\")\n\n        plt.savefig(\"{}.png\".format(self.name))\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/call_depth_limiter.py",
    "content": "from mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.plugin.builder import PluginBuilder\nfrom mythril.laser.plugin.interface import LaserPlugin\nfrom mythril.laser.plugin.signals import PluginSkipState\n\n\nclass CallDepthLimitBuilder(PluginBuilder):\n    name = \"call-depth-limit\"\n\n    def __call__(self, *args, **kwargs):\n        return CallDepthLimit(kwargs[\"call_depth_limit\"])\n\n\nclass CallDepthLimit(LaserPlugin):\n    def __init__(self, call_depth_limit: int):\n        self.call_depth_limit = call_depth_limit\n\n    def initialize(self, symbolic_vm: LaserEVM):\n        \"\"\"Initializes the mutation pruner\n\n        Introduces hooks for SSTORE operations\n        :param symbolic_vm:\n        :return:\n        \"\"\"\n\n        @symbolic_vm.pre_hook(\"CALL\")\n        def sstore_mutator_hook(global_state: GlobalState):\n            if len(global_state.transaction_stack) - 1 == self.call_depth_limit:\n                raise PluginSkipState\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/coverage/__init__.py",
    "content": "from mythril.laser.plugin.plugins.coverage.coverage_plugin import (\n    InstructionCoveragePlugin,\n)\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/coverage/coverage_plugin.py",
    "content": "import logging\nfrom typing import Dict, List, Tuple\n\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.plugin.builder import PluginBuilder\nfrom mythril.laser.plugin.interface import LaserPlugin\n\nlog = logging.getLogger(__name__)\n\n\nclass CoveragePluginBuilder(PluginBuilder):\n    name = \"coverage\"\n\n    def __call__(self, *args, **kwargs):\n        return InstructionCoveragePlugin()\n\n\nclass InstructionCoveragePlugin(LaserPlugin):\n    \"\"\"InstructionCoveragePlugin\n\n    This plugin measures the instruction coverage of mythril.\n    The instruction coverage is the ratio between the instructions that have been executed\n    and the total amount of instructions.\n\n    Note that with lazy constraint solving enabled that this metric will be \"unsound\" as\n    reachability will not be considered for the calculation of instruction coverage.\n\n    \"\"\"\n\n    def __init__(self):\n        self.coverage: Dict[str, Tuple[int, List[bool]]] = {}\n        self.initial_coverage = 0\n        self.tx_id = 0\n\n    def initialize(self, symbolic_vm: LaserEVM):\n        \"\"\"Initializes the instruction coverage plugin\n\n        Introduces hooks for each instruction\n        :param symbolic_vm:\n        :return:\n        \"\"\"\n        self.coverage = {}\n        self.initial_coverage = 0\n        self.tx_id = 0\n\n        @symbolic_vm.laser_hook(\"stop_sym_exec\")\n        def stop_sym_exec_hook():\n            # Print results\n            for code, code_cov in self.coverage.items():\n                if sum(code_cov[1]) == 0 and code_cov[0] == 0:\n                    cov_percentage = 0\n                else:\n                    cov_percentage = sum(code_cov[1]) / float(code_cov[0]) * 100\n                string_code = code\n                if isinstance(code, tuple):\n                    try:\n                        string_code = bytearray(code).hex()\n                    except TypeError:\n                        string_code = \"<symbolic code>\"\n                log.info(\n                    \"Achieved {:.2f}% coverage for code: {}\".format(\n                        cov_percentage, string_code\n                    )\n                )\n\n        @symbolic_vm.laser_hook(\"execute_state\")\n        def execute_state_hook(global_state: GlobalState):\n            # Record coverage\n            code = global_state.environment.code.bytecode\n\n            if code not in self.coverage.keys():\n                number_of_instructions = len(\n                    global_state.environment.code.instruction_list\n                )\n                self.coverage[code] = (\n                    number_of_instructions,\n                    [False] * number_of_instructions,\n                )\n            if global_state.mstate.pc >= len(self.coverage[code][1]):\n                # Instruction beyond the instruction list are considered as STOP by EVM\n                # and can be ignored\n                return\n            self.coverage[code][1][global_state.mstate.pc] = True\n\n        @symbolic_vm.laser_hook(\"start_sym_trans\")\n        def execute_start_sym_trans_hook():\n            self.initial_coverage = self._get_covered_instructions()\n\n        @symbolic_vm.laser_hook(\"stop_sym_trans\")\n        def execute_stop_sym_trans_hook():\n            end_coverage = self._get_covered_instructions()\n            log.info(\n                \"Number of new instructions covered in tx %d: %d\"\n                % (self.tx_id, end_coverage - self.initial_coverage)\n            )\n            self.tx_id += 1\n\n    def _get_covered_instructions(self) -> int:\n        \"\"\"Gets the total number of covered instructions for all accounts in\n        the svm.\n        :return:\n        \"\"\"\n        total_covered_instructions = 0\n        for _, cv in self.coverage.items():\n            total_covered_instructions += sum(cv[1])\n        return total_covered_instructions\n\n    def is_instruction_covered(self, bytecode, index):\n        if bytecode not in self.coverage.keys():\n            return False\n\n        try:\n            return self.coverage[bytecode][index]\n        except IndexError:\n            return False\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/coverage/coverage_strategy.py",
    "content": "from mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.strategy import BasicSearchStrategy\nfrom mythril.laser.plugin.plugins.coverage import InstructionCoveragePlugin\n\n\nclass CoverageStrategy(BasicSearchStrategy):\n    \"\"\"Implements a instruction coverage based search strategy\n\n    This strategy is quite simple and effective, it prioritizes the execution of instructions that have previously been\n    uncovered. Once there is no such global state left in the work list, it will resort to using the super_strategy.\n\n    This strategy is intended to be used \"on top of\" another one\n    \"\"\"\n\n    def __init__(\n        self,\n        super_strategy: BasicSearchStrategy,\n        instruction_coverage_plugin: InstructionCoveragePlugin,\n    ):\n        self.super_strategy = super_strategy\n        self.instruction_coverage_plugin = instruction_coverage_plugin\n        BasicSearchStrategy.__init__(\n            self, super_strategy.work_list, super_strategy.max_depth\n        )\n\n    def get_strategic_global_state(self) -> GlobalState:\n        \"\"\"\n        Returns the first uncovered global state in the work list if it exists,\n        otherwise super_strategy.get_strategic_global_state() is returned.\n        \"\"\"\n        for global_state in self.work_list:\n            if not self._is_covered(global_state):\n                self.work_list.remove(global_state)\n                return global_state\n        return self.super_strategy.get_strategic_global_state()\n\n    def _is_covered(self, global_state: GlobalState) -> bool:\n        \"\"\"Checks if the instruction for the given global state is already covered\"\"\"\n        bytecode = global_state.environment.code.bytecode\n        index = global_state.mstate.pc\n        return self.instruction_coverage_plugin.is_instruction_covered(bytecode, index)\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/coverage_metrics/__init__.py",
    "content": "from .metrics_plugin import CoverageMetricsPluginBuilder\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/coverage_metrics/constants.py",
    "content": "BATCH_OF_STATES = 5\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/coverage_metrics/coverage_data.py",
    "content": "import json\n\nfrom mythril.laser.execution_info import ExecutionInfo\nfrom mythril.support.support_utils import get_code_hash\n\n\nclass InstructionCoverageInfo(ExecutionInfo):\n    def __init__(self):\n        self._instruction_coverage = {}  # type: Dict[str, int]\n\n    def as_dict(self):\n        return dict(instruction_discovery_time=self._instruction_coverage)\n\n    def get_code_instr_hex(self, code: str, instruction: int):\n        code_hash = get_code_hash(code)[2:]\n        instruction_hex = hex(instruction)[2:]\n        return \"{}:{}\".format(code_hash, instruction_hex)\n\n    def is_covered(self, code: str, instruction: int):\n        code_instr_hex = self.get_code_instr_hex(code, instruction)\n        return code_instr_hex in self._instruction_coverage\n\n    def add_data(self, code: str, instruction: int, discovery_time: int):\n        code_instr_hex = self.get_code_instr_hex(code, instruction)\n        self._instruction_coverage[code_instr_hex] = discovery_time\n\n    def output(self, filename: str):\n        with open(filename, \"w\") as outfile:\n            json.dump(\n                self._instruction_coverage, default=lambda o: o.__dict__, fp=outfile\n            )\n\n\nclass CoverageData:\n    def __init__(\n        self,\n        instructions_covered: int,\n        total_instructions: int,\n        branches_covered: int,\n        tx_id: int,\n        total_branches: int,\n        state_counter: int,\n        code: str,\n        time_elapsed: int,\n    ):\n        self.instructions_covered = instructions_covered\n        self.total_instructions = total_instructions\n        self.branches_covered = branches_covered\n        self.tx_id = tx_id\n        self.total_branches = total_branches\n        self.state_counter = state_counter\n        self.code_hash = get_code_hash(code)[2:]\n        self.time_elapsed = time_elapsed\n\n    def as_dict(self):\n        return self.__dict__\n\n\nclass CoverageTimeSeries(ExecutionInfo):\n    def __init__(self):\n        self.coverage = []  # type: List[CoverageData]\n\n    def output(self, filename: str):\n        with open(filename, \"w\") as outfile:\n            json.dump(self.coverage, default=lambda o: o.__dict__, fp=outfile)\n\n    def as_dict(self):\n        return dict(coverage=self.coverage)\n\n    def add_data(self, *args, **kwargs):\n        cov_data = CoverageData(*args, **kwargs)\n        self.coverage.append(cov_data.as_dict())\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/coverage_metrics/metrics_plugin.py",
    "content": "import logging\nimport time\n\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.plugin.builder import PluginBuilder\nfrom mythril.laser.plugin.interface import LaserPlugin\n\nfrom .constants import BATCH_OF_STATES\nfrom .coverage_data import (\n    CoverageTimeSeries,\n    InstructionCoverageInfo,\n)\n\nlog = logging.getLogger(__name__)\n\n\nclass CoverageMetricsPluginBuilder(PluginBuilder):\n    \"\"\"CoveragePlugin\n    Checks Instruction and branch coverage and puts it to data.json file\n    which appears in the directory in which mythril is run.\n    \"\"\"\n\n    plugin_default_enabled = True\n    enabled = True\n\n    author = \"MythX Development Team\"\n    plugin_name = \"MythX Coverage Metrics\"\n    plugin_license = \"All rights reserved.\"\n    plugin_type = \"Laser Plugin\"\n    plugin_description = (\n        \"This plugin measures coverage throughout symbolic execution,\"\n        \" reporting it at the end in the MythX coverage format.\"\n    )\n\n    def __call__(self, *args, **kwargs):\n        \"\"\"Constructs the plugin\"\"\"\n        return LaserCoveragePlugin()\n\n\nclass LaserCoveragePlugin(LaserPlugin):\n    def __init__(self):\n        self.instruction_coverage_data = {}  # type: Dict[str, Tuple[int, Dict[bool]]]\n        self.branch_possibilities = {}  # type: Dict[str, Dict[int, List]]\n        self.tx_id = 0\n        self.state_counter = 0\n        self.coverage = CoverageTimeSeries()\n        self.instruction_coverage_info = InstructionCoverageInfo()\n        self.start_time = time.time_ns()\n\n    def initialize(self, symbolic_vm: LaserEVM) -> None:\n        \"\"\"Initializes the instruction coverage plugin\n\n        Introduces hooks for each instruction\n        :param symbolic_vm: The symbolic virtual machine to initialise  this plugin for\n        \"\"\"\n        log.info(\"Initializing coverage metrics plugin\")\n\n        self.instruction_coverage_data = {}\n        self.branch_possibilities = {}\n        self.tx_id = 0\n\n        # Add the instruction coverage ExecutionInfo to laser vm for use in reporting\n        symbolic_vm.execution_info.append(self.instruction_coverage_info)\n        symbolic_vm.execution_info.append(self.coverage)\n\n        @symbolic_vm.laser_hook(\"execute_state\")\n        def execute_state_hook(global_state: GlobalState):\n            self._update_instruction_coverage_data(global_state)\n            self._update_branch_coverage_data(global_state)\n            self.state_counter += 1\n            if self.state_counter == BATCH_OF_STATES:\n                self._record_coverage()\n                self.state_counter = 0\n\n        @symbolic_vm.laser_hook(\"stop_sym_trans\")\n        def execute_stop_sym_trans_hook():\n            self.tx_id += 1\n\n        # The following is useful for debugging\n        # @symbolic_vm.laser_hook(\"stop_sym_exec\")\n        # def execute_stop_sym_exec_hook():\n        #     self.coverage.output(\"coverage_data.json\")\n        #     self.instruction_coverage_info.output(\"instruction_discovery_data.json\")\n\n    def _update_instruction_coverage_data(self, global_state: GlobalState):\n        \"\"\"Records instruction coverage\"\"\"\n        code = global_state.environment.code.bytecode\n        if code not in self.instruction_coverage_data.keys():\n            number_of_instructions = len(global_state.environment.code.instruction_list)\n            self.instruction_coverage_data[code] = (number_of_instructions, {})\n        current_instr = global_state.get_current_instruction()[\"address\"]\n        if self.instruction_coverage_info.is_covered(code, current_instr) is False:\n            self.instruction_coverage_info.add_data(\n                code, current_instr, time.time_ns() - self.start_time\n            )\n        self.instruction_coverage_data[code][1][current_instr] = True\n\n    def _update_branch_coverage_data(self, global_state: GlobalState):\n        \"\"\"Records branch coverage\"\"\"\n        code = global_state.environment.code.bytecode\n        if code not in self.branch_possibilities:\n            self.branch_possibilities[code] = {}\n\n        if global_state.get_current_instruction()[\"opcode\"] != \"JUMPI\":\n            return\n        addr = global_state.get_current_instruction()[\"address\"]\n        jump_addr = global_state.mstate.stack[-1]\n        if jump_addr.symbolic:\n            log.debug(\"Encountered a symbolic jump, ignoring it for branch coverage\")\n            return\n        self.branch_possibilities[code][addr] = [addr + 1, jump_addr.value]\n\n    def _record_coverage(self):\n        for code, code_cov in self.instruction_coverage_data.items():\n            total_branches = 0\n            branches_covered = 0\n            for jumps, branches in self.branch_possibilities[code].items():\n                for branch in branches:\n                    total_branches += 1\n                    branches_covered += branch in code_cov[1]\n            self.coverage.add_data(\n                code=code,\n                instructions_covered=len(code_cov[1]),\n                total_instructions=code_cov[0],\n                branches_covered=branches_covered,\n                tx_id=self.tx_id,\n                total_branches=total_branches,\n                state_counter=self.state_counter,\n                time_elapsed=time.time_ns() - self.start_time,\n            )\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/dependency_pruner.py",
    "content": "import logging\nfrom typing import Dict, List, Set, cast\n\nfrom mythril.analysis import solver\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.ethereum.transaction.transaction_models import (\n    ContractCreationTransaction,\n)\nfrom mythril.laser.plugin.builder import PluginBuilder\nfrom mythril.laser.plugin.interface import LaserPlugin\nfrom mythril.laser.plugin.plugins.plugin_annotations import (\n    DependencyAnnotation,\n    WSDependencyAnnotation,\n)\nfrom mythril.laser.plugin.signals import PluginSkipState\n\nlog = logging.getLogger(__name__)\n\n\ndef get_dependency_annotation(state: GlobalState) -> DependencyAnnotation:\n    \"\"\"Returns a dependency annotation\n\n    :param state: A global state object\n    \"\"\"\n\n    annotations = cast(\n        List[DependencyAnnotation], list(state.get_annotations(DependencyAnnotation))\n    )\n\n    if len(annotations) == 0:\n        \"\"\"FIXME: Hack for carrying over state annotations from the STOP and RETURN states of\n        the previous states. The states are pushed on a stack in the world state annotation\n        and popped off the stack in the subsequent iteration. This might break if any\n        other strategy than bfs is used (?).\n        \"\"\"\n\n        try:\n            world_state_annotation = get_ws_dependency_annotation(state)\n            annotation = world_state_annotation.annotations_stack.pop()\n        except IndexError:\n            annotation = DependencyAnnotation()\n\n        state.annotate(annotation)\n    else:\n        annotation = annotations[0]\n\n    return annotation\n\n\ndef get_ws_dependency_annotation(state: GlobalState) -> WSDependencyAnnotation:\n    \"\"\"Returns the world state annotation\n\n    :param state: A global state object\n    \"\"\"\n\n    annotations = cast(\n        List[WSDependencyAnnotation],\n        list(state.world_state.get_annotations(WSDependencyAnnotation)),\n    )\n\n    if len(annotations) == 0:\n        annotation = WSDependencyAnnotation()\n        state.world_state.annotate(annotation)\n    else:\n        annotation = annotations[0]\n\n    return annotation\n\n\nclass DependencyPrunerBuilder(PluginBuilder):\n    name = \"dependency-pruner\"\n\n    def __call__(self, *args, **kwargs):\n        return DependencyPruner()\n\n\nclass DependencyPruner(LaserPlugin):\n    \"\"\"Dependency Pruner Plugin\n\n    For every basic block, this plugin keeps a list of storage locations that\n    are accessed (read) in the execution path containing that block. This map\n    is built up over the whole symbolic execution run.\n\n    After the initial build up of the map in the first transaction, blocks are\n    executed only if any of the storage locations written to in the previous\n    transaction can have an effect on that block or any of its successors.\n    \"\"\"\n\n    def __init__(self):\n        \"\"\"Creates DependencyPruner\"\"\"\n        self._reset()\n\n    def _reset(self):\n        self.iteration = 0\n        self.calls_on_path: Dict[int, bool] = {}\n        self.sloads_on_path: Dict[int, List[object]] = {}\n        self.sstores_on_path: Dict[int, List[object]] = {}\n        self.storage_accessed_global: Set = set()\n\n    def update_sloads(self, path: List[int], target_location: object) -> None:\n        \"\"\"Update the dependency map for the block offsets on the given path.\n\n        :param path\n        :param target_location\n        \"\"\"\n\n        for address in path:\n            if address in self.sloads_on_path:\n                if target_location not in self.sloads_on_path[address]:\n                    self.sloads_on_path[address].append(target_location)\n            else:\n                self.sloads_on_path[address] = [target_location]\n\n    def update_sstores(self, path: List[int], target_location: object) -> None:\n        \"\"\"Update the dependency map for the block offsets on the given path.\n\n        :param path\n        :param target_location\n        \"\"\"\n\n        for address in path:\n            if address in self.sstores_on_path:\n                if target_location not in self.sstores_on_path[address]:\n                    self.sstores_on_path[address].append(target_location)\n            else:\n                self.sstores_on_path[address] = [target_location]\n\n    def update_calls(self, path: List[int]) -> None:\n        \"\"\"Update the dependency map for the block offsets on the given path.\n\n        :param path\n        :param target_location\n        \"\"\"\n\n        for address in path:\n            if address in self.sstores_on_path:\n                self.calls_on_path[address] = True\n\n    def wanna_execute(self, address: int, annotation: DependencyAnnotation) -> bool:\n        \"\"\"Decide whether the basic block starting at 'address' should be executed.\n\n        :param address\n        :param storage_write_cache\n        \"\"\"\n\n        storage_write_cache = annotation.get_storage_write_cache(self.iteration - 1)\n\n        if address in self.calls_on_path:\n            return True\n\n        # Skip \"pure\" paths that don't have any dependencies.\n\n        if address not in self.sloads_on_path:\n            return False\n\n        # Execute the path if there are state modifications along it that *could* be relevant\n\n        if address in self.storage_accessed_global:\n            for location in self.sstores_on_path:\n                try:\n                    solver.get_model((location == address,))\n                    return True\n\n                except UnsatError:\n                    continue\n\n        dependencies = self.sloads_on_path[address]\n\n        # Execute the path if there's any dependency on state modified in the previous transaction\n\n        for location in storage_write_cache:\n            for dependency in dependencies:\n                # Is there a known read operation along this path that matches a write in the previous transaction?\n\n                try:\n                    solver.get_model((location == dependency,))\n                    return True\n\n                except UnsatError:\n                    continue\n\n            # Has the *currently executed* path been influenced by a write operation in the previous transaction?\n\n            for dependency in annotation.storage_loaded:\n                try:\n                    solver.get_model((location == dependency,))\n                    return True\n                except UnsatError:\n                    continue\n\n        return False\n\n    def initialize(self, symbolic_vm: LaserEVM) -> None:\n        \"\"\"Initializes the DependencyPruner\n\n        :param symbolic_vm\n        \"\"\"\n        self._reset()\n\n        @symbolic_vm.laser_hook(\"start_sym_trans\")\n        def start_sym_trans_hook():\n            self.iteration += 1\n\n        @symbolic_vm.post_hook(\"JUMP\")\n        def jump_hook(state: GlobalState):\n            try:\n                address = state.get_current_instruction()[\"address\"]\n            except IndexError:\n                raise PluginSkipState\n            annotation = get_dependency_annotation(state)\n            annotation.path.append(address)\n\n            _check_basic_block(address, annotation)\n\n        @symbolic_vm.post_hook(\"JUMPI\")\n        def jumpi_hook(state: GlobalState):\n            try:\n                address = state.get_current_instruction()[\"address\"]\n            except IndexError:\n                raise PluginSkipState\n            annotation = get_dependency_annotation(state)\n            annotation.path.append(address)\n\n            _check_basic_block(address, annotation)\n\n        @symbolic_vm.pre_hook(\"SSTORE\")\n        def sstore_hook(state: GlobalState):\n            annotation = get_dependency_annotation(state)\n\n            location = state.mstate.stack[-1]\n\n            self.update_sstores(annotation.path, location)\n            annotation.extend_storage_write_cache(self.iteration, location)\n\n        @symbolic_vm.pre_hook(\"SLOAD\")\n        def sload_hook(state: GlobalState):\n            annotation = get_dependency_annotation(state)\n            location = state.mstate.stack[-1]\n\n            if location not in annotation.storage_loaded:\n                annotation.storage_loaded.add(location)\n\n            # We backwards-annotate the path here as sometimes execution never reaches a stop or return\n            # (and this may change in a future transaction).\n\n            self.update_sloads(annotation.path, location)\n            self.storage_accessed_global.add(location)\n\n        @symbolic_vm.pre_hook(\"CALL\")\n        def call_hook(state: GlobalState):\n            annotation = get_dependency_annotation(state)\n\n            self.update_calls(annotation.path)\n            annotation.has_call = True\n\n        @symbolic_vm.pre_hook(\"STATICCALL\")\n        def staticcall_hook(state: GlobalState):\n            annotation = get_dependency_annotation(state)\n\n            self.update_calls(annotation.path)\n            annotation.has_call = True\n\n        @symbolic_vm.pre_hook(\"STOP\")\n        def stop_hook(state: GlobalState):\n            _transaction_end(state)\n\n        @symbolic_vm.pre_hook(\"RETURN\")\n        def return_hook(state: GlobalState):\n            _transaction_end(state)\n\n        def _transaction_end(state: GlobalState) -> None:\n            \"\"\"When a stop or return is reached, the storage locations read along the path are entered into\n            the dependency map for all nodes encountered in this path.\n\n            :param state:\n            \"\"\"\n\n            annotation = get_dependency_annotation(state)\n\n            for index in annotation.storage_loaded:\n                self.update_sloads(annotation.path, index)\n\n            for index in annotation.storage_written:\n                self.update_sstores(annotation.path, index)\n\n            if annotation.has_call:\n                self.update_calls(annotation.path)\n\n        def _check_basic_block(address: int, annotation: DependencyAnnotation):\n            \"\"\"This method is where the actual pruning happens.\n\n            :param address: Start address (bytecode offset) of the block\n            :param annotation:\n            \"\"\"\n\n            # Don't skip any blocks in the contract creation transaction\n            if self.iteration < 2:\n                return\n\n            # Don't skip newly discovered blocks\n            if address not in annotation.blocks_seen:\n                annotation.blocks_seen.add(address)\n                return\n\n            if self.wanna_execute(address, annotation):\n                return\n            else:\n                log.debug(\n                    \"Skipping state: Storage slots {} not read in block at address {}, function\".format(\n                        annotation.get_storage_write_cache(self.iteration - 1), address\n                    )\n                )\n\n                raise PluginSkipState\n\n        @symbolic_vm.laser_hook(\"add_world_state\")\n        def world_state_filter_hook(state: GlobalState):\n            if isinstance(state.current_transaction, ContractCreationTransaction):\n                # Reset iteration variable\n                self.iteration = 0\n                return\n\n            world_state_annotation = get_ws_dependency_annotation(state)\n            annotation = get_dependency_annotation(state)\n\n            # Reset the state annotation except for storage written which is carried on to\n            # the next transaction\n\n            annotation.path = [0]\n            annotation.storage_loaded = set()\n\n            world_state_annotation.annotations_stack.append(annotation)\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/instruction_profiler.py",
    "content": "import logging\nfrom collections import namedtuple\nfrom datetime import datetime\nfrom typing import Dict, List, Tuple\n\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.plugin.builder import PluginBuilder\nfrom mythril.laser.plugin.interface import LaserPlugin\n\n# Type annotations:\n#   start_time: datetime\n#   end_time: datetime\n_InstrExecRecord = namedtuple(\"_InstrExecRecord\", [\"start_time\", \"end_time\"])\n\n# Type annotations:\n#   total_time: float\n#   total_nr: float\n#   min_time: float\n#   max_time: float\n_InstrExecStatistic = namedtuple(\n    \"_InstrExecStatistic\", [\"total_time\", \"total_nr\", \"min_time\", \"max_time\"]\n)\n\n# Map the instruction opcode to its records if all execution times\n_InstrExecRecords = Dict[str, List[_InstrExecRecord]]\n\n# Map the instruction opcode to the statistic of its execution times\n_InstrExecStatistics = Dict[str, _InstrExecStatistic]\n\nlog = logging.getLogger(__name__)\n\n\nclass InstructionProfilerBuilder(PluginBuilder):\n    name = \"instruction-profiler\"\n\n    def __call__(self, *args, **kwargs):\n        return InstructionProfiler()\n\n\nclass InstructionProfiler(LaserPlugin):\n    \"\"\"Performance profile for the execution of each instruction.\"\"\"\n\n    def __init__(self):\n        self._reset()\n\n    def _reset(self):\n        self.records = dict()\n        self.start_time = None\n\n    def initialize(self, symbolic_vm: LaserEVM) -> None:\n        @symbolic_vm.instr_hook(\"pre\", None)\n        def get_start_time(op_code: str):\n            def start_time_wrapper(global_state: GlobalState):\n                self.start_time = datetime.now()\n\n            return start_time_wrapper\n\n        @symbolic_vm.instr_hook(\"post\", None)\n        def record(op_code: str):\n            def record_opcode(global_state: GlobalState):\n                end_time = datetime.now()\n                try:\n                    self.records[op_code].append(\n                        _InstrExecRecord(self.start_time, end_time)\n                    )\n                except KeyError:\n                    self.records[op_code] = [\n                        _InstrExecRecord(self.start_time, end_time)\n                    ]\n\n            return record_opcode\n\n        @symbolic_vm.laser_hook(\"stop_sym_exec\")\n        def print_stats():\n            total, stats = self._make_stats()\n\n            s = \"Total: {} s\\n\".format(total)\n\n            for op in sorted(stats):\n                stat = stats[op]\n                s += \"[{:12s}] {:>8.4f} %,  nr {:>6},  total {:>8.4f} s,  avg {:>8.4f} s,  min {:>8.4f} s,  max {:>8.4f} s\\n\".format(\n                    op,\n                    stat.total_time * 100 / total,\n                    stat.total_nr,\n                    stat.total_time,\n                    stat.total_time / stat.total_nr,\n                    stat.min_time,\n                    stat.max_time,\n                )\n\n            log.info(s)\n\n    def _make_stats(self) -> Tuple[float, _InstrExecStatistics]:\n        periods = {\n            op: list(\n                map(lambda r: r.end_time.timestamp() - r.start_time.timestamp(), rs)\n            )\n            for op, rs in self.records.items()\n        }\n\n        stats = dict()\n        total_time = 0\n\n        for _, (op, times) in enumerate(periods.items()):\n            stat = _InstrExecStatistic(\n                total_time=sum(times),\n                total_nr=len(times),\n                min_time=min(times),\n                max_time=max(times),\n            )\n            total_time += stat.total_time\n            stats[op] = stat\n\n        return total_time, stats\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/mutation_pruner.py",
    "content": "from mythril.analysis import solver\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.ethereum.transaction.transaction_models import (\n    ContractCreationTransaction,\n)\nfrom mythril.laser.plugin.builder import PluginBuilder\nfrom mythril.laser.plugin.interface import LaserPlugin\nfrom mythril.laser.plugin.plugins.plugin_annotations import MutationAnnotation\nfrom mythril.laser.plugin.signals import PluginSkipWorldState\nfrom mythril.laser.smt import UGT, symbol_factory\n\n\nclass MutationPrunerBuilder(PluginBuilder):\n    name = \"mutation-pruner\"\n\n    def __call__(self, *args, **kwargs):\n        return MutationPruner()\n\n\nclass MutationPruner(LaserPlugin):\n    \"\"\"Mutation pruner plugin\n\n    Let S be a world state from which T is a symbolic transaction, and S' is the resulting world state.\n    In a situation where T does not execute any mutating instructions we can safely abandon further analysis on top of\n    state S'. This is for the reason that we already performed analysis on S, which is equivalent.\n\n    This optimization inhibits path explosion caused by \"clean\" behaviour\n\n    The basic operation of this plugin is as follows:\n     - Hook all mutating operations and introduce a MutationAnnotation to the global state on execution of the hook\n     - Hook the svm EndTransaction on execution filter the states that do not have a mutation annotation\n\n    \"\"\"\n\n    def initialize(self, symbolic_vm: LaserEVM):\n        \"\"\"Initializes the mutation pruner\n\n        Introduces hooks for SSTORE operations\n        :param symbolic_vm:\n        :return:\n        \"\"\"\n\n        @symbolic_vm.pre_hook(\"SSTORE\")\n        def sstore_mutator_hook(global_state: GlobalState):\n            global_state.annotate(MutationAnnotation())\n\n        \"\"\"FIXME: Check for changes in world_state.balances instead of adding MutationAnnotation for all calls.\n           Requires world_state.starting_balances to be initialized at every tx start *after* call value has been added.\n        \"\"\"\n\n        @symbolic_vm.pre_hook(\"CALL\")\n        def call_mutator_hook(global_state: GlobalState):\n            global_state.annotate(MutationAnnotation())\n\n        @symbolic_vm.pre_hook(\"STATICCALL\")\n        def staticcall_mutator_hook(global_state: GlobalState):\n            global_state.annotate(MutationAnnotation())\n\n        @symbolic_vm.laser_hook(\"add_world_state\")\n        def world_state_filter_hook(global_state: GlobalState):\n            if isinstance(\n                global_state.current_transaction, ContractCreationTransaction\n            ):\n                return\n\n            if isinstance(global_state.environment.callvalue, int):\n                callvalue = symbol_factory.BitVecVal(\n                    global_state.environment.callvalue, 256\n                )\n            else:\n                callvalue = global_state.environment.callvalue\n\n            try:\n                constraints = global_state.world_state.constraints + [\n                    UGT(callvalue, symbol_factory.BitVecVal(0, 256))\n                ]\n\n                solver.get_model(constraints)\n                return\n            except UnsatError:\n                # callvalue is constrained to 0, therefore there is no balance based world state mutation\n                pass\n\n            if len(list(global_state.get_annotations(MutationAnnotation))) == 0:\n                raise PluginSkipWorldState\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/plugin_annotations.py",
    "content": "import logging\nfrom copy import copy\nfrom typing import Dict, List, Set\n\nfrom mythril.laser.ethereum.state.annotation import (\n    MergeableStateAnnotation,\n    StateAnnotation,\n)\n\nlog = logging.getLogger(__name__)\n\n\nclass MutationAnnotation(StateAnnotation):\n    \"\"\"Mutation Annotation\n\n    This is the annotation used by the MutationPruner plugin to record mutations\n    \"\"\"\n\n    def __init__(self):\n        pass\n\n    @property\n    def persist_over_calls(self) -> bool:\n        return True\n\n\nclass DependencyAnnotation(MergeableStateAnnotation):\n    \"\"\"Dependency Annotation\n\n    This annotation tracks read and write access to the state during each transaction.\n    \"\"\"\n\n    def __init__(self):\n        self.storage_loaded: Set = set()\n        self.storage_written: Dict[int, Set] = {}\n        self.has_call: bool = False\n        self.path: List = [0]\n        self.blocks_seen: Set[int] = set()\n\n    def __copy__(self):\n        result = DependencyAnnotation()\n        result.storage_loaded = copy(self.storage_loaded)\n        result.storage_written = copy(self.storage_written)\n        result.has_call = self.has_call\n        result.path = copy(self.path)\n        result.blocks_seen = copy(self.blocks_seen)\n        return result\n\n    def get_storage_write_cache(self, iteration: int):\n        return self.storage_written.get(iteration, set())\n\n    def extend_storage_write_cache(self, iteration: int, value: object):\n        if iteration not in self.storage_written:\n            self.storage_written[iteration] = set()\n        self.storage_written[iteration].add(value)\n\n    def check_merge_annotation(self, other: \"DependencyAnnotation\"):\n        if not isinstance(other, DependencyAnnotation):\n            raise TypeError(\"Expected an instance of DependencyAnnotation\")\n        return self.has_call == other.has_call and self.path == other.path\n\n    def merge_annotation(self, other: \"DependencyAnnotation\"):\n        merged_annotation = DependencyAnnotation()\n        merged_annotation.blocks_seen = self.blocks_seen.union(other.blocks_seen)\n        merged_annotation.has_call = self.has_call\n        merged_annotation.path = copy(self.path)\n        merged_annotation.storage_loaded = self.storage_loaded.union(\n            other.storage_loaded\n        )\n        keys = set(\n            list(other.storage_written.keys()) + list(self.storage_written.keys())\n        )\n        for key in keys:\n            other_set = other.storage_written.get(key, set())\n            merged_annotation.storage_written[key] = self.storage_written.get(\n                key, set()\n            ).union(other_set)\n        return merged_annotation\n\n\nclass WSDependencyAnnotation(MergeableStateAnnotation):\n    \"\"\"Dependency Annotation for World state\n\n    This  world state annotation maintains a stack of state annotations.\n    It is used to transfer individual state annotations from one transaction to the next.\n    \"\"\"\n\n    def __init__(self):\n        self.annotations_stack: List[DependencyAnnotation] = []\n\n    def __copy__(self):\n        result = WSDependencyAnnotation()\n        result.annotations_stack = copy(self.annotations_stack)\n        return result\n\n    def check_merge_annotation(self, annotation: \"WSDependencyAnnotation\") -> bool:\n        if len(self.annotations_stack) != len(annotation.annotations_stack):\n            # We can only merge worldstate annotations that have seen an equal amount of transactions\n            # since the beginning of symbolic execution\n            return False\n        for a1, a2 in zip(self.annotations_stack, annotation.annotations_stack):\n            if a1 == a2:\n                continue\n            if (\n                isinstance(a1, MergeableStateAnnotation)\n                and isinstance(a2, MergeableStateAnnotation)\n                and a1.check_merge_annotation(a2) is True\n            ):\n                continue\n            log.debug(\"Aborting merge between annotations {} and {}\".format(a1, a2))\n            return False\n\n        return True\n\n    def merge_annotation(\n        self, annotation: \"WSDependencyAnnotation\"\n    ) -> \"WSDependencyAnnotation\":\n        merged_annotation = WSDependencyAnnotation()\n        for a1, a2 in zip(self.annotations_stack, annotation.annotations_stack):\n            if a1 == a2:\n                merged_annotation.annotations_stack.append(copy(a1))\n            merged_annotation.annotations_stack.append(a1.merge_annotation(a2))\n        return merged_annotation\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/state_merge/__init__.py",
    "content": "from .state_merge_plugin import StateMergePluginBuilder\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/state_merge/check_mergeability.py",
    "content": "import logging\n\nfrom mythril.laser.ethereum.cfg import Node\nfrom mythril.laser.ethereum.state.account import Account\nfrom mythril.laser.ethereum.state.constraints import Constraints\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.smt import Not\n\nCONSTRAINT_DIFFERENCE_LIMIT = 15\n\nlog = logging.getLogger(__name__)\n\n\ndef check_node_merge_condition(node1: Node, node2: Node):\n    \"\"\"\n    Checks whether two nodes are merge-able\n    :param node1: The node to be merged\n    :param node2: The other node to be merged\n    :return: Boolean, True if we can merge\n    \"\"\"\n    return all(\n        [\n            node1.function_name == node2.function_name,\n            node1.contract_name == node2.contract_name,\n            node1.start_addr == node2.start_addr,\n        ]\n    )\n\n\ndef check_account_merge_condition(account1: Account, account2: Account):\n    \"\"\"\n    Checks whether we can merge accounts\n    \"\"\"\n    return all(\n        [\n            account1.nonce == account2.nonce,\n            account1.deleted == account2.deleted,\n            account1.code.bytecode == account2.code.bytecode,\n        ]\n    )\n\n\ndef check_ws_merge_condition(state1: WorldState, state2: WorldState):\n    \"\"\"\n    Checks whether we can merge these states\n    \"\"\"\n    if state1.node and not check_node_merge_condition(state1.node, state2.node):\n        return False\n\n    for address, account in state2.accounts.items():\n        if (\n            address in state1._accounts\n            and check_account_merge_condition(state1._accounts[address], account)\n            is False\n        ):\n            return False\n    if not _check_merge_annotations(state1, state2):\n        return False\n\n    return True\n\n\ndef _check_merge_annotations(state1: WorldState, state2: WorldState):\n    \"\"\"\n    Checks whether two annotations can be merged\n    :param state:\n    :return:\n    \"\"\"\n    if len(state2.annotations) != len(state1.annotations):\n        return False\n    if _check_constraint_merge(state1.constraints, state2.constraints) is False:\n        return False\n    for v1, v2 in zip(state2.annotations, state1.annotations):\n        if type(v1) != type(v2):\n            return False\n        try:\n            if v1.check_merge_annotation(v2) is False:  # type: ignore\n                return False\n        except AttributeError:\n            log.error(\n                f\"check_merge_annotation() method doesn't exist \"\n                f\"for the annotation {type(v1)}. Aborting merge for the state\"\n            )\n            return False\n\n    return True\n\n\ndef _check_constraint_merge(\n    constraints1: Constraints, constraints2: Constraints\n) -> bool:\n    \"\"\"\n    We are merging the states which have a no more than CONSTRAINT_DIFFERENCE_LIMIT\n    different constraints. This helps in merging states which are not too different\n    \"\"\"\n    dict1 = {c: True for c in constraints1}\n    dict2 = {c: True for c in constraints2}\n    c1, c2 = 0, 0\n    for key in dict1:\n        if key not in dict2 and Not(key) not in dict2:\n            c1 += 1\n    for key in dict2:\n        if key not in dict1 and Not(key) not in dict1:\n            c2 += 1\n    if c1 + c2 > CONSTRAINT_DIFFERENCE_LIMIT:\n        return False\n    return True\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/state_merge/merge_states.py",
    "content": "import logging\nfrom typing import Tuple, cast\n\nfrom mythril.laser.ethereum.cfg import Node\nfrom mythril.laser.ethereum.state.account import Account, Storage\nfrom mythril.laser.ethereum.state.constraints import Constraints\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.smt import And, Array, If, Not, Or, symbol_factory\nfrom mythril.laser.smt import SMTBool as Bool\n\nlog = logging.getLogger(__name__)\n\n\ndef merge_states(state1: WorldState, state2: WorldState):\n    \"\"\"\n    Merge state2 into state1\n    :param state1: The state to be merged into\n    :param state2: The state which is merged into state1\n    :return:\n    \"\"\"\n\n    # Merge constraints\n    state1.constraints, condition1, _ = _merge_constraints(\n        state1.constraints, state2.constraints\n    )\n\n    # Merge balances\n    state1.balances = cast(Array, If(condition1, state1.balances, state2.balances))\n    state1.starting_balances = cast(\n        Array, If(condition1, state1.starting_balances, state2.starting_balances)\n    )\n\n    # Merge accounts\n    for address, account in state2.accounts.items():\n        if address not in state1._accounts:\n            state1.put_account(account)\n        else:\n            merge_accounts(\n                state1._accounts[address], account, condition1, state1.balances\n            )\n\n    # Merge annotations\n    _merge_annotations(state1, state2)\n\n    # Merge Node\n    merge_nodes(state1.node, state2.node, state1.constraints)\n\n\ndef merge_nodes(node1: Node, node2: Node, constraints: Constraints):\n    \"\"\"\n    Merges node2 into node1\n    :param node1: The node to be merged\n    :param node2: The other node to be merged\n    :param constraints: The merged constraints\n    :return:\n    \"\"\"\n    node1.states += node2.states\n    node1.uid = hash(node1)\n    node1.flags |= node2.flags\n    node1.constraints = constraints\n\n\ndef merge_accounts(\n    account1: Account,\n    account2: Account,\n    path_condition: Bool,\n    merged_balance: Array,\n):\n    \"\"\"\n    Merges account2 into account1\n    :param account1: The account to merge with\n    :param account2: The second account to merge\n    :param path_condition: The constraint for this account\n    :param merged_balance: The merged balance\n    :return:\n    \"\"\"\n    if (\n        account1.nonce != account2.nonce\n        or account1.deleted != account2.deleted\n        or account1.code.bytecode != account2.code.bytecode\n    ):\n        raise ValueError(\"Un-Mergeable accounts are given to be merged\")\n\n    account1._balances = merged_balance\n    merge_storage(account1.storage, account2.storage, path_condition)\n\n\ndef merge_storage(storage1: Storage, storage2: Storage, path_condition: Bool):\n    \"\"\"\n    Merge storage2 into storage1\n    :param storage1: To storage to merge into\n    :param storage2: To storage to merge with\n    :param path_condition: The constraint for this storage to be executed\n    :return:\n    \"\"\"\n    storage1._standard_storage = If(\n        path_condition, storage1._standard_storage, storage2._standard_storage\n    )\n    storage1.storage_keys_loaded = storage1.storage_keys_loaded.union(\n        storage2.storage_keys_loaded\n    )\n    for key, value in storage2.printable_storage.items():\n        if key in storage1.printable_storage:\n            storage1.printable_storage[key] = If(\n                path_condition, storage1.printable_storage[key], value\n            )\n        else:\n            storage1.printable_storage[key] = If(path_condition, 0, value)\n\n\ndef _merge_annotations(state1: \"WorldState\", state2: \"WorldState\"):\n    \"\"\"\n    Merges the annotations of the two states into state1\n    :param state1:\n    :param state2:\n    :return:\n    \"\"\"\n    for v1, v2 in zip(state1.annotations, state2.annotations):\n        try:\n            v1.merge_annotation(v2)  # type: ignore\n        except AttributeError:\n            log.error(\n                f\"merge_annotation() method doesn't exist for the annotation {type(v1)}. \"\n                \"Aborting merge for the state\"\n            )\n            return False\n\n\ndef _merge_constraints(\n    constraints1: Constraints, constraints2: Constraints\n) -> Tuple[Constraints, Bool, Bool]:\n    \"\"\"\n    Merges constraints\n    :param constraints1: Constraint2 of state1\n    :param constraints2: Constraints of state2\n    :return: A Tuple of merged constraints,\n    conjunction of constraints in state 1 not in state 2, conjunction of constraints\n    in state2 not in state1\n    \"\"\"\n    dict1 = {c: True for c in constraints1}\n    dict2 = {c: True for c in constraints2}\n    c1, c2 = symbol_factory.Bool(True), symbol_factory.Bool(True)\n    new_constraint1, new_constraint2 = (\n        symbol_factory.Bool(True),\n        symbol_factory.Bool(True),\n    )\n    same_constraints = Constraints()\n    for key in dict1:\n        if key not in dict2:\n            c1 = And(c1, key)\n            if Not(key) not in dict2:\n                new_constraint1 = And(new_constraint1, key)\n        else:\n            same_constraints.append(key)\n    for key in dict2:\n        if key not in dict1:\n            c2 = And(c2, key)\n            if Not(key) not in dict1:\n                new_constraint2 = And(new_constraint2, key)\n        else:\n            same_constraints.append(key)\n    merge_constraints = same_constraints + [Or(new_constraint1, new_constraint2)]\n    return merge_constraints, c1, c2\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/state_merge/state_merge_plugin.py",
    "content": "import logging\nfrom copy import copy\nfrom typing import List, Set\n\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.plugin.interface import LaserPlugin\n\nfrom .check_mergeability import check_ws_merge_condition\nfrom .merge_states import merge_states\n\nlog = logging.getLogger(__name__)\n\n\nclass MergeAnnotation(StateAnnotation):\n    pass\n\n\nclass StateMergePluginBuilder(LaserPlugin):\n    plugin_default_enabled = True\n    enabled = True\n\n    author = \"MythX Development Team\"\n    name = \"MythX State Merge\"\n    plugin_license = \"All rights reserved.\"\n    plugin_type = \"Laser Plugin\"\n    plugin_version = \"0.0.1 \"\n    plugin_description = \"This plugin merges states after the end of a transaction\"\n\n    def __call__(self, *args, **kwargs):\n        return StateMergePlugin()\n\n\nclass StateMergePlugin(LaserPlugin):\n    \"\"\"\n    Tries to merge states based on their similarity.\n    Currently it only tries to merge if everything is same\n    except constraints and storage. And there is some tolerance level\n    to the constraints.\n    A state can be merged only once --> avoids segfaults + better performance\n    \"\"\"\n\n    def initialize(self, symbolic_vm: LaserEVM):\n        \"\"\"Initializes the State merging plugin\n\n        Introduces hooks for stop_sym_trans function\n        :param symbolic_vm:\n        :return:\n        \"\"\"\n\n        @symbolic_vm.laser_hook(\"stop_sym_trans\")\n        def execute_stop_sym_trans_hook():\n            open_states = symbolic_vm.open_states\n            if len(open_states) <= 1:\n                return\n            num_old_states = len(open_states)\n            new_states = []  # type: List[WorldState]\n            old_size = len(open_states)\n            old_states = copy(open_states)\n            while old_size != len(new_states):\n                old_size = len(new_states)\n                new_states = []\n                merged_set = set()  # type: Set[int]\n                for i, state in enumerate(old_states):\n                    if i in merged_set:\n                        continue\n                    if len(list(state.get_annotations(MergeAnnotation))) > 0:\n                        new_states.append(state)\n                        continue\n                    new_states.append(self._look_for_merges(i, old_states, merged_set))\n\n                old_states = copy(new_states)\n            log.info(f\"States reduced from {num_old_states} to {len(new_states)}\")\n            symbolic_vm.open_states = new_states\n\n    def _look_for_merges(\n        self,\n        offset: int,\n        states: List[WorldState],\n        merged_set: Set[int],\n    ) -> WorldState:\n        \"\"\"\n        Tries to merge states[offset] with any of the states in states[offset+1:]\n        :param offset: The offset of state\n        :param states: The List of states\n        :param merged_set: Set indicating which states are excluded from merging\n        :return: Returns a state\n        \"\"\"\n        state = states[offset]\n        for j in range(offset + 1, len(states)):\n            if j in merged_set or not check_ws_merge_condition(state, states[j]):\n                continue\n            merge_states(state, states[j])\n            merged_set.add(j)\n            state.annotations.append(MergeAnnotation())\n            return state\n        return state\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/summary/__init__.py",
    "content": "from .core import SymbolicSummaryPluginBuilder\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/summary/annotations.py",
    "content": "from copy import deepcopy\nfrom typing import List, Tuple\n\nfrom mythril.laser.ethereum.state.annotation import StateAnnotation\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.smt import BaseArray\nfrom mythril.laser.smt import SMTBool as Bool\n\n\nclass SummaryTrackingAnnotation(StateAnnotation):\n    \"\"\"SummaryTrackingAnnotation\n    This annotation is used by the symbolic summary plugin to keep track of data related to a summary that\n    will be computed during the future exploration of the annotated world state.\n    \"\"\"\n\n    def __init__(\n        self,\n        entry: GlobalState,\n        storage_pairs: List[Tuple[BaseArray, BaseArray]],\n        storage_constraints: List[Bool],\n        environment_pair: Tuple[Environment, Environment],\n        balance_pair: Tuple[BaseArray, BaseArray],\n        code: str,\n    ):\n        self.entry = entry\n        self.trace = []\n        self.storage_pairs = storage_pairs\n        self.storage_constraints = storage_constraints\n        self.environment_pair = environment_pair\n        self.balance_pair = balance_pair\n        self.code = code\n\n    def __copy__(self):\n        annotation = SummaryTrackingAnnotation(\n            entry=self.entry,\n            storage_pairs=deepcopy(self.storage_pairs),\n            storage_constraints=deepcopy(self.storage_constraints),\n            environment_pair=deepcopy(self.environment_pair),\n            balance_pair=deepcopy(self.balance_pair),\n            code=self.code,\n        )\n        annotation.trace = self.trace\n        return annotation\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/summary/core.py",
    "content": "import logging\nfrom copy import copy, deepcopy\nfrom typing import List, Optional, Set, Tuple\n\nimport z3\n\nfrom mythril.analysis.issue_annotation import IssueAnnotation\nfrom mythril.analysis.potential_issues import check_potential_issues\nfrom mythril.analysis.solver import get_transaction_sequence\nfrom mythril.exceptions import UnsatError\nfrom mythril.laser.ethereum.function_managers import (\n    keccak_function_manager,\n)\nfrom mythril.laser.ethereum.state.calldata import SymbolicCalldata\nfrom mythril.laser.ethereum.state.constraints import Constraints\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.ethereum.transaction.transaction_models import (\n    BaseTransaction,\n    ContractCreationTransaction,\n)\nfrom mythril.laser.plugin.builder import PluginBuilder\nfrom mythril.laser.plugin.interface import LaserPlugin\nfrom mythril.laser.plugin.plugins.plugin_annotations import MutationAnnotation\nfrom mythril.laser.plugin.signals import PluginSkipState\nfrom mythril.laser.smt import (\n    Array,\n    Expression,\n    Solver,\n    symbol_factory,\n)\nfrom mythril.laser.smt import (\n    SMTBool as Bool,\n)\nfrom mythril.support.support_args import args\nfrom mythril.support.support_utils import get_code_hash\n\nfrom .annotations import SummaryTrackingAnnotation\nfrom .summary import SymbolicSummary, substitute_exprs\n\nlog = logging.getLogger(__name__)\n\n\nclass SymbolicSummaryPluginBuilder(PluginBuilder):\n    name = \"Symbolic Summaries\"\n\n    def __call__(self, *args, **kwargs):\n        return SymbolicSummaryPlugin()\n\n\nclass SymbolicSummaryPlugin(LaserPlugin):\n    def __init__(self):\n        self.summaries = []\n        args.use_issue_annotations = True\n        self.issue_cache: Set[Tuple[str, str, int]] = set()\n        self.init_save_states = []\n        self.save_init_balance = None\n\n    def initialize(self, symbolic_vm: LaserEVM):\n        \"\"\"Initializes the symbolic summary generating plugin\n\n        Introduces hooks for each instruction\n        :param symbolic_vm: the symbolic virtual machine to initialize this plugin for\n        \"\"\"\n\n        \"\"\"\n        @symbolic_vm.laser_hook(\"start_execute_transactions\"):\n        def start_exec_txs_hook():\n            log.info(f\"Started executing transactions\")\n\n            symbolic_vm.executed_transactions = True\n        \"\"\"\n\n        @symbolic_vm.laser_hook(\"stop_sym_exec\")\n        def stop_sym_exec_hook():\n            # Print results\n            log.info(f\"Generated {len(self.summaries)} summaries\")\n\n        @symbolic_vm.laser_hook(\"execute_state\")\n        def execute_start_sym_trans_hook(global_state: GlobalState):\n            if global_state.mstate.pc == 0:\n                if len(global_state.world_state.transaction_sequence) == 2:\n                    self.init_save_states.append(deepcopy(global_state))\n                self._apply_summaries(laser_evm=symbolic_vm, global_state=global_state)\n                self.save_init_balance = deepcopy(global_state.world_state.balances)\n                self._summary_entry(global_state)\n\n        @symbolic_vm.post_hook(\"JUMPI\")\n        @symbolic_vm.post_hook(\"JUMP\")\n        def call_mutator_hook(global_state: GlobalState):\n            for annotation in global_state.get_annotations(SummaryTrackingAnnotation):\n                annotation.trace.append(global_state.instruction[\"address\"])\n\n        @symbolic_vm.laser_hook(\"transaction_end\")\n        def transaction_end_hook(\n            global_state: GlobalState,\n            transaction: BaseTransaction,\n            return_global_state: Optional[GlobalState],\n            revert: bool = True,\n        ):\n            if return_global_state is not None:\n                return\n            if (\n                not isinstance(transaction, ContractCreationTransaction)\n                or transaction.return_data\n            ) and (not revert or list(global_state.get_annotations(IssueAnnotation))):\n                check_potential_issues(global_state)\n                self._summary_exit(global_state, transaction, revert)\n\n    def _summary_entry(self, global_state: GlobalState):\n        \"\"\"Handles logic for when the analysis reaches an entry point of a to-be recorded symbolic summary\n\n        :param global_state: The state at the entry of the symbolic summary\n        \"\"\"\n        summary_constraints = []\n        storage_pairs = []\n        # Rewrite storage\n        for index, account in global_state.world_state.accounts.items():\n            actual_storage = deepcopy(account.storage._standard_storage)\n            symbolic_storage = Array(f\"{index}_symbolic_storage\", 256, 256)\n            account.storage._standard_storage = symbolic_storage\n            storage_pairs.append((actual_storage, symbolic_storage))\n            account.storage.keys_get = set()\n            account.storage.keys_set = set()\n\n        # Rewrite balances\n        previous_balances, summary_balances = (\n            global_state.world_state.balances,\n            Array(\"summary_balance\", 256, 256),\n        )\n        global_state.world_state.balances = summary_balances\n        balances_pair = (previous_balances, summary_balances)\n\n        # Rewrite environment\n        previous_environment = global_state.environment\n        summary_environment = self._create_summary_environment(previous_environment)\n        environment_pair = (previous_environment, summary_environment)\n\n        # Construct the summary tracking annotation\n        summary_annotation = SummaryTrackingAnnotation(\n            global_state,\n            storage_pairs,\n            summary_constraints,\n            environment_pair,\n            balances_pair,\n            global_state.environment.code.bytecode,\n        )\n\n        # Introduce annotation and constraints to the global state\n        for constraint in summary_constraints:\n            global_state.world_state.constraints.append(constraint)\n        global_state.annotate(summary_annotation)\n\n    def _create_summary_environment(self, base_environment: Environment) -> Environment:\n        return Environment(\n            # No need to rewrite, accounts are handled in other procedure\n            active_account=base_environment.active_account,\n            # Need to rewrite, different symbol for each transaction\n            sender=symbol_factory.BitVecSym(\"summary_sender\", 256),\n            # Need to rewrite, different symbol for each transaction\n            origin=symbol_factory.BitVecSym(\"summary_origin\", 256),\n            # Need to rewrite, different symbol for each transaction\n            calldata=SymbolicCalldata(\"summary\"),\n            # Need to rewrite, different symbol for each transaction\n            gasprice=symbol_factory.BitVecSym(\"summary_origin\", 256),\n            # Need to rewrite, different symbol for each transaction\n            callvalue=symbol_factory.BitVecSym(\"summary_callvalue\", 256),\n            # No need to rewrite, this can be inherited from the original environment\n            static=base_environment.static,\n            # No need to rewrite, this can be inherited from the original environment\n            code=base_environment.code,\n            basefee=base_environment.basefee,\n        )\n\n    @classmethod\n    def _restore_environment(\n        cls,\n        summary_tracking_annotation: SummaryTrackingAnnotation,\n        global_state: GlobalState,\n    ):\n        global_state.environment = summary_tracking_annotation.environment_pair[0]\n        original, summary = summary_tracking_annotation.environment_pair\n        # Rewrite sender\n        cls._rewrite(global_state, summary.sender, original.sender)\n        # Rewrite origin\n        cls._rewrite(global_state, summary.origin, original.origin)\n        # Rewrite calldata\n        cls._rewrite(\n            global_state, summary.calldata.calldatasize, original.calldata.calldatasize\n        )\n        cls._rewrite(\n            global_state, summary.calldata._calldata, original.calldata._calldata\n        )\n        # Rewrite gasprice\n        cls._rewrite(global_state, summary.gasprice, original.gasprice)\n        # Rewrite callvalue\n        cls._rewrite(global_state, summary.callvalue, original.callvalue)\n\n    def check_for_issues(self, global_state):\n        for summary in self.summaries:\n            for issue in summary.issues:\n                self._check_issue(global_state, issue)\n\n    def storage_dependent(self, summary, global_state: GlobalState) -> bool:\n        \"\"\"\n        Checks if storage of summary depends on global state's previous storage stores\n        \"\"\"\n        total_key_set = set()\n        for index in global_state.accounts:\n            total_key_set = total_key_set.union(\n                global_state.accounts[index].storage.keys_set\n            )\n        if len(global_state.world_state.transaction_sequence) <= 3:\n            return True\n        for index, storage_get in summary.get_map.items():\n            for key in storage_get:\n                if key.symbolic is False:\n                    if key in global_state.accounts[index].storage.keys_set:\n                        return True\n                else:\n                    for state_key in global_state.accounts[index].storage.keys_set:\n                        s = Solver()\n                        s.set_timeout(3000)\n                        s.add(state_key == key)\n                        s.add(keccak_function_manager.create_conditions())\n                        sat = s.check() == z3.sat\n                        if sat:\n                            return True\n\n        return False\n\n    def _apply_summaries(self, laser_evm: LaserEVM, global_state: GlobalState):\n        \"\"\"\n        Applies summaries on the EVM\n        \"\"\"\n\n        pc = global_state.instruction[\"address\"]\n        self.check_for_issues(global_state)\n        summaries = [\n            summary\n            for summary in self.summaries\n            if summary.entry == pc\n            and summary.code == global_state.environment.code.bytecode\n            and not summary.revert\n            and summary.storage_effect\n        ]\n\n        for summary in summaries:\n            resulting_state = summary.apply_summary(global_state)\n            if resulting_state:\n                laser_evm._add_world_state(resulting_state[0])\n\n        if summaries:\n            raise PluginSkipState\n\n    def issue_in_cache(\n        self, global_state: GlobalState, issue_annotation: IssueAnnotation\n    ) -> bool:\n        address = (\n            issue_annotation.issue.source_location or issue_annotation.issue.address\n        )\n        return (\n            issue_annotation.detector.swc_id,\n            address,\n            get_code_hash(global_state.environment.code.bytecode),\n        ) in self.issue_cache\n\n    def _check_issue(\n        self, global_state: GlobalState, issue_annotation: IssueAnnotation\n    ):\n        if self.issue_in_cache(global_state, issue_annotation):\n            return\n\n        success = 0\n        tx_seq = []\n        for constraint in issue_annotation.conditions:\n            condition = self._translate_condition(\n                global_state,\n                [constraint, deepcopy(keccak_function_manager.create_conditions())],\n            )\n            condition = [\n                expr\n                for expr in global_state.world_state.constraints.as_list + condition\n            ]\n            try:\n                tx_seq = get_transaction_sequence(global_state, Constraints(condition))\n                success += 1\n            except UnsatError:\n                break\n\n        if success == len(issue_annotation.conditions):\n            log.info(\"Found an issue\")\n            new_issue = copy(issue_annotation.issue)\n            new_issue.transaction_sequence = tx_seq\n            issue_annotation.detector.issues += [new_issue]\n            address = (\n                issue_annotation.issue.source_location or issue_annotation.issue.address\n            )\n            self.issue_cache.add(\n                (\n                    issue_annotation.detector.swc_id,\n                    address,\n                    get_code_hash(global_state.environment.code.bytecode),\n                )\n            )\n\n    def _translate_condition(self, global_state: GlobalState, condition: List[Bool]):\n        condition = deepcopy(condition)\n        for account_id, account in global_state.world_state.accounts.items():\n            for expression in condition:\n                substitute_exprs(expression, account_id, account, global_state)\n\n        return condition\n\n    def _summary_exit(\n        self, global_state: GlobalState, transaction: BaseTransaction, revert: bool\n    ):\n        \"\"\"Handles logic for when the analysis reaches the summary exit\n\n        This function populates self.summaries with the discovered symbolic summaries\n        :param global_state: The state at the exit of the discovered symbolic summary\n        \"\"\"\n        summary_annotation = self._get_and_remove_summary_tracking_annotation(\n            global_state\n        )\n        if not summary_annotation:\n            log.error(\"Missing Annotation\")\n            return\n\n        self._record_symbolic_summary(\n            global_state, summary_annotation, transaction, revert\n        )\n\n        self._restore_previous_state(global_state, summary_annotation)\n\n    @staticmethod\n    def _get_and_remove_summary_tracking_annotation(\n        global_state: GlobalState,\n    ) -> Optional[SummaryTrackingAnnotation]:\n        \"\"\"Retrieves symbolic summary from the global state\"\"\"\n        summary_annotation: List[SummaryTrackingAnnotation] = list(\n            global_state.get_annotations(SummaryTrackingAnnotation)\n        )\n        if len(summary_annotation) != 1:\n            logging.warning(\n                f\"Unexpected number of summary tracking annotations found: {len(summary_annotation)}\\nSkipping...\"\n            )\n\n        summary_annotation: SummaryTrackingAnnotation = summary_annotation[0]\n        global_state.annotations.remove(summary_annotation)\n        return summary_annotation\n\n    def _record_symbolic_summary(\n        self,\n        global_state: GlobalState,\n        tracking_annotation: SummaryTrackingAnnotation,\n        transaction: BaseTransaction,\n        revert,\n    ):\n        \"\"\"Records a summary between tracking_annotation.entry and global_state\"\"\"\n        if (\n            len(list(global_state.get_annotations(MutationAnnotation))) == 0\n            and list(global_state.get_annotations(IssueAnnotation)) == 0\n        ):\n            return\n\n        storage_mutations = []\n        return_value = transaction.return_data\n        set_map = {}\n        get_map = {}\n        for index, account in global_state.world_state.accounts.items():\n            if account.storage._standard_storage not in [\n                p[1] for p in tracking_annotation.storage_pairs\n            ]:\n                get_map[account.address] = account.storage.keys_get\n                set_map[account.address] = account.storage.keys_set\n                storage_mutations.append(\n                    (index, copy(account.storage._standard_storage))\n                )\n\n        condition = global_state.world_state.constraints.get_all_constraints()\n        for constraint in tracking_annotation.entry.world_state.constraints:\n            condition.remove(constraint)\n        annotations = list(global_state.get_annotations(IssueAnnotation))\n        summary = SymbolicSummary(\n            storage_effect=deepcopy(storage_mutations),\n            balance_effect=copy(global_state.world_state.balances),\n            condition=deepcopy(condition),\n            return_value=return_value,\n            entry=tracking_annotation.entry.mstate.pc,\n            exit=global_state.mstate.pc,\n            trace=tracking_annotation.trace,\n            code=tracking_annotation.code,\n            issues=annotations,\n            revert=revert,\n            get_map=get_map,\n            set_map=set_map,\n        )\n        log.debug(annotations)\n        # Calculate issues for the first transaction\n        if len(global_state.world_state.transaction_sequence) == 2:\n            for state in self.init_save_states:\n                for issue in summary.issues:\n                    self._check_issue(state, issue)\n\n        self.summaries.append(summary)\n\n    @classmethod\n    def _restore_previous_state(\n        cls, global_state: GlobalState, tracking_annotation: SummaryTrackingAnnotation\n    ):\n        \"\"\"Restores the previous persistent variables to the global state\"\"\"\n        for og_storage, sym_storage in tracking_annotation.storage_pairs:\n            cls._rewrite(global_state, sym_storage, og_storage)\n\n        cls._rewrite(\n            global_state,\n            tracking_annotation.balance_pair[1],\n            tracking_annotation.balance_pair[0],\n        )\n        cls._restore_environment(tracking_annotation, global_state)\n\n    @staticmethod\n    def _rewrite(global_state: GlobalState, original: Expression, new: Expression):\n        for account in global_state.world_state.accounts.values():\n            account.storage._standard_storage.substitute(original, new)\n\n        global_state.world_state.balances.substitute(original, new)\n\n        for constraint in global_state.world_state.constraints:\n            constraint.substitute(original, new)\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/summary/summary.py",
    "content": "import logging\nfrom copy import deepcopy\n\nimport z3\n\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.plugin.plugins.plugin_annotations import MutationAnnotation\nfrom mythril.laser.smt import Array, Solver, symbol_factory\nfrom mythril.support.support_args import args\n\nlog = logging.getLogger(__name__)\n\n\nclass SymbolicSummary:\n    \"\"\"Symbolic Summary\n\n    A symbolic summary is an awesome construct that allows mythril to record and re-use partial analysis results\n    \"\"\"\n\n    def __init__(\n        self,\n        storage_effect,\n        balance_effect,\n        condition,\n        return_value,\n        entry,\n        exit,\n        trace,\n        code,\n        issues,\n        revert,\n        set_map=None,\n        get_map=None,\n    ):\n        self.storage_effect = storage_effect\n        self.balance_effect = balance_effect\n        self.condition = condition\n        self.return_value = return_value\n        self.entry = entry\n        self.exit = exit\n        self.trace = trace\n        self.code = code\n        self.issues = issues\n        self.revert = revert\n        self.set_map = set_map\n        self.get_map = get_map\n\n    @property\n    def as_csv(self, delimiter=\",\", sub_array_delimiter=\";\", tuple_delimiter=\":\"):\n        condition = sub_array_delimiter.join(map(str, self.condition))\n        storage_effect = sub_array_delimiter.join(\n            [f\"{ap[0]}{tuple_delimiter}{ap[1]}\" for ap in self.storage_effect]\n        )\n        return_value = None\n        trace = sub_array_delimiter.join(map(str, self.trace))\n        return (\n            delimiter.join(\n                map(\n                    str,\n                    [\n                        self.entry,\n                        condition,\n                        self.exit,\n                        storage_effect,\n                        return_value,\n                        trace,\n                    ],\n                )\n            )\n            .replace(\"\\n\", \"\")\n            .replace(\" \", \"\")\n        )\n\n    @property\n    def as_dict(self):\n        return dict(\n            entry=self.entry,\n            condition=list(map(str, self.condition)),\n            exit=self.exit,\n            storage_effect=list(map(str, self.storage_effect)),\n            balance_effect=str(self.balance_effect),\n            return_value=self.return_value,\n            trace=self.trace[:],\n            code=self.code,\n            issues=len(self.issues),\n            revert=self.revert,\n        )\n\n    def apply_summary(self, global_state: GlobalState):\n        # Copy and apply summary\n        global_state = deepcopy(global_state)\n        conditions = deepcopy(self.condition)\n        for account_id, account in global_state.world_state.accounts.items():\n            for expression in conditions:\n                substitute_exprs(expression, account_id, account, global_state)\n\n        for account_id, effect in self.storage_effect:\n            account = global_state.world_state.accounts[account_id]\n            new_storage = deepcopy(effect)\n            substitute_exprs(new_storage, account_id, account, global_state)\n            account.storage._standard_storage = new_storage\n\n        new_balances = deepcopy(self.balance_effect)\n        new_balances.substitute(\n            Array(\"summary_balance\", 256, 256), global_state.world_state.balances\n        )\n        global_state.world_state.balances = new_balances\n\n        # Set constraints\n        global_state.world_state.constraints += [c for c in conditions]\n\n        # Check Condition\n        solver = Solver()\n        solver.set_timeout(args.solver_timeout)\n        solver.add(*(global_state.world_state.constraints.as_list))\n        sat = solver.check() == z3.sat\n\n        if not sat:\n            return []\n\n        global_state.node.constraints = global_state.world_state.constraints\n        global_state.world_state.node = global_state.node\n        global_state.annotate(MutationAnnotation())\n        return [global_state]\n\n\ndef substitute_exprs(expression, account_id, account, global_state):\n    a = Array(\"2_calldata\", 256, 8)\n    b = Array(f\"{global_state.current_transaction.id}_calldata\", 256, 8)\n    expression.substitute(a, b)\n    a = symbol_factory.BitVecSym(\"2_calldatasize\", 256)\n    b = symbol_factory.BitVecSym(\n        f\"{global_state.current_transaction.id}_calldatasize\", 256\n    )\n    expression.substitute(a, b)\n    a = symbol_factory.BitVecSym(\"sender_2\", 256)\n    b = symbol_factory.BitVecSym(f\"sender_{global_state.current_transaction.id}\", 256)\n    expression.substitute(a, b)\n    a = symbol_factory.BitVecSym(\"call_value2\", 256)\n    b = symbol_factory.BitVecSym(\n        f\"call_value{global_state.current_transaction.id}\", 256\n    )\n    expression.substitute(a, b)\n    a = Array(f\"{account_id}_symbolic_storage\", 256, 256)\n    b = account.storage._standard_storage\n    expression.substitute(a, b)\n\n    a = Array(\"summary_balance\", 256, 256)\n    b = global_state.world_state.balances\n    expression.substitute(a, b)\n"
  },
  {
    "path": "mythril/laser/plugin/plugins/summary_backup/__init__.py",
    "content": ""
  },
  {
    "path": "mythril/laser/plugin/plugins/trace.py",
    "content": "from typing import List, Tuple\n\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.plugin.builder import PluginBuilder\nfrom mythril.laser.plugin.interface import LaserPlugin\n\n\nclass TraceFinderBuilder(PluginBuilder):\n    name = \"trace-finder\"\n    plugin_default_enabled = True\n    enabled = True\n\n    author = \"MythX Development Team\"\n    name = \"MythX Trace Finder\"\n    plugin_license = \"All rights reserved.\"\n    plugin_type = \"Laser Plugin\"\n    plugin_version = \"0.0.1 \"\n    plugin_description = \"This plugin merges states after the end of a transaction\"\n\n    def __call__(self, *args, **kwargs):\n        return TraceFinder()\n\n\nclass TraceFinder(LaserPlugin):\n    def __init__(self):\n        self._reset()\n\n    def _reset(self):\n        self.tx_trace: List[List[Tuple[int, str]]] = []\n\n    def initialize(self, symbolic_vm: LaserEVM):\n        \"\"\"Initializes Trace Finder\n\n        Introduces hooks during the start of the execution and each execution state\n        :param symbolic_vm:\n        :return:\n        \"\"\"\n        self._reset()\n\n        @symbolic_vm.laser_hook(\"start_exec\")\n        def start_sym_trans_hook():\n            self.tx_trace.append([])\n\n        @symbolic_vm.laser_hook(\"execute_state\")\n        def trace_jumpi_hook(global_state: GlobalState):\n            self.tx_trace[-1].append(\n                (global_state.mstate.pc, global_state.current_transaction.id)\n            )\n"
  },
  {
    "path": "mythril/laser/plugin/signals.py",
    "content": "class PluginSignal(Exception):\n    \"\"\"Base plugin signal\n\n    These signals are used by the laser plugins to create intent for certain actions in the symbolic virtual machine\n    \"\"\"\n\n    pass\n\n\nclass PluginSkipWorldState(PluginSignal):\n    \"\"\"Plugin to skip world state\n\n    Plugins that raise this signal while the add_world_state hook is being executed\n    will force laser to abandon that world state.\n    \"\"\"\n\n    pass\n\n\nclass PluginSkipState(PluginSignal):\n    \"\"\"Plugin to skip world state\n\n    Plugins that raise this signal while the add_world_state hook is being executed\n    will force laser to abandon that world state.\n    \"\"\"\n\n    pass\n"
  },
  {
    "path": "mythril/laser/smt/__init__.py",
    "content": "from typing import Any, Generic, Optional, Set, TypeVar, Union\n\nimport z3\n\nfrom mythril.laser.smt.array import Array, BaseArray, K\nfrom mythril.laser.smt.bitvec import BitVec\nfrom mythril.laser.smt.bitvec_helper import (\n    UGE,\n    UGT,\n    ULE,\n    ULT,\n    BVAddNoOverflow,\n    BVMulNoOverflow,\n    BVSubNoUnderflow,\n    Concat,\n    Extract,\n    If,\n    LShR,\n    SRem,\n    Sum,\n    UDiv,\n    URem,\n)\nfrom mythril.laser.smt.bool import And, Not, Or, is_false, is_true\nfrom mythril.laser.smt.bool import Bool as SMTBool\nfrom mythril.laser.smt.expression import Expression, simplify\nfrom mythril.laser.smt.function import Function\nfrom mythril.laser.smt.model import Model\nfrom mythril.laser.smt.solver import Optimize, Solver, SolverStatistics\n\nAnnotations = Optional[Set[Any]]\nT = TypeVar(\"T\", bound=Union[SMTBool, z3.BoolRef])\nU = TypeVar(\"U\", bound=Union[BitVec, z3.BitVecRef])\n\n\nclass SymbolFactory(Generic[T, U]):\n    \"\"\"A symbol factory provides a default interface for all the components of mythril to create symbols\"\"\"\n\n    @staticmethod\n    def Bool(value: \"__builtins__.bool\", annotations: Annotations = None) -> T:\n        \"\"\"\n        Creates a Bool with concrete value\n        :param value: The boolean value\n        :param annotations: The annotations to initialize the bool with\n        :return: The freshly created Bool()\n        \"\"\"\n        raise NotImplementedError\n\n    @staticmethod\n    def BoolSym(name: str, annotations: Annotations = None) -> T:\n        \"\"\"\n        Creates a boolean symbol\n        :param name: The name of the Bool variable\n        :param annotations: The annotations to initialize the bool with\n        :return: The freshly created Bool()\n        \"\"\"\n        raise NotImplementedError\n\n    @staticmethod\n    def BitVecVal(value: int, size: int, annotations: Annotations = None) -> U:\n        \"\"\"Creates a new bit vector with a concrete value.\n\n        :param value: The concrete value to set the bit vector to\n        :param size: The size of the bit vector\n        :param annotations: The annotations to initialize the bit vector with\n        :return: The freshly created bit vector\n        \"\"\"\n        raise NotImplementedError()\n\n    @staticmethod\n    def BitVecSym(name: str, size: int, annotations: Annotations = None) -> U:\n        \"\"\"Creates a new bit vector with a symbolic value.\n\n        :param name: The name of the symbolic bit vector\n        :param size: The size of the bit vector\n        :param annotations: The annotations to initialize the bit vector with\n        :return: The freshly created bit vector\n        \"\"\"\n        raise NotImplementedError()\n\n\nclass _SmtSymbolFactory(SymbolFactory[SMTBool, BitVec]):\n    \"\"\"\n    An implementation of a SymbolFactory that creates symbols using\n    the classes in: mythril.laser.smt\n    \"\"\"\n\n    @staticmethod\n    def Bool(value: \"__builtins__.bool\", annotations: Annotations = None) -> SMTBool:\n        \"\"\"\n        Creates a Bool with concrete value\n        :param value: The boolean value\n        :param annotations: The annotations to initialize the bool with\n        :return: The freshly created Bool()\n        \"\"\"\n        raw = z3.BoolVal(value)\n        return SMTBool(raw, annotations)\n\n    @staticmethod\n    def BoolSym(name: str, annotations: Annotations = None) -> SMTBool:\n        \"\"\"\n        Creates a boolean symbol\n        :param name: The name of the Bool variable\n        :param annotations: The annotations to initialize the bool with\n        :return: The freshly created Bool()\n        \"\"\"\n        raw = z3.Bool(name)\n        return SMTBool(raw, annotations)\n\n    @staticmethod\n    def BitVecVal(value: int, size: int, annotations: Annotations = None) -> BitVec:\n        \"\"\"Creates a new bit vector with a concrete value.\"\"\"\n        raw = z3.BitVecVal(value, size)\n        return BitVec(raw, annotations)\n\n    @staticmethod\n    def BitVecSym(name: str, size: int, annotations: Annotations = None) -> BitVec:\n        \"\"\"Creates a new bit vector with a symbolic value.\"\"\"\n        raw = z3.BitVec(name, size)\n        return BitVec(raw, annotations)\n\n\nclass _Z3SymbolFactory(SymbolFactory[z3.BoolRef, z3.BitVecRef]):\n    \"\"\"\n    An implementation of a SymbolFactory that directly returns\n    z3 symbols\n    \"\"\"\n\n    @staticmethod\n    def Bool(value: \"__builtins__.bool\", annotations: Annotations = None) -> z3.BoolRef:\n        \"\"\"Creates a new bit vector with a concrete value\"\"\"\n        return z3.BoolVal(value)\n\n    @staticmethod\n    def BitVecVal(\n        value: int, size: int, annotations: Annotations = None\n    ) -> z3.BitVecRef:\n        \"\"\"Creates a new bit vector with a concrete value.\"\"\"\n        return z3.BitVecVal(value, size)\n\n    @staticmethod\n    def BitVecSym(\n        name: str, size: int, annotations: Annotations = None\n    ) -> z3.BitVecRef:\n        \"\"\"Creates a new bit vector with a symbolic value.\"\"\"\n        return z3.BitVec(name, size)\n\n\n# This is the instance that other parts of mythril should use\n\n# Type hints are not allowed here in 3.5\n# symbol_factory: SymbolFactory = _SmtSymbolFactory()\nsymbol_factory = _SmtSymbolFactory()\n"
  },
  {
    "path": "mythril/laser/smt/array.py",
    "content": "\"\"\"This module contains an SMT abstraction of arrays.\n\nThis includes an Array class to implement basic store and set\noperations, as well as as a K-array, which can be initialized with\ndefault values over a certain range.\n\"\"\"\n\nfrom typing import cast\n\nimport z3\n\nfrom mythril.laser.smt.bitvec import BitVec\n\n\nclass BaseArray:\n    \"\"\"Base array type, which implements basic store and set operations.\"\"\"\n\n    def __init__(self, raw):\n        self.raw = raw\n\n    def __getitem__(self, item: BitVec) -> BitVec:\n        \"\"\"Gets item from the array, item can be symbolic.\"\"\"\n        if isinstance(item, slice):\n            raise ValueError(\n                \"Instance of BaseArray, does not support getitem with slices\"\n            )\n        return BitVec(cast(z3.BitVecRef, z3.Select(self.raw, item.raw)))\n\n    def __setitem__(self, key: BitVec, value: BitVec) -> None:\n        \"\"\"Sets an item in the array, key can be symbolic.\"\"\"\n        self.raw = z3.Store(self.raw, key.raw, value.raw)\n\n    def substitute(self, original_expression, new_expression):\n        \"\"\"\n\n        :param original_expression:\n        :param new_expression:\n        \"\"\"\n        if self.raw is None:\n            return\n        original_z3 = original_expression.raw\n        new_z3 = new_expression.raw\n        self.raw = z3.substitute(self.raw, (original_z3, new_z3))\n\n\nclass Array(BaseArray):\n    \"\"\"A basic symbolic array.\"\"\"\n\n    def __init__(self, name: str, domain: int, value_range: int):\n        \"\"\"Initializes a symbolic array.\n\n        :param name: Name of the array\n        :param domain: The domain for the array (10 -> all the values that a bv of size 10 could take)\n        :param value_range: The range for the values in the array (10 -> all the values that a bv of size 10 could take)\n        \"\"\"\n        self.domain = z3.BitVecSort(domain)\n        self.range = z3.BitVecSort(value_range)\n        super(Array, self).__init__(z3.Array(name, self.domain, self.range))\n\n\nclass K(BaseArray):\n    \"\"\"A basic symbolic array, which can be initialized with a default\n    value.\"\"\"\n\n    def __init__(self, domain: int, value_range: int, value: int):\n        \"\"\"Initializes an array with a default value.\n\n        :param domain: The domain for the array (10 -> all the values that a bv of size 10 could take)\n        :param value_range: The range for the values in the array (10 -> all the values that a bv of size 10 could take)\n        :param value: The default value to use for this array\n        \"\"\"\n        self.domain = z3.BitVecSort(domain)\n        self.value = z3.BitVecVal(value, value_range)\n        self.raw = z3.K(self.domain, self.value)\n"
  },
  {
    "path": "mythril/laser/smt/bitvec.py",
    "content": "\"\"\"This module provides classes for an SMT abstraction of bit vectors.\"\"\"\n\nfrom operator import eq, lshift, ne, rshift\nfrom typing import Any, Callable, Optional, Set, Union, cast\n\nimport z3\n\nfrom mythril.laser.smt.bool import Bool\nfrom mythril.laser.smt.expression import Expression\n\nAnnotations = Set[Any]\n\n# fmt: off\n\n\ndef _padded_operation(a: z3.BitVec, b: z3.BitVec, operator):\n    if a.size() == b.size():\n        return operator(a, b)\n    if a.size() < b.size():\n        a, b = b, a\n    b = z3.Concat(z3.BitVecVal(0, a.size() - b.size()), b)\n    return operator(a, b)\n\n\nclass BitVec(Expression[z3.BitVecRef]):\n    \"\"\"A bit vector symbol.\"\"\"\n\n    def __init__(self, raw: z3.BitVecRef, annotations: Optional[Annotations] = None):\n        \"\"\"\n\n        :param raw:\n        :param annotations:\n        \"\"\"\n        super().__init__(raw, annotations)\n\n    def size(self) -> int:\n        \"\"\"TODO: documentation\n\n        :return:\n        \"\"\"\n        return self.raw.size()\n\n    @property\n    def symbolic(self) -> bool:\n        \"\"\"Returns whether this symbol doesn't have a concrete value.\n\n        :return:\n        \"\"\"\n        self.simplify()\n        return not isinstance(self.raw, z3.BitVecNumRef)\n\n    @property\n    def value(self) -> Optional[int]:\n        \"\"\"Returns the value of this symbol if concrete, otherwise None.\n\n        :return:\n        \"\"\"\n        if self.symbolic:\n            return None\n        assert isinstance(self.raw, z3.BitVecNumRef)\n        return self.raw.as_long()\n\n    def __add__(self, other: Union[int, \"BitVec\"]) -> \"BitVec\":\n        \"\"\"Create an addition expression.\n\n        :param other:\n        :return:\n        \"\"\"\n        if isinstance(other, int):\n            return BitVec(self.raw + other, annotations=self.annotations)\n\n        union = self.annotations.union(other.annotations)\n        return BitVec(self.raw + other.raw, annotations=union)\n\n    def __sub__(self, other: Union[int, \"BitVec\"]) -> \"BitVec\":\n        \"\"\"Create a subtraction expression.\n\n        :param other:\n        :return:\n        \"\"\"\n        if isinstance(other, int):\n            return BitVec(self.raw - other, annotations=self.annotations)\n\n        union = self.annotations.union(other.annotations)\n        return BitVec(self.raw - other.raw, annotations=union)\n\n    def __mul__(self, other: \"BitVec\") -> \"BitVec\":\n        \"\"\"Create a multiplication expression.\n\n        :param other:\n        :return:\n        \"\"\"\n        union = self.annotations.union(other.annotations)\n        return BitVec(self.raw * other.raw, annotations=union)\n\n    def __truediv__(self, other: \"BitVec\") -> \"BitVec\":\n        \"\"\"Create a signed division expression.\n\n        :param other:\n        :return:\n        \"\"\"\n        union = self.annotations.union(other.annotations)\n        return BitVec(self.raw / other.raw, annotations=union)\n\n    def __and__(self, other: Union[int, \"BitVec\"]) -> \"BitVec\":\n        \"\"\"Create an and expression.\n\n        :param other:\n        :return:\n        \"\"\"\n        if not isinstance(other, BitVec):\n            other = BitVec(z3.BitVecVal(other, self.size()))\n        union = self.annotations.union(other.annotations)\n        return BitVec(self.raw & other.raw, annotations=union)\n\n    def __or__(self, other: Union[int, \"BitVec\"]) -> \"BitVec\":\n        \"\"\"Create an or expression.\n\n        :param other:\n        :return:\n        \"\"\"\n        if not isinstance(other, BitVec):\n            other = BitVec(z3.BitVecVal(other, self.size()))\n        union = self.annotations.union(other.annotations)\n        return BitVec(self.raw | other.raw, annotations=union)\n\n    def __xor__(self, other: Union[int, \"BitVec\"]) -> \"BitVec\":\n        \"\"\"Create a xor expression.\n\n        :param other:\n        :return:\n        \"\"\"\n        if not isinstance(other, BitVec):\n            other = BitVec(z3.BitVecVal(other, self.size()))\n        union = self.annotations.union(other.annotations)\n        return BitVec(self.raw ^ other.raw, annotations=union)\n\n    def __lt__(self, other: Union[int, \"BitVec\"]) -> Bool:\n        \"\"\"Create a signed less than expression.\n\n        :param other:\n        :return:\n        \"\"\"\n        if not isinstance(other, BitVec):\n            other = BitVec(z3.BitVecVal(other, self.size()))\n        union = self.annotations.union(other.annotations)\n        return Bool(self.raw < other.raw, annotations=union)\n\n    def __gt__(self, other: Union[int, \"BitVec\"]) -> Bool:\n        \"\"\"Create a signed greater than expression.\n\n        :param other:\n        :return:\n        \"\"\"\n        if not isinstance(other, BitVec):\n            other = BitVec(z3.BitVecVal(other, self.size()))\n        union = self.annotations.union(other.annotations)\n        return Bool(self.raw > other.raw, annotations=union)\n\n    def __le__(self, other: Union[int, \"BitVec\"]) -> Bool:\n        \"\"\"Create a signed less than expression.\n\n        :param other:\n        :return:\n        \"\"\"\n        if not isinstance(other, BitVec):\n            other = BitVec(z3.BitVecVal(other, self.size()))\n        union = self.annotations.union(other.annotations)\n        return Bool(self.raw <= other.raw, annotations=union)\n\n    def __ge__(self, other: Union[int, \"BitVec\"]) -> Bool:\n        \"\"\"Create a signed greater than expression.\n\n        :param other:\n        :return:\n        \"\"\"\n        if not isinstance(other, BitVec):\n            other = BitVec(z3.BitVecVal(other, self.size()))\n        union = self.annotations.union(other.annotations)\n        return Bool(self.raw >= other.raw, annotations=union)\n\n    # MYPY: fix complains about overriding __eq__\n    def __eq__(self, other: Union[int, \"BitVec\"]) -> Bool:  # type: ignore\n        \"\"\"Create an equality expression.\n\n        :param other:\n        :return:\n        \"\"\"\n        if not isinstance(other, BitVec):\n            return Bool(\n                cast(z3.BoolRef, self.raw == other), annotations=self.annotations\n            )\n\n        union = self.annotations.union(other.annotations)\n        # Some of the BitVecs can be 512 bit due to sha3()\n        eq_check = _padded_operation(self.raw, other.raw, eq)\n        # MYPY: fix complaints due to z3 overriding __eq__\n        return Bool(cast(z3.BoolRef, eq_check), annotations=union)\n\n    # MYPY: fix complains about overriding __ne__\n    def __ne__(self, other: Union[int, \"BitVec\"]) -> Bool:  # type: ignore\n        \"\"\"Create an inequality expression.\n\n        :param other:\n        :return:\n        \"\"\"\n        if not isinstance(other, BitVec):\n            return Bool(\n                cast(z3.BoolRef, self.raw != other), annotations=self.annotations\n            )\n\n        union = self.annotations.union(other.annotations)\n        # Some of the BitVecs can be 512 bit due to sha3()\n        neq_check = _padded_operation(self.raw, other.raw, ne)\n        # MYPY: fix complaints due to z3 overriding __eq__\n        return Bool(cast(z3.BoolRef, neq_check), annotations=union)\n\n    def _handle_shift(self, other: Union[int, \"BitVec\"], operator: Callable) -> \"BitVec\":\n        \"\"\"\n        Handles shift\n        :param other: The other BitVector\n        :param operator: The shift operator\n        :return: the resulting output\n        \"\"\"\n        if not isinstance(other, BitVec):\n            return BitVec(\n                operator(self.raw, other), annotations=self.annotations\n            )\n        union = self.annotations.union(other.annotations)\n        return BitVec(operator(self.raw, other.raw), annotations=union)\n\n    def __lshift__(self, other: Union[int, \"BitVec\"]) -> \"BitVec\":\n        \"\"\"\n\n        :param other:\n        :return:\n        \"\"\"\n        return self._handle_shift(other, lshift)\n\n    def __rshift__(self, other: Union[int, \"BitVec\"]) -> \"BitVec\":\n        \"\"\"\n\n        :param other:\n        :return:\n        \"\"\"\n        return self._handle_shift(other, rshift)\n\n    def __hash__(self) -> int:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        return self.raw.__hash__()\n"
  },
  {
    "path": "mythril/laser/smt/bitvec_helper.py",
    "content": "from typing import Any, Callable, List, Set, Union, cast, overload\n\nimport z3\n\nfrom mythril.laser.smt.array import Array, BaseArray\nfrom mythril.laser.smt.bitvec import BitVec\nfrom mythril.laser.smt.bool import Bool, Or\n\nAnnotations = Set[Any]\n\n\ndef _z3_array_converter(array: Union[z3.Array, z3.K]) -> Array:\n    new_array = Array(\n        \"name_to_be_overwritten\", array.domain().size(), array.range().size()\n    )\n    new_array.raw = array\n    return new_array\n\n\ndef _comparison_helper(a: BitVec, b: BitVec, operation: Callable) -> Bool:\n    annotations = a.annotations.union(b.annotations)\n    return Bool(operation(a.raw, b.raw), annotations)\n\n\ndef _arithmetic_helper(a: BitVec, b: BitVec, operation: Callable) -> BitVec:\n    raw = operation(a.raw, b.raw)\n    union = a.annotations.union(b.annotations)\n    return BitVec(raw, annotations=union)\n\n\ndef LShR(a: BitVec, b: BitVec):\n    return _arithmetic_helper(a, b, z3.LShR)\n\n\n@overload\ndef If(\n    a: Union[Bool, bool], b: Union[BitVec, int], c: Union[BitVec, int]\n) -> BitVec: ...\n\n\n@overload\ndef If(a: Union[Bool, bool], b: BaseArray, c: BaseArray) -> BaseArray: ...\n\n\ndef If(\n    a: Union[Bool, bool],\n    b: Union[BaseArray, BitVec, int],\n    c: Union[BaseArray, BitVec, int],\n) -> Union[BitVec, BaseArray]:\n    \"\"\"Create an if-then-else expression.\n\n    :param a:\n    :param b:\n    :param c:\n    :return:\n    \"\"\"\n    if not isinstance(a, Bool):\n        a = Bool(z3.BoolVal(a))\n\n    if isinstance(b, BaseArray) and isinstance(c, BaseArray):\n        array = z3.If(a.raw, b.raw, c.raw)\n        return _z3_array_converter(array)\n    default_sort_size = 256\n    if isinstance(b, BitVec):\n        default_sort_size = b.size()\n    if isinstance(c, BitVec):\n        default_sort_size = c.size()\n    if not isinstance(b, BitVec):\n        b = BitVec(z3.BitVecVal(b, default_sort_size))\n    if not isinstance(c, BitVec):\n        c = BitVec(z3.BitVecVal(c, default_sort_size))\n    union = a.annotations.union(b.annotations).union(c.annotations)\n    return BitVec(z3.If(a.raw, b.raw, c.raw), union)\n\n\ndef UGT(a: BitVec, b: BitVec) -> Bool:\n    \"\"\"Create an unsigned greater than expression.\n\n    :param a:\n    :param b:\n    :return:\n    \"\"\"\n    return _comparison_helper(a, b, z3.UGT)\n\n\ndef UGE(a: BitVec, b: BitVec) -> Bool:\n    \"\"\"Create an unsigned greater than or equal to expression.\n\n    :param a:\n    :param b:\n    :return:\n    \"\"\"\n    return Or(UGT(a, b), a == b)\n\n\ndef ULT(a: BitVec, b: BitVec) -> Bool:\n    \"\"\"Create an unsigned less than expression.\n\n    :param a:\n    :param b:\n    :return:\n    \"\"\"\n    return _comparison_helper(a, b, z3.ULT)\n\n\ndef ULE(a: BitVec, b: BitVec) -> Bool:\n    \"\"\"Create an unsigned less than or equal to expression.\n\n    :param a:\n    :param b:\n    :return:\n    \"\"\"\n    return Or(ULT(a, b), a == b)\n\n\n@overload\ndef Concat(*args: List[BitVec]) -> BitVec: ...\n\n\n@overload\ndef Concat(*args: BitVec) -> BitVec: ...\n\n\ndef Concat(*args: Union[BitVec, List[BitVec]]) -> BitVec:\n    \"\"\"Create a concatenation expression.\n\n    :param args:\n    :return:\n    \"\"\"\n    # The following statement is used if a list is provided as an argument to concat\n    if len(args) == 1 and isinstance(args[0], list):\n        bvs: List[BitVec] = args[0]\n    else:\n        bvs = cast(List[BitVec], args)\n\n    nraw = z3.Concat([a.raw for a in bvs])\n    annotations: Annotations = set()\n\n    for bv in bvs:\n        annotations = annotations.union(bv.annotations)\n    return BitVec(nraw, annotations)\n\n\ndef Extract(high: int, low: int, bv: BitVec) -> BitVec:\n    \"\"\"Create an extract expression.\n\n    :param high:\n    :param low:\n    :param bv:\n    :return:\n    \"\"\"\n    raw = z3.Extract(high, low, bv.raw)\n    return BitVec(raw, annotations=bv.annotations)\n\n\ndef URem(a: BitVec, b: BitVec) -> BitVec:\n    \"\"\"Create an unsigned remainder expression.\n\n    :param a:\n    :param b:\n    :return:\n    \"\"\"\n    return _arithmetic_helper(a, b, z3.URem)\n\n\ndef SRem(a: BitVec, b: BitVec) -> BitVec:\n    \"\"\"Create a signed remainder expression.\n\n    :param a:\n    :param b:\n    :return:\n    \"\"\"\n    return _arithmetic_helper(a, b, z3.SRem)\n\n\ndef UDiv(a: BitVec, b: BitVec) -> BitVec:\n    \"\"\"Create an unsigned division expression.\n\n    :param a:\n    :param b:\n    :return:\n    \"\"\"\n    return _arithmetic_helper(a, b, z3.UDiv)\n\n\ndef Sum(*args: BitVec) -> BitVec:\n    \"\"\"Create sum expression.\n\n    :return:\n    \"\"\"\n    raw = z3.Sum([a.raw for a in args])\n    annotations: Annotations = set()\n\n    for bv in args:\n        annotations = annotations.union(bv.annotations)\n    return BitVec(raw, annotations)\n\n\ndef BVAddNoOverflow(a: Union[BitVec, int], b: Union[BitVec, int], signed: bool) -> Bool:\n    \"\"\"Creates predicate that verifies that the addition doesn't overflow.\n\n    :param a:\n    :param b:\n    :param signed:\n    :return:\n    \"\"\"\n    if not isinstance(a, BitVec):\n        a = BitVec(z3.BitVecVal(a, 256))\n    if not isinstance(b, BitVec):\n        b = BitVec(z3.BitVecVal(b, 256))\n    return Bool(z3.BVAddNoOverflow(a.raw, b.raw, signed))\n\n\ndef BVMulNoOverflow(a: Union[BitVec, int], b: Union[BitVec, int], signed: bool) -> Bool:\n    \"\"\"Creates predicate that verifies that the multiplication doesn't\n    overflow.\n\n    :param a:\n    :param b:\n    :param signed:\n    :return:\n    \"\"\"\n    if not isinstance(a, BitVec):\n        a = BitVec(z3.BitVecVal(a, 256))\n    if not isinstance(b, BitVec):\n        b = BitVec(z3.BitVecVal(b, 256))\n    return Bool(z3.BVMulNoOverflow(a.raw, b.raw, signed))\n\n\ndef BVSubNoUnderflow(\n    a: Union[BitVec, int], b: Union[BitVec, int], signed: bool\n) -> Bool:\n    \"\"\"Creates predicate that verifies that the subtraction doesn't overflow.\n\n    :param a:\n    :param b:\n    :param signed:\n    :return:\n    \"\"\"\n    if not isinstance(a, BitVec):\n        a = BitVec(z3.BitVecVal(a, 256))\n    if not isinstance(b, BitVec):\n        b = BitVec(z3.BitVecVal(b, 256))\n\n    return Bool(z3.BVSubNoUnderflow(a.raw, b.raw, signed))\n"
  },
  {
    "path": "mythril/laser/smt/bool.py",
    "content": "\"\"\"This module provides classes for an SMT abstraction of boolean\nexpressions.\"\"\"\n\nfrom typing import Set, Union, cast\n\nimport z3\n\nfrom mythril.laser.smt.expression import Expression\n\n# fmt: off\n\n\nclass Bool(Expression[z3.BoolRef]):\n    \"\"\"This is a Bool expression.\"\"\"\n\n    @property\n    def is_false(self) -> bool:\n        \"\"\"Specifies whether this variable can be simplified to false.\n\n        :return:\n        \"\"\"\n        self.simplify()\n        return z3.is_false(self.raw)\n\n    @property\n    def is_true(self) -> bool:\n        \"\"\"Specifies whether this variable can be simplified to true.\n\n        :return:\n        \"\"\"\n        self.simplify()\n        return z3.is_true(self.raw)\n\n    @property\n    def value(self) -> Union[bool, None]:\n        \"\"\"Returns the concrete value of this bool if concrete, otherwise None.\n\n        :return: Concrete value or None\n        \"\"\"\n        self.simplify()\n        if self.is_true:\n            return True\n        elif self.is_false:\n            return False\n        else:\n            return None\n\n    # MYPY: complains about overloading __eq__ # noqa\n    def __eq__(self, other: object) -> \"Bool\":  # type: ignore\n        \"\"\"\n\n        :param other:\n        :return:\n        \"\"\"\n        if isinstance(other, Expression):\n            return Bool(cast(z3.BoolRef, self.raw == other.raw),\n                        self.annotations.union(other.annotations))\n        return Bool(cast(z3.BoolRef, self.raw == other), self.annotations)\n\n    # MYPY: complains about overloading __ne__ # noqa\n    def __ne__(self, other: object) -> \"Bool\":  # type: ignore\n        \"\"\"\n\n        :param other:\n        :return:\n        \"\"\"\n        if isinstance(other, Expression):\n            return Bool(cast(z3.BoolRef, self.raw != other.raw),\n                        self.annotations.union(other.annotations))\n        return Bool(cast(z3.BoolRef, self.raw != other), self.annotations)\n\n    def __bool__(self) -> bool:\n        \"\"\"\n\n        :return:\n        \"\"\"\n        if self.value is not None:\n            return self.value\n        else:\n            return False\n\n    def substitute(self, original_expression, new_expression):\n        \"\"\"\n\n        :param original_expression:\n        :param new_expression:\n        \"\"\"\n        if self.raw is None:\n            return\n        original_z3 = original_expression.raw\n        new_z3 = new_expression.raw\n        self.raw = z3.substitute(self.raw, (original_z3, new_z3))\n\n    def __hash__(self) -> int:\n        return self.raw.__hash__()\n\n\ndef And(*args: Union[Bool, bool]) -> Bool:\n    \"\"\"Create an And expression.\"\"\"\n    annotations: Set = set()\n    args_list = [arg if isinstance(arg, Bool) else Bool(arg) for arg in args]\n    for arg in args_list:\n        annotations = annotations.union(arg.annotations)\n    return Bool(z3.And([a.raw for a in args_list]), annotations)\n\n\ndef Xor(a: Bool, b: Bool) -> Bool:\n    \"\"\"Create an And expression.\"\"\"\n\n    union = a.annotations.union(b.annotations)\n    return Bool(z3.Xor(a.raw, b.raw), union)\n\n\ndef Or(*args: Union[Bool, bool]) -> Bool:\n    \"\"\"Create an or expression.\n\n    :param a:\n    :param b:\n    :return:\n    \"\"\"\n    args_list = [arg if isinstance(arg, Bool) else Bool(arg) for arg in args]\n    annotations: Set = set()\n    for arg in args_list:\n        annotations = annotations.union(arg.annotations)\n    return Bool(z3.Or([a.raw for a in args_list]), annotations=annotations)\n\n\ndef Not(a: Bool) -> Bool:\n    \"\"\"Create a Not expression.\n\n    :param a:\n    :return:\n    \"\"\"\n    return Bool(z3.Not(a.raw), a.annotations)\n\n\ndef is_false(a: Bool) -> bool:\n    \"\"\"Returns whether the provided bool can be simplified to false.\n\n    :param a:\n    :return:\n    \"\"\"\n    return z3.is_false(a.raw)\n\n\ndef is_true(a: Bool) -> bool:\n    \"\"\"Returns whether the provided bool can be simplified to true.\n\n    :param a:\n    :return:\n    \"\"\"\n    return z3.is_true(a.raw)\n"
  },
  {
    "path": "mythril/laser/smt/expression.py",
    "content": "\"\"\"This module contains the SMT abstraction for a basic symbol expression.\"\"\"\n\nfrom typing import Any, Generic, Optional, Set, TypeVar, cast\n\nimport z3\n\nAnnotations = Set[Any]\nT = TypeVar(\"T\", bound=z3.ExprRef)\n\n\nclass Expression(Generic[T]):\n    \"\"\"This is the base symbol class and maintains functionality for\n    simplification and annotations.\"\"\"\n\n    def __init__(self, raw: T, annotations: Optional[Annotations] = None):\n        \"\"\"\n\n        :param raw:\n        :param annotations:\n        \"\"\"\n        self.raw = raw\n\n        if annotations:\n            assert isinstance(annotations, set)\n\n        self._annotations = annotations or set()\n\n    @property\n    def annotations(self) -> Annotations:\n        \"\"\"Gets the annotations for this expression.\n\n        :return:\n        \"\"\"\n\n        return self._annotations\n\n    def annotate(self, annotation: Any) -> None:\n        \"\"\"Annotates this expression with the given annotation.\n\n        :param annotation:\n        \"\"\"\n\n        self._annotations.add(annotation)\n\n    def simplify(self) -> None:\n        \"\"\"Simplify this expression.\"\"\"\n        self.raw = cast(T, z3.simplify(self.raw))\n\n    def __repr__(self) -> str:\n        return repr(self.raw)\n\n    def size(self):\n        return self.raw.size()\n\n    def __hash__(self) -> int:\n        return self.raw.__hash__()\n\n    def get_annotations(self, annotation: Any):\n        return list(filter(lambda x: isinstance(x, annotation), self.annotations))\n\n\nG = TypeVar(\"G\", bound=Expression)\n\n\ndef simplify(expression: G) -> G:\n    \"\"\"Simplify the expression .\n\n    :param expression:\n    :return:\n    \"\"\"\n    expression.simplify()\n    return expression\n"
  },
  {
    "path": "mythril/laser/smt/function.py",
    "content": "from typing import Any, List, Set, cast\n\nimport z3\n\nfrom mythril.laser.smt.bitvec import BitVec\n\n\nclass Function:\n    \"\"\"An uninterpreted function.\"\"\"\n\n    def __init__(self, name: str, domain: List[int], value_range: int):\n        \"\"\"Initializes an uninterpreted function.\n\n        :param name: Name of the Function\n        :param domain: The domain for the Function (10 -> all the values that a bv of size 10 could take)\n        :param value_range: The range for the values of the function (10 -> all the values that a bv of size 10 could take)\n        \"\"\"\n        self.domain = []\n        for element in domain:\n            self.domain.append(z3.BitVecSort(element))\n        self.range = z3.BitVecSort(value_range)\n        self.raw = z3.Function(name, *self.domain, self.range)\n\n    def __call__(self, *items) -> BitVec:\n        \"\"\"Function accessor, item can be symbolic.\"\"\"\n        annotations: Set[Any] = set().union(*[item.annotations for item in items])\n        return BitVec(\n            cast(z3.BitVecRef, self.raw(*[item.raw for item in items])),\n            annotations=annotations,\n        )\n"
  },
  {
    "path": "mythril/laser/smt/model.py",
    "content": "from typing import List, Union\n\nimport z3\n\n\nclass Model:\n    \"\"\"The model class wraps a z3 model\n\n    This implementation allows for multiple internal models, this is required for the use of an independence solver\n    which has models for multiple queries which need an uniform output.\n    \"\"\"\n\n    def __init__(self, models: List[z3.ModelRef] = None):\n        \"\"\"\n        Initialize a model object\n        :param models: the internal z3 models that this model should use\n        \"\"\"\n        self.raw = models or []\n\n    def decls(self) -> List[z3.ExprRef]:\n        \"\"\"Get the declarations for this model\"\"\"\n        result: List[z3.ExprRef] = []\n        for internal_model in self.raw:\n            result.extend(internal_model.decls())\n        return result\n\n    def __getitem__(self, item) -> Union[None, z3.ExprRef]:\n        \"\"\"Get declaration from model\n        If item is an int, then the declaration at offset item is returned\n        If item is a declaration, then the interpretation is returned\n        \"\"\"\n        for internal_model in self.raw:\n            is_last_model = self.raw.index(internal_model) == len(self.raw) - 1\n\n            try:\n                result = internal_model[item]\n                if result is not None:\n                    return result\n            except IndexError:\n                if is_last_model:\n                    raise\n                continue\n        return None\n\n    def eval(\n        self, expression: z3.ExprRef, model_completion: bool = False\n    ) -> Union[None, z3.ExprRef]:\n        \"\"\"Evaluate the expression using this model\n\n        :param expression: The expression to evaluate\n        :param model_completion: Use the default value if the model has no interpretation of the given expression\n        :return: The evaluated expression\n        \"\"\"\n        for internal_model in self.raw:\n            is_last_model = self.raw.index(internal_model) == len(self.raw) - 1\n            is_relevant_model = expression.decl() in list(internal_model.decls())\n            if is_relevant_model or is_last_model:\n                return internal_model.eval(expression, model_completion)\n        return None\n"
  },
  {
    "path": "mythril/laser/smt/solver/__init__.py",
    "content": "import z3\n\nfrom mythril.laser.smt.solver.independence_solver import IndependenceSolver\nfrom mythril.laser.smt.solver.solver import BaseSolver, Optimize, Solver\nfrom mythril.laser.smt.solver.solver_statistics import SolverStatistics\nfrom mythril.support.support_args import args\n\nif args.parallel_solving:\n    z3.set_param(\"parallel.enable\", True)\n"
  },
  {
    "path": "mythril/laser/smt/solver/independence_solver.py",
    "content": "from typing import Dict, List, Set, Tuple, cast\n\nimport z3\n\nfrom mythril.laser.smt.bool import Bool\nfrom mythril.laser.smt.model import Model\nfrom mythril.laser.smt.solver.solver_statistics import stat_smt_query\n\n\ndef _get_expr_variables(expression: z3.ExprRef) -> List[z3.ExprRef]:\n    \"\"\"\n    Gets the variables that make up the current expression\n    :param expression:\n    :return:\n    \"\"\"\n    result = []\n    if not expression.children() and not isinstance(expression, z3.BitVecNumRef):\n        result.append(expression)\n    for child in expression.children():\n        c_children = _get_expr_variables(child)\n        result.extend(c_children)\n    return result\n\n\nclass DependenceBucket:\n    \"\"\"Bucket object to contain a set of conditions that are dependent on each other\"\"\"\n\n    def __init__(self, variables=None, conditions=None):\n        \"\"\"\n        Initializes a DependenceBucket object\n        :param variables: Variables contained in the conditions\n        :param conditions: The conditions that are dependent on each other\n        \"\"\"\n        self.variables: List[z3.ExprRef] = variables or []\n        self.conditions: List[z3.ExprRef] = conditions or []\n\n\nclass DependenceMap:\n    \"\"\"DependenceMap object that maintains a set of dependence buckets, used to separate independent smt queries\"\"\"\n\n    def __init__(self):\n        \"\"\"Initializes a DependenceMap object\"\"\"\n        self.buckets: List[DependenceBucket] = []\n        self.variable_map: Dict[str, DependenceBucket] = {}\n\n    def add_condition(self, condition: z3.BoolRef) -> None:\n        \"\"\"\n        Add condition to the dependence map\n        :param condition: The condition that is to be added to the dependence map\n        \"\"\"\n        variables = set(_get_expr_variables(condition))\n        relevant_buckets = set()\n        for variable in variables:\n            try:\n                bucket = self.variable_map[str(variable)]\n                relevant_buckets.add(bucket)\n            except KeyError:\n                continue\n\n        new_bucket = DependenceBucket(variables, [condition])\n        self.buckets.append(new_bucket)\n\n        if relevant_buckets:\n            # Merge buckets, and rewrite variable map accordingly\n            relevant_buckets.add(new_bucket)\n            new_bucket = self._merge_buckets(relevant_buckets)\n\n        for variable in new_bucket.variables:\n            self.variable_map[str(variable)] = new_bucket\n\n    def _merge_buckets(self, bucket_list: Set[DependenceBucket]) -> DependenceBucket:\n        \"\"\"Merges the buckets in bucket list\"\"\"\n        variables: List[str] = []\n        conditions: List[z3.BoolRef] = []\n        for bucket in bucket_list:\n            self.buckets.remove(bucket)\n            variables += bucket.variables\n            conditions += bucket.conditions\n\n        new_bucket = DependenceBucket(variables, conditions)\n        self.buckets.append(new_bucket)\n\n        return new_bucket\n\n\nclass IndependenceSolver:\n    \"\"\"An SMT solver object that uses independence optimization\"\"\"\n\n    def __init__(self):\n        \"\"\"\"\"\"\n        self.raw = z3.Solver()\n        self.constraints = []\n        self.models = []\n\n    def set_timeout(self, timeout: int) -> None:\n        \"\"\"Sets the timeout that will be used by this solver, timeout is in\n        milliseconds.\n\n        :param timeout:\n        \"\"\"\n        self.raw.set(timeout=timeout)\n\n    def add(self, *constraints: Bool) -> None:\n        \"\"\"Adds the constraints to this solver.\n\n        :param constraints: constraints to add\n        \"\"\"\n        raw_constraints: List[z3.BoolRef] = [\n            c.raw for c in cast(Tuple[Bool], constraints)\n        ]\n        self.constraints.extend(raw_constraints)\n\n    def append(self, *constraints: Tuple[Bool]) -> None:\n        \"\"\"Adds the constraints to this solver.\n\n        :param constraints: constraints to add\n        \"\"\"\n        raw_constraints: List[z3.BoolRef] = [\n            c.raw for c in cast(Tuple[Bool], constraints)\n        ]\n        self.constraints.extend(raw_constraints)\n\n    @stat_smt_query\n    def check(self) -> z3.CheckSatResult:\n        \"\"\"Returns z3 smt check result.\"\"\"\n        dependence_map = DependenceMap()\n        for constraint in self.constraints:\n            dependence_map.add_condition(constraint)\n\n        self.models = []\n        for bucket in dependence_map.buckets:\n            self.raw.reset()\n            self.raw.append(*bucket.conditions)\n            check_result = self.raw.check()\n            if check_result == z3.sat:\n                self.models.append(self.raw.model())\n            else:\n                return check_result\n\n        return z3.sat\n\n    def model(self) -> Model:\n        \"\"\"Returns z3 model for a solution.\"\"\"\n        return Model(self.models)\n\n    def reset(self) -> None:\n        \"\"\"Reset this solver.\"\"\"\n        self.constraints = []\n\n    def pop(self, num) -> None:\n        \"\"\"Pop num constraints from this solver.\"\"\"\n        self.constraints.pop(num)\n"
  },
  {
    "path": "mythril/laser/smt/solver/solver.py",
    "content": "\"\"\"This module contains an abstract SMT representation of an SMT solver.\"\"\"\n\nimport logging\nimport os\nimport sys\nfrom typing import Generic, List, Sequence, TypeVar, Union, cast\n\nimport z3\n\nfrom mythril.laser.smt.bool import Bool\nfrom mythril.laser.smt.expression import Expression\nfrom mythril.laser.smt.model import Model\nfrom mythril.laser.smt.solver.solver_statistics import stat_smt_query\n\nT = TypeVar(\"T\", bound=Union[z3.Solver, z3.Optimize])\n\nlog = logging.getLogger(__name__)\n\n\nclass BaseSolver(Generic[T]):\n    def __init__(self, raw: T) -> None:\n        \"\"\"\"\"\"\n        self.raw = raw\n\n    def set_timeout(self, timeout: int) -> None:\n        \"\"\"Sets the timeout that will be used by this solver, timeout is in\n        milliseconds.\n\n        :param timeout:\n        \"\"\"\n        self.raw.set(timeout=timeout)\n\n    def set_unsat_core(self) -> None:\n        \"\"\"\n        Enables the generation of unsatisfiable cores in the solver. This option must be activated\n        if you intend to identify and extract the minimal set of conflicting constraints that make\n        a problem unsolvable. Useful for diagnosing and debugging unsatisfiable conditions within\n        constraint sets.\n        \"\"\"\n        self.raw.set(unsat_core=True)\n\n    def add(self, *constraints: Bool) -> None:\n        \"\"\"Adds the constraints to this solver.\n\n        :param constraints:\n        :return:\n        \"\"\"\n        z3_constraints: Sequence[z3.BoolRef] = [\n            c.raw for c in cast(List[Bool], constraints)\n        ]\n        self.raw.add(z3_constraints)\n\n    def assert_and_track(self, constraints: Bool, name: str) -> None:\n        \"\"\"\n        Adds a constraint to the solver with an associated name, allowing the constraint to be tracked.\n        This is particularly useful for identifying specific constraints contributing to an unsat.\n\n        :param constraints: The constraints.\n        :param name: A unique identifier for the constraint, used for tracking purposes in unsat core extraction.\n        :return: None\n        \"\"\"\n        self.raw.assert_and_track(constraints.raw, name)\n\n    def append(self, *constraints: Bool) -> None:\n        \"\"\"Adds the constraints to this solver.\n\n        :param constraints:\n        :return:\n        \"\"\"\n        self.add(*constraints)\n\n    @stat_smt_query\n    def check(self, *args) -> z3.CheckSatResult:\n        \"\"\"Returns z3 smt check result.\n        Also suppresses the stdout when running z3 library's check() to avoid unnecessary output\n        :return: The evaluated result which is either of sat, unsat or unknown\n        \"\"\"\n        old_stdout = sys.stdout\n        with open(os.devnull, \"w\") as dev_null_fd:\n            sys.stdout = dev_null_fd\n            try:\n                evaluate = self.raw.check(args)\n            except z3.z3types.Z3Exception as e:\n                # Some requests crash the solver\n                evaluate = z3.unknown\n                log.info(f\"Encountered Z3 exception when checking the constraints: {e}\")\n        sys.stdout = old_stdout\n        return evaluate\n\n    def model(self) -> Model:\n        \"\"\"Returns z3 model for a solution.\n\n        :return:\n        \"\"\"\n        try:\n            return Model([self.raw.model()])\n        except z3.z3types.Z3Exception as e:\n            log.info(f\"Encountered a Z3 exception while querying for the model: {e}\")\n            return Model()\n\n    def sexpr(self):\n        return self.raw.sexpr()\n\n\nclass Solver(BaseSolver[z3.Solver]):\n    \"\"\"An SMT solver object.\"\"\"\n\n    def __init__(self) -> None:\n        \"\"\"\"\"\"\n        super().__init__(z3.Solver())\n\n    def reset(self) -> None:\n        \"\"\"Reset this solver.\"\"\"\n        self.raw.reset()\n\n    def pop(self, num: int) -> None:\n        \"\"\"Pop num constraints from this solver.\n\n        :param num:\n        \"\"\"\n        self.raw.pop(num)\n\n\nclass Optimize(BaseSolver[z3.Optimize]):\n    \"\"\"An optimizing smt solver.\"\"\"\n\n    def __init__(self) -> None:\n        \"\"\"Create a new optimizing solver instance.\"\"\"\n        super().__init__(z3.Optimize())\n\n    def minimize(self, element: Expression[z3.ExprRef]) -> None:\n        \"\"\"In solving this solver will try to minimize the passed expression.\n\n        :param element:\n        \"\"\"\n        self.raw.minimize(element.raw)\n\n    def maximize(self, element: Expression[z3.ExprRef]) -> None:\n        \"\"\"In solving this solver will try to maximize the passed expression.\n\n        :param element:\n        \"\"\"\n        self.raw.maximize(element.raw)\n"
  },
  {
    "path": "mythril/laser/smt/solver/solver_statistics.py",
    "content": "from time import time\nfrom typing import Callable\n\nfrom mythril.support.support_utils import Singleton\n\n\ndef stat_smt_query(func: Callable):\n    \"\"\"Measures statistics for annotated smt query check function\"\"\"\n    stat_store = SolverStatistics()\n\n    def function_wrapper(*args, **kwargs):\n        if not stat_store.enabled:\n            return func(*args, **kwargs)\n\n        stat_store.query_count += 1\n        begin = time()\n\n        result = func(*args, **kwargs)\n\n        end = time()\n        stat_store.solver_time += end - begin\n\n        return result\n\n    return function_wrapper\n\n\nclass SolverStatistics(object, metaclass=Singleton):\n    \"\"\"Solver Statistics Class\n\n    Keeps track of the important statistics around smt queries\n    \"\"\"\n\n    def __init__(self):\n        self.enabled = False\n        self.query_count = 0\n        self.solver_time = 0\n\n    def __repr__(self):\n        return \"Query count: {} \\nSolver time: {}\".format(\n            self.query_count, self.solver_time\n        )\n"
  },
  {
    "path": "mythril/mythril/__init__.py",
    "content": "from .mythril_analyzer import MythrilAnalyzer\nfrom .mythril_config import MythrilConfig\nfrom .mythril_disassembler import MythrilDisassembler\n"
  },
  {
    "path": "mythril/mythril/mythril_analyzer.py",
    "content": "#!/usr/bin/env python3\n# -*- coding: utf-8 -*-\n\nimport logging\nimport traceback\nfrom argparse import Namespace\nfrom typing import List, Optional\n\nfrom mythril.analysis.callgraph import generate_graph\nfrom mythril.analysis.report import Issue, Report\nfrom mythril.analysis.security import fire_lasers, retrieve_callback_issues\nfrom mythril.analysis.symbolic import SymExecWrapper\nfrom mythril.analysis.traceexplore import get_serializable_statespace\nfrom mythril.ethereum.evmcontract import EVMContract\nfrom mythril.exceptions import DetectorNotFoundError\nfrom mythril.laser.execution_info import ExecutionInfo\nfrom mythril.laser.smt import SolverStatistics\nfrom mythril.support.loader import DynLoader\nfrom mythril.support.source_support import Source\nfrom mythril.support.start_time import StartTime\nfrom mythril.support.support_args import args\n\nfrom .mythril_disassembler import MythrilDisassembler\n\nlog = logging.getLogger(__name__)\n\nLARGE_TIME = 300\n\n\nclass MythrilAnalyzer:\n    \"\"\"\n    The Mythril Analyzer class\n    Responsible for the analysis of the smart contracts\n    \"\"\"\n\n    def __init__(\n        self,\n        disassembler: MythrilDisassembler,\n        cmd_args: Namespace,\n        strategy: str = \"dfs\",\n        address: Optional[str] = None,\n    ):\n        \"\"\"\n\n        :param disassembler: The MythrilDisassembler class\n        :param cmd_args: The command line args Namespace\n        :param strategy: Search strategy\n        :param address: Address of the contract\n        \"\"\"\n        self.eth = disassembler.eth\n        self.contracts: List[EVMContract] = disassembler.contracts or []\n        self.use_onchain_data = not cmd_args.no_onchain_data\n        self.strategy = strategy\n        self.address = address\n        self.max_depth = cmd_args.max_depth\n        self.execution_timeout = cmd_args.execution_timeout\n        self.loop_bound = cmd_args.loop_bound\n        self.create_timeout = cmd_args.create_timeout\n        self.disable_dependency_pruning = cmd_args.disable_dependency_pruning\n        self.custom_modules_directory = (\n            cmd_args.custom_modules_directory\n            if cmd_args.custom_modules_directory\n            else \"\"\n        )\n        args.pruning_factor = cmd_args.pruning_factor\n        args.solver_timeout = cmd_args.solver_timeout\n        args.parallel_solving = cmd_args.parallel_solving\n        args.unconstrained_storage = cmd_args.unconstrained_storage\n        args.call_depth_limit = cmd_args.call_depth_limit\n        args.disable_iprof = cmd_args.disable_iprof\n        args.solver_log = cmd_args.solver_log\n        args.transaction_sequences = cmd_args.transaction_sequences\n        args.disable_coverage_strategy = cmd_args.disable_coverage_strategy\n        args.disable_mutation_pruner = cmd_args.disable_mutation_pruner\n        args.enable_summaries = cmd_args.enable_summaries\n        args.enable_state_merge = cmd_args.enable_state_merging\n\n        if args.pruning_factor is None:\n            if self.execution_timeout > LARGE_TIME:\n                args.pruning_factor = 1\n            else:\n                args.pruning_factor = 0\n\n    def dump_statespace(self, contract: EVMContract = None) -> str:\n        \"\"\"\n        Returns serializable statespace of the contract\n        :param contract: The Contract on which the analysis should be done\n        :return: The serialized state space\n        \"\"\"\n        sym = SymExecWrapper(\n            contract or self.contracts[0],\n            self.address,\n            self.strategy,\n            dynloader=DynLoader(self.eth, active=self.use_onchain_data),\n            max_depth=self.max_depth,\n            execution_timeout=self.execution_timeout,\n            create_timeout=self.create_timeout,\n            disable_dependency_pruning=self.disable_dependency_pruning,\n            run_analysis_modules=False,\n            custom_modules_directory=self.custom_modules_directory,\n        )\n\n        return get_serializable_statespace(sym)\n\n    def graph_html(\n        self,\n        contract: EVMContract = None,\n        enable_physics: bool = False,\n        phrackify: bool = False,\n        transaction_count: Optional[int] = None,\n    ) -> str:\n        \"\"\"\n\n        :param contract: The Contract on which the analysis should be done\n        :param enable_physics: If true then enables the graph physics simulation\n        :param phrackify: If true generates Phrack-style call graph\n        :param transaction_count: The amount of transactions to be executed\n        :return: The generated graph in html format\n        \"\"\"\n\n        sym = SymExecWrapper(\n            contract or self.contracts[0],\n            self.address,\n            self.strategy,\n            dynloader=DynLoader(self.eth, active=self.use_onchain_data),\n            max_depth=self.max_depth,\n            execution_timeout=self.execution_timeout,\n            transaction_count=transaction_count,\n            create_timeout=self.create_timeout,\n            disable_dependency_pruning=self.disable_dependency_pruning,\n            run_analysis_modules=False,\n            custom_modules_directory=self.custom_modules_directory,\n        )\n        return generate_graph(sym, physics=enable_physics, phrackify=phrackify)\n\n    def fire_lasers(\n        self,\n        modules: Optional[List[str]] = None,\n        transaction_count: Optional[int] = None,\n    ) -> Report:\n        \"\"\"\n        :param modules: The analysis modules which should be executed\n        :param transaction_count: The amount of transactions to be executed\n        :return: The Report class which contains the all the issues/vulnerabilities\n        \"\"\"\n        all_issues: List[Issue] = []\n        SolverStatistics().enabled = True\n        exceptions = []\n        execution_info: Optional[List[ExecutionInfo]] = None\n        for contract in self.contracts:\n            StartTime()  # Reinitialize start time for new contracts\n            try:\n                sym = SymExecWrapper(\n                    contract,\n                    self.address,\n                    self.strategy,\n                    dynloader=DynLoader(self.eth, active=self.use_onchain_data),\n                    max_depth=self.max_depth,\n                    execution_timeout=self.execution_timeout,\n                    loop_bound=self.loop_bound,\n                    create_timeout=self.create_timeout,\n                    transaction_count=transaction_count,\n                    modules=modules,\n                    compulsory_statespace=False,\n                    disable_dependency_pruning=self.disable_dependency_pruning,\n                    custom_modules_directory=self.custom_modules_directory,\n                )\n                issues = fire_lasers(sym, modules)\n                execution_info = sym.execution_info\n            except DetectorNotFoundError as e:\n                # Bubble up\n                raise e\n            except KeyboardInterrupt:\n                log.critical(\"Keyboard Interrupt\")\n                issues = retrieve_callback_issues(modules)\n            except Exception:\n                log.critical(\n                    \"Exception occurred, aborting analysis. Please report this issue to the Mythril GitHub page.\\n\"\n                    + traceback.format_exc()\n                )\n                issues = retrieve_callback_issues(modules)\n                exceptions.append(traceback.format_exc())\n            for issue in issues:\n                issue.add_code_info(contract)\n\n            all_issues += issues\n            log.info(\"Solver statistics: \\n{}\".format(str(SolverStatistics())))\n\n        source_data = Source()\n        source_data.get_source_from_contracts_list(self.contracts)\n\n        # Finally, output the results\n        report = Report(\n            contracts=self.contracts,\n            exceptions=exceptions,\n            execution_info=execution_info,\n        )\n        for issue in all_issues:\n            report.append_issue(issue)\n\n        return report\n"
  },
  {
    "path": "mythril/mythril/mythril_config.py",
    "content": "import codecs\nimport logging\nimport os\nfrom configparser import ConfigParser\nfrom pathlib import Path\nfrom shutil import copyfile\nfrom typing import Optional\n\nfrom mythril.ethereum.interface.rpc.client import EthJsonRpc\nfrom mythril.exceptions import CriticalError\nfrom mythril.support.lock import LockFile\n\nlog = logging.getLogger(__name__)\n\n\nclass MythrilConfig:\n    \"\"\"\n    The Mythril Analyzer class\n    Responsible for setup of the mythril environment\n    \"\"\"\n\n    def __init__(self):\n        self.infura_id: str = os.getenv(\"INFURA_ID\")\n        self.mythril_dir = self.init_mythril_dir()\n        self.config_path = os.path.join(self.mythril_dir, \"config.ini\")\n        self._init_config()\n        self.eth: Optional[EthJsonRpc] = None\n\n    def set_api_infura_id(self, id):\n        self.infura_id = id\n\n    @staticmethod\n    def init_mythril_dir() -> str:\n        \"\"\"\n        Initializes the mythril dir and config.ini file\n        :return: The mythril dir's path\n        \"\"\"\n\n        try:\n            mythril_dir = os.environ[\"MYTHRIL_DIR\"]\n        except KeyError:\n            mythril_dir = os.path.join(os.path.expanduser(\"~\"), \".mythril\")\n\n        if not os.path.exists(mythril_dir):\n            # Initialize data directory\n            log.info(\"Creating mythril data directory\")\n            os.mkdir(mythril_dir)\n\n        db_path = str(Path(mythril_dir) / \"signatures.db\")\n        if not os.path.exists(db_path):\n            # if the default mythril dir doesn't contain a signature DB\n            # initialize it with the default one from the project root\n            asset_dir = Path(__file__).parent.parent / \"support\" / \"assets\"\n            copyfile(str(asset_dir / \"signatures.db\"), db_path)\n\n        return mythril_dir\n\n    def _init_config(self):\n        \"\"\"If no config file exists, create it and add default options.\n        Defaults:-\n            - dynamic loading is set to infura by default in the file\n        \"\"\"\n\n        if not os.path.exists(self.config_path):\n            log.info(\"No config file found. Creating default: \" + self.config_path)\n            open(self.config_path, \"a\").close()\n\n        config = ConfigParser(allow_no_value=True)\n\n        config.optionxform = str\n        with LockFile(self.config_path):\n            config.read(self.config_path, \"utf-8\")\n\n            if \"defaults\" not in config.sections():\n                self._add_default_options(config)\n\n            if not config.has_option(\"defaults\", \"dynamic_loading\"):\n                self._add_dynamic_loading_option(config)\n\n            if not config.has_option(\"defaults\", \"infura_id\"):\n                config.set(\"defaults\", \"infura_id\", \"\")\n\n            with codecs.open(self.config_path, \"w\", \"utf-8\") as fp:\n                config.write(fp)\n\n            if not self.infura_id:\n                self.infura_id = config.get(\"defaults\", \"infura_id\", fallback=\"\")\n\n    @staticmethod\n    def _add_default_options(config: ConfigParser) -> None:\n        \"\"\"\n        Adds defaults option to config.ini\n        :param config: The config file object\n        :return: None\n        \"\"\"\n        config.add_section(\"defaults\")\n\n    @staticmethod\n    def _add_dynamic_loading_option(config: ConfigParser) -> None:\n        \"\"\"\n        Sets the dynamic loading config option in .mythril/config.ini file\n        :param config: The config file object\n        :return: None\n        \"\"\"\n        config.set(\n            \"defaults\", \"#– To connect to Infura use dynamic_loading: infura\", \"\"\n        )\n        config.set(\n            \"defaults\",\n            \"#– To connect to Rpc use \"\n            \"dynamic_loading: HOST:PORT / ganache / infura-[network_name]\",\n            \"\",\n        )\n        config.set(\n            \"defaults\", \"#– To connect to local host use dynamic_loading: localhost\", \"\"\n        )\n        config.set(\"defaults\", \"dynamic_loading\", \"infura\")\n\n    def set_api_rpc_infura(self) -> None:\n        \"\"\"Set the RPC mode to INFURA on Mainnet.\"\"\"\n        log.info(\"Using INFURA Main Net for RPC queries\")\n        self.eth = EthJsonRpc(\n            \"mainnet.infura.io/v3/{}\".format(self.infura_id), None, True\n        )\n\n    def set_api_rpc(self, rpc: str = None, rpctls: bool = False) -> None:\n        \"\"\"\n        Sets the RPC mode to either of ganache or infura\n        :param rpc: either of the strings - ganache, infura-mainnet, infura-rinkeby, infura-kovan, infura-ropsten,\n        infura-goerli, avalanche, arbitrum, bsc, optimism, polygon\n        \"\"\"\n\n        if rpc == \"ganache\":\n            rpcconfig = (\"localhost\", 7545, False)\n\n        elif rpc.startswith(\"infura-\"):\n            network = rpc.replace(\"infura-\", \"\")\n            layer_one = [\"mainnet\", \"rinkeby\", \"kovan\", \"ropsten\", \"goerli\", \"sepolia\"]\n            layer_two = [\n                \"avalanche\",\n                \"arbitrum\",\n                \"bsc\",\n                \"optimism\",\n                \"polygon\",\n                \"celo\",\n                \"starknet\",\n                \"aurora\",\n                \"near\",\n                \"palm\",\n            ]\n            if network in layer_one + layer_two:\n                if self.infura_id in (None, \"\"):\n                    log.info(\n                        \"Infura key not provided, so onchain access is disabled. \"\n                        \"Use --infura-id <INFURA_ID> \"\n                        \"or set it in the environment variable INFURA_ID \"\n                        \"or in the ~/.mythril/config.ini file\"\n                    )\n                    self.eth = None\n                    return\n                if network in layer_one:\n                    rpcconfig = (\n                        f\"{network}.infura.io/v3/{self.infura_id}\",\n                        None,\n                        True,\n                    )\n                else:\n                    rpcconfig = (\n                        f\"{network}-mainnet.infura.io/v3/{self.infura_id}\",\n                        None,\n                        True,\n                    )\n            else:\n                raise CriticalError(\n                    f\"Invalid network {network}, use 'mainnet', 'rinkeby', 'kovan', 'ropsten', 'goerli', 'avalanche', 'arbitrum', 'optimism', or 'polygon'\"\n                )\n        else:\n            try:\n                host, port = rpc.split(\":\")\n                rpcconfig = (host, int(port), rpctls)\n            except ValueError:\n                raise CriticalError(\n                    \"Invalid RPC argument, use 'ganache', 'infura-[network]', or 'HOST:PORT'\"\n                )\n\n        if rpcconfig:\n            log.info(\"Using RPC settings: %s\" % str(rpcconfig))\n            self.eth = EthJsonRpc(rpcconfig[0], rpcconfig[1], rpcconfig[2])\n        else:\n            raise CriticalError(\"Invalid RPC settings, check help for details.\")\n\n    def set_api_rpc_localhost(self) -> None:\n        \"\"\"Set the RPC mode to a local instance.\"\"\"\n        log.info(\"Using default RPC settings: http://localhost:8545\")\n        self.eth = EthJsonRpc(\"localhost\", 8545)\n\n    def set_api_from_config_path(self) -> None:\n        \"\"\"Set the RPC mode based on a given config file.\"\"\"\n        config = ConfigParser(allow_no_value=False)\n        config.optionxform = str\n        config.read(self.config_path, \"utf-8\")\n        if config.has_option(\"defaults\", \"dynamic_loading\"):\n            dynamic_loading = config.get(\"defaults\", \"dynamic_loading\")\n        else:\n            dynamic_loading = \"infura\"\n        self._set_rpc(dynamic_loading)\n\n    def _set_rpc(self, rpc_type: str) -> None:\n        \"\"\"\n        Sets rpc based on the type\n        :param rpc_type: The type of connection: like infura, ganache, localhost\n        :return:\n        \"\"\"\n        if rpc_type == \"infura\":\n            self.set_api_rpc_infura()\n        elif rpc_type == \"localhost\":\n            self.set_api_rpc_localhost()\n        else:\n            self.set_api_rpc(rpc_type)\n"
  },
  {
    "path": "mythril/mythril/mythril_disassembler.py",
    "content": "import json\nimport logging\nimport os\nimport re\nimport shutil\nimport subprocess\nimport warnings\nfrom pathlib import Path\nfrom typing import List, Optional, Tuple\n\nimport solc\nfrom eth_utils import int_to_big_endian\nfrom semantic_version import NpmSpec, Version\n\nfrom mythril.ethereum import util\nfrom mythril.ethereum.evmcontract import EVMContract\nfrom mythril.ethereum.interface.rpc.client import EthJsonRpc\nfrom mythril.ethereum.interface.rpc.exceptions import ConnectionError\nfrom mythril.exceptions import CompilerError, CriticalError, NoContractFoundError\nfrom mythril.solidity.soliditycontract import (\n    SolidityContract,\n    get_contracts_from_file,\n    get_contracts_from_foundry,\n)\nfrom mythril.support import signatures\nfrom mythril.support.support_args import args\nfrom mythril.support.support_utils import rzpad, sha3, zpad\n\n\ndef format_warning(message, category, filename, lineno, line=\"\"):\n    return \"{}: {}\\n\\n\".format(str(filename), str(message))\n\n\nwarnings.formatwarning = format_warning\n\n\nlog = logging.getLogger(__name__)\n\n\nclass MythrilDisassembler:\n    \"\"\"\n    The Mythril Disassembler class\n    Responsible for generating disassembly of smart contracts:\n        - Compiles solc code from file/onchain\n        - Can also be used to access onchain storage data\n    \"\"\"\n\n    def __init__(\n        self,\n        eth: Optional[EthJsonRpc] = None,\n        solc_version: str = None,\n        solc_settings_json: str = None,\n        solc_args=None,\n    ) -> None:\n        args.solc_args = solc_args\n        self.solc_version = solc_version\n        self.solc_binary = self._init_solc_binary(solc_version)\n        self.solc_settings_json = solc_settings_json\n        self.eth = eth\n        self.sigs = signatures.SignatureDB()\n        self.contracts: List[EVMContract] = []\n\n    @staticmethod\n    def _init_solc_binary(version: str) -> Optional[str]:\n        \"\"\"\n        Only proper versions are supported. No nightlies, commits etc (such as available in remix).\n        This functions extracts\n        :param version: Version of the solc binary required\n        :return: AThe solc binary of the corresponding version\n        \"\"\"\n\n        if not version:\n            return None\n\n        # tried converting input to semver, seemed not necessary so just slicing for now\n        try:\n            main_version = solc.get_solc_version_string()\n        except:\n            main_version = \"\"  # allow missing solc will download instead\n        main_version_number = re.search(r\"\\d+.\\d+.\\d+\", main_version)\n\n        if version.startswith(\"v\"):\n            version = version[1:]\n        if version == main_version_number:\n            log.info(\"Given version matches installed version\")\n            solc_binary = os.environ.get(\"SOLC\") or \"solc\"\n        else:\n            solc_binary = util.solc_exists(version)\n            if solc_binary is None:\n                raise CriticalError(\n                    \"The version of solc that is needed cannot be installed automatically\"\n                )\n            else:\n                log.info(\"Setting the compiler to %s\", solc_binary)\n\n        return solc_binary\n\n    def load_from_bytecode(\n        self, code: str, bin_runtime: bool = False, address: Optional[str] = None\n    ) -> Tuple[str, EVMContract]:\n        \"\"\"\n        Returns the address and the contract class for the given bytecode\n        :param code: Bytecode\n        :param bin_runtime: Whether the code is runtime code or creation code\n        :param address: address of contract\n        :return: tuple(address, Contract class)\n        \"\"\"\n        if address is None:\n            address = util.get_indexed_address(0)\n\n        if bin_runtime:\n            self.contracts.append(\n                EVMContract(\n                    code=code,\n                    name=\"MAIN\",\n                )\n            )\n        else:\n            self.contracts.append(\n                EVMContract(\n                    creation_code=code,\n                    name=\"MAIN\",\n                )\n            )\n        return address, self.contracts[-1]  # return address and contract object\n\n    def load_from_address(self, address: str) -> Tuple[str, EVMContract]:\n        \"\"\"\n        Returns the contract given it's on chain address\n        :param address: The on chain address of a contract\n        :return: tuple(address, contract)\n        \"\"\"\n        if not re.match(r\"0x[a-fA-F0-9]{40}\", address):\n            raise CriticalError(\"Invalid contract address. Expected format is '0x...'.\")\n\n        if self.eth is None:\n            raise CriticalError(\n                \"Please check whether the Infura key is set or use a different RPC method.\"\n            )\n\n        try:\n            code = self.eth.eth_getCode(address)\n        except FileNotFoundError as e:\n            raise CriticalError(\"IPC error: \" + str(e))\n        except ConnectionError:\n            raise CriticalError(\n                \"Could not connect to RPC server. Make sure that your node is running and that RPC parameters are set correctly.\"\n            )\n        except Exception as e:\n            raise CriticalError(\"IPC / RPC error: \" + str(e))\n\n        if code == \"0x\" or code == \"0x0\":\n            raise CriticalError(\n                \"Received an empty response from eth_getCode. Check the contract address and verify that you are on the correct chain.\"\n            )\n        else:\n            self.contracts.append(EVMContract(code, name=address))\n        return address, self.contracts[-1]  # return address and contract object\n\n    def load_from_foundry(self):\n        project_root = os.getcwd()\n\n        cmd = [\"forge\", \"build\", \"--build-info\", \"--force\"]\n\n        with subprocess.Popen(\n            cmd,\n            stdout=subprocess.PIPE,\n            stderr=subprocess.PIPE,\n            cwd=project_root,\n            executable=shutil.which(cmd[0]),\n        ) as p:\n            stdout, stderr = p.communicate()\n            stdout, stderr = (stdout.decode(), stderr.decode())\n            if stderr:\n                log.error(stderr)\n\n            build_dir = Path(project_root, \"artifacts\", \"contracts\", \"build-info\")\n\n        build_dir = os.path.join(project_root, \"artifacts\", \"contracts\", \"build-info\")\n\n        address = util.get_indexed_address(0)\n\n        files = sorted(\n            os.listdir(build_dir), key=lambda x: os.path.getmtime(Path(build_dir, x))\n        )\n\n        files = [str(f) for f in files if str(f).endswith(\".json\")]\n        if not files:\n            txt = f\"`compile` failed. Can you run it?\\n{build_dir} is empty\"\n            raise Exception(txt)\n        contracts = []\n        for file in files:\n            build_info = Path(build_dir, file)\n\n            with open(build_info, encoding=\"utf8\") as file_desc:\n                loaded_json = json.load(file_desc)\n\n                targets_json = loaded_json[\"output\"]\n\n                input_json = loaded_json[\"input\"]\n                compiler = \"solc\" if input_json[\"language\"] == \"Solidity\" else \"vyper\"\n\n                if compiler == \"vyper\":\n                    raise NotImplementedError(\"Support for Vyper is not implemented.\")\n\n                if \"contracts\" in targets_json:\n                    for original_filename, contracts_info in targets_json[\n                        \"contracts\"\n                    ].items():\n                        for contract in get_contracts_from_foundry(\n                            original_filename, targets_json\n                        ):\n                            self.contracts.append(contract)\n                            contracts.append(contract)\n                            self.sigs.add_sigs(original_filename, targets_json)\n        return address, contracts\n\n    def check_run_integer_module(self, source_file):\n        with open(source_file, \"r\") as f:\n            for line in f:\n                if \"unchecked\" in line:\n                    return True\n\n        if self.solc_version is None:\n            # Runs the version installed in the system (likely 0.8.0+)\n            # Post 0.8.0 versions automatically add assertions to sanity check arithmetic\n            return False\n\n        # Strip leading 'v' from version if it's there\n        normalized_version = self.solc_version.lstrip(\"v\")\n\n        # Check if solc_version is not provided or doesn't match the required version\n        # As post 0.8.0 solc versions automatically add assertions to sanity check arithmetic\n        if not self.solc_version or not NpmSpec(\"^0.8.0\").match(\n            Version(normalized_version)\n        ):\n            return True\n\n        return False\n\n    def load_from_solidity(\n        self, solidity_files: List[str]\n    ) -> Tuple[str, List[SolidityContract]]:\n        \"\"\"\n\n        :param solidity_files: List of solidity_files\n        :return: tuple of address, contract class list\n        \"\"\"\n        address = util.get_indexed_address(0)\n        contracts = []\n        for file in solidity_files:\n            if \":\" in file:\n                file, contract_name = file.split(\":\")\n            else:\n                contract_name = None\n\n            file = os.path.expanduser(file)\n            solc_binary = self.solc_binary\n            if solc_binary is None:\n                solc_binary, self.solc_version = util.extract_binary(file)\n            if self.check_run_integer_module(file) is False:\n                args.use_integer_module = False\n            try:\n                # import signatures from solidity source\n                self.sigs.import_solidity_file(\n                    file,\n                    solc_binary=solc_binary,\n                    solc_settings_json=self.solc_settings_json,\n                )\n                if contract_name is not None:\n                    contract = SolidityContract(\n                        input_file=file,\n                        name=contract_name,\n                        solc_settings_json=self.solc_settings_json,\n                        solc_binary=solc_binary,\n                    )\n                    self.contracts.append(contract)\n                    contracts.append(contract)\n                else:\n                    for contract in get_contracts_from_file(\n                        input_file=file,\n                        solc_settings_json=self.solc_settings_json,\n                        solc_binary=solc_binary,\n                    ):\n                        self.contracts.append(contract)\n                        contracts.append(contract)\n\n            except FileNotFoundError as e:\n                raise CriticalError(f\"Input file not found {e}\")\n            except CompilerError as e:\n                error_msg = str(e)\n                # Check if error is related to solidity version mismatch\n                if (\n                    \"Error: Source file requires different compiler version\"\n                    in error_msg\n                ):\n                    # Grab relevant line \"pragma solidity <solv>...\", excluding any comments\n                    solv_pragma_line = error_msg.split(\"\\n\")[-3].split(\"//\")[0]\n                    # Grab solidity version from relevant line\n                    solv_match = re.findall(r\"[0-9]+\\.[0-9]+\\.[0-9]+\", solv_pragma_line)\n                    error_suggestion = (\n                        \"<version_number>\" if len(solv_match) != 1 else solv_match[0]\n                    )\n                    error_msg = (\n                        error_msg\n                        + '\\nSolidityVersionMismatch: Try adding the option \"--solv '\n                        + error_suggestion\n                        + '\"\\n'\n                    )\n\n                raise CriticalError(error_msg)\n            except NoContractFoundError:\n                log.error(\n                    \"The file \" + file + \" does not contain a compilable contract.\"\n                )\n\n        return address, contracts\n\n    @staticmethod\n    def hash_for_function_signature(func: str) -> str:\n        \"\"\"\n        Return function nadmes corresponding signature hash\n        :param func: function name\n        :return: Its hash signature\n        \"\"\"\n        return \"0x%s\" % sha3(func)[:4].hex()\n\n    def get_state_variable_from_storage(\n        self, address: str, params: Optional[List[str]] = None\n    ) -> str:\n        \"\"\"\n        Get variables from the storage\n        :param address: The contract address\n        :param params: The list of parameters param types: [position, length] or [\"mapping\", position, key1, key2, ...  ]\n                       or [position, length, array]\n        :return: The corresponding storage slot and its value\n        \"\"\"\n        params = params or []\n        (position, length, mappings) = (0, 1, [])\n        try:\n            if params[0] == \"mapping\":\n                if len(params) < 3:\n                    raise CriticalError(\"Invalid number of parameters.\")\n                position = int(params[1])\n                position_formatted = zpad(int_to_big_endian(position), 32)\n                for i in range(2, len(params)):\n                    key = bytes(params[i], \"utf8\")\n                    key_formatted = rzpad(key, 32)\n                    mappings.append(\n                        int.from_bytes(\n                            sha3(key_formatted + position_formatted), byteorder=\"big\"\n                        )\n                    )\n\n                length = len(mappings)\n                if length == 1:\n                    position = mappings[0]\n\n            else:\n                if len(params) >= 4:\n                    raise CriticalError(\"Invalid number of parameters.\")\n\n                if len(params) >= 1:\n                    position = int(params[0])\n                if len(params) >= 2:\n                    length = int(params[1])\n                if len(params) == 3 and params[2] == \"array\":\n                    position_formatted = zpad(int_to_big_endian(position), 32)\n                    position = int.from_bytes(sha3(position_formatted), byteorder=\"big\")\n\n        except ValueError:\n            raise CriticalError(\n                \"Invalid storage index. Please provide a numeric value.\"\n            )\n\n        outtxt = []\n\n        try:\n            if length == 1:\n                outtxt.append(\n                    \"{}: {}\".format(\n                        position, self.eth.eth_getStorageAt(address, position)\n                    )\n                )\n            else:\n                if len(mappings) > 0:\n                    for i in range(0, len(mappings)):\n                        position = mappings[i]\n                        outtxt.append(\n                            \"{}: {}\".format(\n                                hex(position),\n                                self.eth.eth_getStorageAt(address, position),\n                            )\n                        )\n                else:\n                    for i in range(position, position + length):\n                        outtxt.append(\n                            \"{}: {}\".format(\n                                hex(i), self.eth.eth_getStorageAt(address, i)\n                            )\n                        )\n        except FileNotFoundError as e:\n            raise CriticalError(\"IPC error: \" + str(e))\n        except ConnectionError:\n            raise CriticalError(\n                \"Could not connect to RPC server. \"\n                \"Make sure that your node is running and that RPC parameters are set correctly.\"\n            )\n        return \"\\n\".join(outtxt)\n"
  },
  {
    "path": "mythril/plugin/__init__.py",
    "content": "from mythril.plugin.interface import MythrilCLIPlugin, MythrilPlugin\nfrom mythril.plugin.loader import MythrilPluginLoader\n"
  },
  {
    "path": "mythril/plugin/discovery.py",
    "content": "try:\n    # Older python versions\n    import pkg_resources\nexcept Exception:\n    pkg_resources = None\n    from importlib.metadata import entry_points\nfrom typing import Any, Dict, List, Optional\n\nfrom mythril.plugin.interface import MythrilPlugin\nfrom mythril.support.support_utils import Singleton\n\n\nclass PluginDiscovery(object, metaclass=Singleton):\n    \"\"\"PluginDiscovery class\n\n    This plugin implements the logic to discover and build plugins in installed python packages\n    \"\"\"\n\n    # Installed plugins structure. Retrieves all modules that have an entry point for mythril.plugins\n    _installed_plugins: Optional[Dict[str, Any]] = None\n\n    def init_installed_plugins(self):\n        if pkg_resources:\n            self._installed_plugins = {\n                entry_point.name: entry_point.load()\n                for entry_point in pkg_resources.iter_entry_points(\"mythril.plugins\")\n            }\n        else:\n            all_entry_points = entry_points()\n            mythril_plugins = [\n                ep for ep in all_entry_points if ep.group == \"mythril.plugins\"\n            ]\n\n            self._installed_plugins = {\n                entry_point.name: entry_point.load() for entry_point in mythril_plugins\n            }\n\n    @property\n    def installed_plugins(self):\n        if self._installed_plugins is None:\n            self.init_installed_plugins()\n        return self._installed_plugins\n\n    def is_installed(self, plugin_name: str) -> bool:\n        \"\"\"Returns whether there is python package with a plugin with plugin_name\"\"\"\n        return plugin_name in self.installed_plugins.keys()\n\n    def build_plugin(self, plugin_name: str, plugin_args: Dict) -> MythrilPlugin:\n        \"\"\"Returns the plugin for the given plugin_name  if it is installed\"\"\"\n        if not self.is_installed(plugin_name):\n            raise ValueError(f\"Plugin with name: `{plugin_name}` is not installed\")\n\n        plugin = self.installed_plugins.get(plugin_name)\n        if plugin is None or not issubclass(plugin, MythrilPlugin):\n            raise ValueError(f\"No valid plugin was found for {plugin_name}\")\n\n        return plugin(**plugin_args)\n\n    def get_plugins(self, default_enabled=None) -> List[str]:\n        \"\"\"Gets a list of installed mythril plugins\n\n        :param default_enabled: Select plugins that are enabled by default\n        :return: List of plugin names\n        \"\"\"\n        if default_enabled is None:\n            return list(self.installed_plugins.keys())\n\n        return [\n            plugin_name\n            for plugin_name, plugin_class in self.installed_plugins.items()\n            if plugin_class.plugin_default_enabled == default_enabled\n        ]\n"
  },
  {
    "path": "mythril/plugin/interface.py",
    "content": "from abc import ABC\n\nfrom mythril.laser.plugin.builder import PluginBuilder as LaserPluginBuilder\n\n\nclass MythrilPlugin:\n    \"\"\"MythrilPlugin interface\n\n    Mythril Plugins can be used to extend Mythril in different ways:\n    1. Extend Laser, in which case the LaserPlugin interface must also be extended\n    2. Extend Laser with a new search strategy in which case the SearchStrategy needs to be implemented\n    3. Add an analysis module, in this case the AnalysisModule interface needs to be implemented\n    4. Add new commands to the Mythril cli, using the MythrilCLIPlugin Interface\n    \"\"\"\n\n    author = \"Default Author\"\n    name = \"Plugin Name\"\n    plugin_license = \"All rights reserved.\"\n    plugin_type = \"Mythril Plugin\"\n    plugin_version = \"0.0.1 \"\n    plugin_description = \"This is an example plugin description\"\n\n    def __init__(self, **kwargs):\n        pass\n\n    def __repr__(self):\n        plugin_name = type(self).__name__\n        return f\"{plugin_name} - {self.plugin_version} - {self.author}\"\n\n\nclass MythrilCLIPlugin(MythrilPlugin):\n    \"\"\"MythrilCLIPlugin interface\n\n    This interface should be implemented by mythril plugins that aim to add commands to the mythril cli\n    \"\"\"\n\n    pass\n\n\nclass MythrilLaserPlugin(MythrilPlugin, LaserPluginBuilder, ABC):\n    \"\"\"Mythril Laser Plugin interface\n\n    Plugins of this type are used to instrument the laser EVM\n    \"\"\"\n\n    pass\n"
  },
  {
    "path": "mythril/plugin/loader.py",
    "content": "import logging\nfrom typing import Dict\n\nfrom mythril.analysis.module import DetectionModule\nfrom mythril.analysis.module.loader import ModuleLoader\nfrom mythril.laser.plugin.loader import LaserPluginLoader\nfrom mythril.plugin.discovery import PluginDiscovery\nfrom mythril.plugin.interface import MythrilLaserPlugin, MythrilPlugin\nfrom mythril.support.support_utils import Singleton\n\nlog = logging.getLogger(__name__)\n\n\nclass UnsupportedPluginType(Exception):\n    \"\"\"Raised when a plugin with an unsupported type is loaded\"\"\"\n\n    pass\n\n\nclass MythrilPluginLoader(object, metaclass=Singleton):\n    \"\"\"MythrilPluginLoader singleton\n\n    This object permits loading MythrilPlugin's\n    \"\"\"\n\n    def __init__(self):\n        log.info(\"Initializing mythril plugin loader\")\n        self.loaded_plugins = []\n        self.plugin_args: Dict[str, Dict] = dict()\n        self._load_default_enabled()\n\n    def set_args(self, plugin_name: str, **kwargs):\n        self.plugin_args[plugin_name] = kwargs\n\n    def load(self, plugin: MythrilPlugin):\n        \"\"\"Loads the passed plugin\n\n        This function handles input validation and dispatches loading to type specific loaders.\n        Supported plugin types:\n         - laser plugins\n         - detection modules\n        \"\"\"\n        if not isinstance(plugin, MythrilPlugin):\n            raise ValueError(\"Passed plugin is not of type MythrilPlugin\")\n        logging.info(f\"Loading plugin: {plugin.name}\")\n\n        log.info(f\"Loading plugin: {str(plugin)}\")\n        if isinstance(plugin, DetectionModule):\n            self._load_detection_module(plugin)\n        elif isinstance(plugin, MythrilLaserPlugin):\n            self._load_laser_plugin(plugin)\n        else:\n            raise UnsupportedPluginType(\"Passed plugin type is not yet supported\")\n\n        self.loaded_plugins.append(plugin)\n        log.info(f\"Finished loading plugin: {plugin.name}\")\n\n    @staticmethod\n    def _load_detection_module(plugin: DetectionModule):\n        \"\"\"Loads the passed detection module\"\"\"\n        log.info(f\"Loading detection module: {plugin.name}\")\n        ModuleLoader().register_module(plugin)\n\n    @staticmethod\n    def _load_laser_plugin(plugin: MythrilLaserPlugin):\n        \"\"\"Loads the laser plugin\"\"\"\n        log.info(f\"Loading laser plugin: {plugin.name}\")\n        LaserPluginLoader().load(plugin)\n\n    def _load_default_enabled(self):\n        \"\"\"Loads the plugins that have the default enabled flag\"\"\"\n        log.info(\"Loading installed analysis modules that are enabled by default\")\n        for plugin_name in PluginDiscovery().get_plugins(default_enabled=True):\n            plugin = PluginDiscovery().build_plugin(\n                plugin_name, self.plugin_args.get(plugin_name, {})\n            )\n            self.load(plugin)\n"
  },
  {
    "path": "mythril/solidity/__init__.py",
    "content": ""
  },
  {
    "path": "mythril/solidity/features.py",
    "content": "TRANSFER_METHODS = [\"transfer\", \"send\"]\n\n\nclass SolidityFeatureExtractor:\n    def __init__(self, ast):\n        self.ast = ast\n\n    def extract_features(self):\n        function_features = {}\n        function_nodes = self.find_function_nodes(self.ast)\n        modifier_vars = {}\n        for modifier_node in self.find_modifier_nodes(self.ast):\n            modifier_vars[modifier_node[\"name\"]] = self.find_variables_in_require(\n                modifier_node\n            )\n            modifier_vars[modifier_node[\"name\"]].update(\n                self.find_variables_in_if(modifier_node)\n            )\n\n        for node in function_nodes:\n            function_name = self.get_function_name(node)\n            contains_selfdestruct = self.contains_selfdestruct(node)\n            contains_call = self.contains_call(node)\n            contains_delegatecall = self.contains_delegatecall(node)\n            contains_callcode = self.contains_callcode(node)\n            contains_staticcall = self.contains_staticcall(node)\n            all_require_vars = self.find_variables_in_require(node)\n            ether_vars = self.extract_address_variable(node)\n\n            for potential_modifier in node.get(\"modifiers\", []):\n                # Issues with AST, sometimes, non-modifiers pop up here\n                if potential_modifier[\"modifierName\"][\"name\"] in modifier_vars:\n                    all_require_vars.update(\n                        modifier_vars[potential_modifier[\"modifierName\"][\"name\"]]\n                    )\n            is_payable = self.is_function_payable(node)\n            has_isowner_modifier = self.has_isowner_modifier(node)\n            contains_assert = self.contains_assert(node)\n            function_features[function_name] = {\n                \"contains_selfdestruct\": contains_selfdestruct,\n                \"contains_call\": contains_call,\n                \"is_payable\": is_payable,\n                \"has_owner_modifier\": has_isowner_modifier,\n                \"contains_assert\": contains_assert,\n                \"contains_callcode\": contains_callcode,\n                \"contains_delegatecall\": contains_delegatecall,\n                \"contains_staticcall\": contains_staticcall,\n                \"all_require_vars\": all_require_vars,\n                \"transfer_vars\": ether_vars,\n            }\n\n        return function_features\n\n    def find_function_nodes(self, node):\n        if node[\"nodeType\"] == \"FunctionDefinition\":\n            yield node\n\n        if \"nodes\" in node:\n            for child_node in node[\"nodes\"]:\n                yield from self.find_function_nodes(child_node)\n\n    def find_modifier_nodes(self, node):\n        if node[\"nodeType\"] == \"ModifierDefinition\":\n            yield node\n\n        if \"nodes\" in node:\n            for child_node in node[\"nodes\"]:\n                yield from self.find_modifier_nodes(child_node)\n\n    def get_function_name(self, node):\n        return node[\"name\"]\n\n    def contains_command(self, node, command):\n        if isinstance(node, dict):\n            if command in node.values():\n                return True\n\n            for value in node.values():\n                if isinstance(value, (dict, list)):\n                    if self.contains_command(value, command):\n                        return True\n\n        elif isinstance(node, list):\n            for item in node:\n                if self.contains_command(item, command):\n                    return True\n\n        return False\n\n    def contains_call(self, node):\n        return self.contains_command(node, \"call\")\n\n    def is_function_payable(self, node):\n        return node.get(\"stateMutability\") == \"payable\"\n\n    def has_isowner_modifier(self, node):\n        if \"modifiers\" in node:\n            for modifier in node[\"modifiers\"]:\n                if modifier[\"modifierName\"][\"name\"].lower() in (\"isowner\", \"onlyowner\"):\n                    return True\n        return False\n\n    def contains_assert(self, node):\n        return self.contains_command(node, \"assert\")\n\n    def contains_selfdestruct(self, node):\n        return self.contains_command(node, \"selfdestruct\")\n\n    def contains_delegatecall(self, node):\n        return self.contains_command(node, \"delegatecall\")\n\n    def contains_callcode(self, node):\n        return self.contains_command(node, \"callcode\")\n\n    def contains_staticcall(self, node):\n        return self.contains_command(node, \"staticcall\")\n\n    def contains_require(self, node):\n        return self.contains_command(node, \"require\")\n\n    def extract_nodes(self, node, command, parent=None):\n        node_list = []\n        if isinstance(node, dict):\n            if command in node.values():\n                node_list.append((parent, node))\n\n            for key, value in node.items():\n                if isinstance(value, (dict, list)):\n                    node_list.extend(self.extract_nodes(value, command, parent=node))\n        elif isinstance(node, list):\n            for item in node:\n                node_list.extend(self.extract_nodes(item, command, parent=node))\n        return node_list\n\n    def find_all_variables(self, node):\n        variables = set()\n\n        def traverse(node):\n            if isinstance(node, dict):\n                for key, value in node.items():\n                    if key == \"nodeType\" and value == \"Identifier\":\n                        if \"name\" in node:\n                            variables.add(node[\"name\"])\n                    elif isinstance(value, (dict, list)):\n                        traverse(value)\n            elif isinstance(node, list):\n                for item in node:\n                    traverse(item)\n\n        traverse(node)\n        return variables\n\n    def find_variables_in_require(self, node):\n        nodes = self.extract_nodes(node, \"require\")\n        variables = set()\n        for parent, _ in nodes:\n            if \"arguments\" in parent:\n                arguments = parent[\"arguments\"]\n                for argument in arguments:\n                    variables.update(self.find_all_variables(argument))\n        return variables\n\n    def find_variables_in_if(self, node):\n        variables = []\n\n        def traverse(node):\n            if \"condition\" in node:\n                condition = node[\"condition\"]\n                if (\n                    \"leftExpression\" in condition\n                    and condition[\"leftExpression\"][\"nodeType\"] == \"Identifier\"\n                ):\n                    variables.append(condition[\"leftExpression\"][\"name\"])\n                if (\n                    \"rightExpression\" in condition\n                    and condition[\"rightExpression\"][\"nodeType\"] == \"Identifier\"\n                ):\n                    variables.append(condition[\"rightExpression\"][\"name\"])\n\n                traverse(condition)\n\n            if \"falseBody\" in node and node[\"falseBody\"]:\n                traverse(node[\"falseBody\"])\n\n            if \"trueBody\" in node and node[\"trueBody\"]:\n                if (\n                    \"nodeType\" in node[\"trueBody\"]\n                    and node[\"trueBody\"][\"nodeType\"] == \"Block\"\n                ):\n                    statements = node[\"trueBody\"].get(\"statements\", [])\n                    for statement in statements:\n                        traverse(statement)\n                else:\n                    traverse(node[\"trueBody\"])\n\n            if \"body\" in node and node[\"body\"]:\n                if \"nodeType\" in node[\"body\"] and node[\"body\"][\"nodeType\"] == \"Block\":\n                    statements = node[\"body\"].get(\"statements\", [])\n                    for statement in statements:\n                        traverse(statement)\n                else:\n                    traverse(node[\"body\"])\n\n        traverse(node)\n\n        return variables\n\n    def extract_address_variable(self, node):\n        if node is None or isinstance(node, (int, str)):\n            return set([])\n        transfer_vars = set([])\n        if (\n            node.get(\"nodeType\", \"\") == \"ExpressionStatement\"\n            and node.get(\"expression\", {}).get(\"nodeType\") == \"FunctionCall\"\n        ):\n            expression = node[\"expression\"].get(\"expression\", None)\n            if expression is not None and (\n                expression[\"nodeType\"] == \"MemberAccess\"\n                and expression[\"memberName\"] in TRANSFER_METHODS\n            ):\n                address_variable = expression[\"expression\"].get(\"name\")\n                if address_variable:\n                    transfer_vars.update(set([address_variable]))\n\n        for key, value in node.items():\n            if isinstance(value, dict):\n                transfer_vars.update(self.extract_address_variable(value))\n\n            elif isinstance(value, list):\n                for item in value:\n                    transfer_vars.update(self.extract_address_variable(item))\n\n        return transfer_vars\n"
  },
  {
    "path": "mythril/solidity/soliditycontract.py",
    "content": "\"\"\"This module contains representation classes for Solidity files, contracts\nand source mappings.\"\"\"\n\nimport logging\nfrom typing import Dict, Set\n\nimport mythril.laser.ethereum.util as helper\nfrom mythril.ethereum.evmcontract import EVMContract\nfrom mythril.ethereum.util import get_solc_json\nfrom mythril.exceptions import NoContractFoundError\nfrom mythril.solidity.features import SolidityFeatureExtractor\n\nlog = logging.getLogger(__name__)\n\n\nclass SolcAST:\n    def __init__(self, ast):\n        self.ast = ast\n\n    @property\n    def node_type(self):\n        if \"nodeType\" in self.ast:\n            return self.ast[\"nodeType\"]\n        if \"name\" in self.ast:\n            return self.ast[\"name\"]\n        assert False, \"Unknown AST type has been fed to SolcAST\"\n\n    @property\n    def abs_path(self):\n        if \"absolutePath\" in self.ast:\n            return self.ast[\"absolutePath\"]\n        else:\n            return None\n\n    @property\n    def nodes(self):\n        if \"nodes\" in self.ast:\n            return self.ast[\"nodes\"]\n        if \"children\" in self.ast:\n            return self.ast[\"children\"]\n        assert False, \"Unknown AST type has been fed to SolcAST\"\n\n    def __next__(self):\n        yield self.ast.__next__()\n\n    def __getitem__(self, item):\n        return self.ast[item]\n\n\nclass SolcSource:\n    def __init__(self, source):\n        self.source = source\n\n    @property\n    def ast(self):\n        if \"ast\" in self.source:\n            return SolcAST(self.source[\"ast\"])\n        if \"legacyAST\" in self.source:\n            return SolcAST(self.source[\"legacyAST\"])\n        assert False, \"Unknown source type has been fed to SolcSource\"\n\n    @property\n    def id(self):\n        return self.source[\"id\"]\n\n    @property\n    def name(self):\n        return self.source[\"name\"]\n\n    @property\n    def contents(self):\n        return self.source[\"contents\"]\n\n\nclass SourceMapping:\n    def __init__(self, solidity_file_idx, offset, length, lineno, mapping):\n        \"\"\"Representation of a source mapping for a Solidity file.\"\"\"\n\n        self.solidity_file_idx = solidity_file_idx\n        self.offset = offset\n        self.length = length\n        self.lineno = lineno\n        self.solc_mapping = mapping\n\n\nclass SolidityFile:\n    \"\"\"Representation of a file containing Solidity code.\"\"\"\n\n    def __init__(self, filename: str, data: str, full_contract_src_maps: Set[str]):\n        \"\"\"\n        Metadata class containing data regarding a specific solidity file\n        :param filename: The filename of the solidity file\n        :param data: The code of the solidity file\n        :param full_contract_src_maps: The set of contract source mappings of all the contracts in the file\n        \"\"\"\n        self.filename = filename\n        self.data = data\n        self.full_contract_src_maps = full_contract_src_maps\n\n\nclass SourceCodeInfo:\n    def __init__(self, filename, lineno, code, mapping):\n        \"\"\"Metadata class containing a code reference for a specific file.\"\"\"\n\n        self.filename = filename\n        self.lineno = lineno\n        self.code = code\n        self.solc_mapping = mapping\n\n\ndef get_contracts_from_file(input_file, solc_settings_json=None, solc_binary=\"solc\"):\n    \"\"\"\n\n    :param input_file:\n    :param solc_settings_json:\n    :param solc_binary:\n    \"\"\"\n    data = get_solc_json(\n        input_file, solc_settings_json=solc_settings_json, solc_binary=solc_binary\n    )\n\n    try:\n        contract_names = data[\"contracts\"][input_file].keys()\n    except KeyError:\n        raise NoContractFoundError\n\n    for contract_name in contract_names:\n        if len(\n            data[\"contracts\"][input_file][contract_name][\"evm\"][\"deployedBytecode\"][\n                \"object\"\n            ]\n        ):\n            yield SolidityContract(\n                input_file=input_file,\n                name=contract_name,\n                solc_settings_json=solc_settings_json,\n                solc_binary=solc_binary,\n            )\n\n\ndef get_contracts_from_foundry(input_file, foundry_json):\n    \"\"\"\n\n    :param input_file:\n    :param solc_settings_json:\n    :param solc_binary:\n    \"\"\"\n\n    try:\n        contract_names = foundry_json[\"contracts\"][input_file].keys()\n    except KeyError:\n        raise NoContractFoundError\n\n    for contract_name in contract_names:\n        if len(\n            foundry_json[\"contracts\"][input_file][contract_name][\"evm\"][\n                \"deployedBytecode\"\n            ][\"object\"]\n        ):\n            yield SolidityContract(\n                input_file=input_file,\n                name=contract_name,\n                solc_settings_json=None,\n                solc_binary=None,\n                solc_data=foundry_json,\n            )\n\n\nclass SolidityContract(EVMContract):\n    \"\"\"Representation of a Solidity contract.\"\"\"\n\n    def __init__(\n        self,\n        input_file,\n        name=None,\n        solc_settings_json=None,\n        solc_binary=\"solc\",\n        solc_data=None,\n    ):\n        if solc_data is None:\n            data = get_solc_json(\n                input_file,\n                solc_settings_json=solc_settings_json,\n                solc_binary=solc_binary,\n            )\n        else:\n            data = solc_data\n\n        self.solc_indices = self.get_solc_indices(input_file, data)\n        self.solc_json = data\n        self.input_file = input_file\n        if \"ast\" in data[\"sources\"][str(input_file)]:\n            # Not available in old solidity versions, around ~0.4.11\n            self.features = SolidityFeatureExtractor(\n                data[\"sources\"][str(input_file)][\"ast\"]\n            ).extract_features()\n        else:\n            self.features = None\n        has_contract = False\n\n        # If a contract name has been specified, find the bytecode of that specific contract\n        srcmap_constructor = []\n        srcmap = []\n        if name:\n            contract = data[\"contracts\"][input_file][name]\n            if len(contract[\"evm\"][\"deployedBytecode\"][\"object\"]):\n                code = contract[\"evm\"][\"deployedBytecode\"][\"object\"]\n                creation_code = contract[\"evm\"][\"bytecode\"][\"object\"]\n                srcmap = contract[\"evm\"][\"deployedBytecode\"][\"sourceMap\"].split(\";\")\n                srcmap_constructor = contract[\"evm\"][\"bytecode\"][\"sourceMap\"].split(\";\")\n                has_contract = True\n\n        # If no contract name is specified, get the last bytecode entry for the input file\n\n        else:\n            for contract_name, contract in sorted(\n                data[\"contracts\"][input_file].items()\n            ):\n                if len(contract[\"evm\"][\"deployedBytecode\"][\"object\"]):\n                    name = contract_name\n                    code = contract[\"evm\"][\"deployedBytecode\"][\"object\"]\n                    creation_code = contract[\"evm\"][\"bytecode\"][\"object\"]\n                    srcmap = contract[\"evm\"][\"deployedBytecode\"][\"sourceMap\"].split(\";\")\n                    srcmap_constructor = contract[\"evm\"][\"bytecode\"][\"sourceMap\"].split(\n                        \";\"\n                    )\n                    has_contract = True\n\n        if not has_contract:\n            raise NoContractFoundError\n\n        self.mappings = []\n\n        self.constructor_mappings = []\n\n        self._get_solc_mappings(srcmap)\n        self._get_solc_mappings(srcmap_constructor, constructor=True)\n\n        super().__init__(code, creation_code, name=name)\n\n    @staticmethod\n    def get_sources(indices_data: Dict, source_data: Dict) -> None:\n        \"\"\"\n        Get source indices mapping. Function not needed for older solc versions.\n        \"\"\"\n\n        if \"generatedSources\" not in source_data:\n            return\n        sources = source_data[\"generatedSources\"]\n        for source in sources:\n            full_contract_src_maps = SolidityContract.get_full_contract_src_maps(\n                SolcAST(source[\"ast\"])\n            )\n            indices_data[source[\"id\"]] = SolidityFile(\n                source[\"name\"], source[\"contents\"], full_contract_src_maps\n            )\n\n    @staticmethod\n    def get_solc_indices(input_file: str, data: Dict) -> Dict:\n        \"\"\"\n        Returns solc file indices\n        \"\"\"\n        indices: Dict = {}\n        for contract_data in data[\"contracts\"].values():\n            for source_data in contract_data.values():\n                SolidityContract.get_sources(indices, source_data[\"evm\"][\"bytecode\"])\n                SolidityContract.get_sources(\n                    indices, source_data[\"evm\"][\"deployedBytecode\"]\n                )\n        for source in data[\"sources\"].values():\n            source = SolcSource(source)\n            full_contract_src_maps = SolidityContract.get_full_contract_src_maps(\n                source.ast\n            )\n            if source.ast.abs_path is not None:\n                abs_path = source.ast.abs_path\n            else:\n                abs_path = input_file\n\n            with open(abs_path, \"rb\") as f:\n                code = f.read()\n                indices[source.id] = SolidityFile(\n                    abs_path,\n                    code.decode(\"utf-8\"),\n                    full_contract_src_maps,\n                )\n        return indices\n\n    @staticmethod\n    def get_full_contract_src_maps(ast: SolcAST) -> Set[str]:\n        \"\"\"\n        Takes a solc AST and gets the src mappings for all the contracts defined in the top level of the ast\n        :param ast: AST of the contract\n        :return: The source maps\n        \"\"\"\n        source_maps = set()\n        if ast.node_type == \"SourceUnit\":\n            for child in ast.nodes:\n                if child.get(\"contractKind\"):\n                    source_maps.add(child[\"src\"])\n        elif ast.node_type == \"YulBlock\":\n            for child in ast[\"statements\"]:\n                source_maps.add(child[\"src\"])\n\n        return source_maps\n\n    def get_source_info(self, address, constructor=False):\n        \"\"\"\n\n        :param address:\n        :param constructor:\n        :return:\n        \"\"\"\n\n        disassembly = self.creation_disassembly if constructor else self.disassembly\n        mappings = self.constructor_mappings if constructor else self.mappings\n        index = helper.get_instruction_index(disassembly.instruction_list, address)\n\n        if index is None or index >= len(mappings):\n            # TODO: Find why this scenario happens. Possibly an external call\n            return None\n\n        file_index = mappings[index].solidity_file_idx\n\n        if file_index == -1:\n            # If issue is detected in an internal file\n            return None\n\n        solidity_file = self.solc_indices[file_index]\n        filename = solidity_file.filename\n\n        offset = mappings[index].offset\n        length = mappings[index].length\n\n        code = solidity_file.data.encode(\"utf-8\")[offset : offset + length].decode(\n            \"utf-8\", errors=\"ignore\"\n        )\n        lineno = mappings[index].lineno\n        return SourceCodeInfo(filename, lineno, code, mappings[index].solc_mapping)\n\n    def _is_autogenerated_code(self, offset: int, length: int, file_index: int) -> bool:\n        \"\"\"\n        Checks whether the code is autogenerated or not\n        :param offset: offset of the code\n        :param length: length of the code\n        :param file_index: file the code corresponds to\n        :return: True if the code is internally generated, else false\n        \"\"\"\n\n        if file_index == -1:\n            return True\n        # Handle the common code src map for the entire code.\n        if (\n            \"{}:{}:{}\".format(offset, length, file_index)\n            in self.solc_indices[file_index].full_contract_src_maps\n        ):\n            return True\n\n        return False\n\n    def _get_solc_mappings(self, srcmap, constructor=False):\n        \"\"\"\n\n        :param srcmap:\n        :param constructor:\n        \"\"\"\n        mappings = self.constructor_mappings if constructor else self.mappings\n        prev_item = \"\"\n        for item in srcmap:\n            if item == \"\":\n                item = prev_item\n            mapping = item.split(\":\")\n\n            if len(mapping) > 0 and len(mapping[0]) > 0:\n                offset = int(mapping[0])\n\n            if len(mapping) > 1 and len(mapping[1]) > 0:\n                length = int(mapping[1])\n\n            if len(mapping) > 2 and len(mapping[2]) > 0:\n                idx = int(mapping[2])\n\n            if self._is_autogenerated_code(offset, length, idx):\n                lineno = None\n            else:\n                lineno = (\n                    self.solc_indices[idx]\n                    .data.encode(\"utf-8\")[0:offset]\n                    .count(\"\\n\".encode(\"utf-8\"))\n                    + 1\n                )\n            prev_item = item\n            mappings.append(SourceMapping(idx, offset, length, lineno, item))\n"
  },
  {
    "path": "mythril/support/__init__.py",
    "content": ""
  },
  {
    "path": "mythril/support/loader.py",
    "content": "\"\"\"This module contains the dynamic loader logic to get on-chain storage data\nand dependencies.\"\"\"\n\nimport functools\nimport logging\nimport re\nfrom typing import Optional\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.ethereum.interface.rpc.client import EthJsonRpc\n\nLRU_CACHE_SIZE = 4096\n\nlog = logging.getLogger(__name__)\n\n\nclass DynLoader:\n    \"\"\"The dynamic loader class.\"\"\"\n\n    def __init__(self, eth: Optional[EthJsonRpc], active=True):\n        \"\"\"\n\n        :param eth:\n        :param active:\n        \"\"\"\n        self.eth = eth\n        self.active = active\n\n    @functools.lru_cache(LRU_CACHE_SIZE)\n    def read_storage(self, contract_address: str, index: int) -> str:\n        \"\"\"\n\n        :param contract_address:\n        :param index:\n        :return:\n        \"\"\"\n        if not self.active:\n            raise ValueError(\"Loader is disabled\")\n        if not self.eth:\n            raise ValueError(\"Cannot load from the storage when eth is None\")\n\n        value = self.eth.eth_getStorageAt(\n            contract_address, position=index, block=\"latest\"\n        )\n        if value.startswith(\"0x\"):\n            value = \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n        return value\n\n    @functools.lru_cache(LRU_CACHE_SIZE)\n    def read_balance(self, address: str) -> str:\n        \"\"\"\n\n        :param address:\n        :return:\n        \"\"\"\n        if not self.active:\n            raise ValueError(\"Cannot load from storage when the loader is disabled\")\n        if not self.eth:\n            raise ValueError(\n                \"Cannot load from the chain when eth is None, please use rpc, or specify infura-id\"\n            )\n\n        return self.eth.eth_getBalance(address)\n\n    @functools.lru_cache(LRU_CACHE_SIZE)\n    def dynld(self, dependency_address: str) -> Optional[Disassembly]:\n        \"\"\"\n        :param dependency_address:\n        :return:\n        \"\"\"\n        if not self.active:\n            raise ValueError(\"Loader is disabled\")\n        if not self.eth:\n            raise ValueError(\n                \"Cannot load from the chain when eth is None, please use rpc, or specify infura-id\"\n            )\n\n        log.debug(\"Dynld at contract %s\", dependency_address)\n\n        # Ensure that dependency_address is the correct length, with 0s prepended as needed.\n\n        if isinstance(dependency_address, int):\n            dependency_address = \"0x{:040X}\".format(dependency_address)\n        else:\n            dependency_address = (\n                \"0x\" + \"0\" * (42 - len(dependency_address)) + dependency_address[2:]\n            )\n\n        m = re.match(r\"^(0x[0-9a-fA-F]{40})$\", dependency_address)\n\n        if m:\n            dependency_address = m.group(1)\n\n        else:\n            return None\n\n        log.debug(\"Dependency address: %s\", dependency_address)\n\n        code = self.eth.eth_getCode(dependency_address)\n\n        if code.startswith(\"0x\"):\n            return None\n        else:\n            return Disassembly(code)\n"
  },
  {
    "path": "mythril/support/lock.py",
    "content": "import errno\nimport os\nimport time\n\n\"\"\"\ncredits: https://github.com/dmfrey/FileLock\n\"\"\"\n\n\nclass LockFileException(Exception):\n    pass\n\n\nclass LockFile(object):\n    \"\"\"\n    Locks files.\n    \"\"\"\n\n    def __init__(self, file_name, timeout=100, delay=0.05):\n        \"\"\"\n        Initialises the file locker\n        \"\"\"\n        if timeout is not None and delay is None:\n            raise ValueError(\"If timeout is not None, then delay must not be None.\")\n        self.is_locked = False\n        self.lockfile = os.path.join(os.getcwd(), f\"{file_name}.lock\")\n        self.file_name = file_name\n        self.timeout = timeout\n        self.delay = delay\n\n    def acquire(self):\n        \"\"\"\n        Acquires a lock when possible.\n        \"\"\"\n        start_time = time.time()\n        while True:\n            try:\n                self.fd = os.open(self.lockfile, os.O_CREAT | os.O_EXCL | os.O_RDWR)\n                self.is_locked = True\n                break\n            except OSError as e:\n                if e.errno != errno.EEXIST:\n                    raise\n                if (time.time() - start_time) >= self.timeout:\n                    raise LockFileException(\n                        f\"Stuck for more than {self.timeout} seconds waiting to unlock the file {self.filename}.\"\n                    )\n                time.sleep(self.delay)\n\n    def release(self):\n        \"\"\"\n        Releases the lock\n        \"\"\"\n        if self.is_locked:\n            os.close(self.fd)\n            os.unlink(self.lockfile)\n            self.is_locked = False\n\n    def __enter__(self):\n        \"\"\"\n        Lock gets acquired at the `with` statement.\n        \"\"\"\n        if not self.is_locked:\n            self.acquire()\n        return self\n\n    def __exit__(self, type, value, traceback):\n        \"\"\"\n        Lock gets released at the end of the `with` block\n        \"\"\"\n        if self.is_locked:\n            self.release()\n\n    def __del__(self):\n        \"\"\"\n        Releases the lock during deletion.\n        \"\"\"\n        self.release()\n"
  },
  {
    "path": "mythril/support/model.py",
    "content": "import logging\nimport os\nimport sys\nfrom functools import lru_cache\nfrom multiprocessing import TimeoutError\nfrom multiprocessing.pool import ThreadPool\nfrom pathlib import Path\n\nfrom z3 import sat, unknown\n\nfrom mythril.exceptions import SolverTimeOutException, UnsatError\nfrom mythril.laser.ethereum.time_handler import time_handler\nfrom mythril.laser.smt import And, Optimize, simplify\nfrom mythril.support.support_args import args\nfrom mythril.support.support_utils import ModelCache\n\nlog = logging.getLogger(__name__)\n\n\nmodel_cache = ModelCache()\n\n\ndef solver_worker(\n    constraints,\n    minimize=(),\n    maximize=(),\n    solver_timeout=None,\n):\n    \"\"\"\n    Returns a model based on given constraints as a tuple\n    :param constraints: Tuple of constraints\n    :param minimize: Tuple of minimization conditions\n    :param maximize: Tuple of maximization conditions\n    :param solver_timeout: The timeout for solver\n    :return:\n    \"\"\"\n    s = Optimize()\n    s.set_timeout(solver_timeout)\n\n    for constraint in constraints:\n        s.add(constraint)\n    for e in minimize:\n        s.minimize(e)\n    for e in maximize:\n        s.maximize(e)\n    if args.solver_log:\n        Path(args.solver_log).mkdir(parents=True, exist_ok=True)\n        constraint_hash_input = tuple(\n            list(constraints)\n            + list(minimize)\n            + list(maximize)\n            + [len(constraints), len(minimize), len(maximize)]\n        )\n        with open(\n            args.solver_log + f\"/{abs(hash(constraint_hash_input))}.smt2\", \"w\"\n        ) as f:\n            f.write(s.sexpr())\n\n    result = s.check()\n    return result, s\n\n\n@lru_cache(maxsize=2**23)\ndef get_model(\n    constraints,\n    minimize=(),\n    maximize=(),\n    solver_timeout=None,\n):\n    \"\"\"\n    Returns a model based on given constraints as a tuple\n    :param constraints: Tuple of constraints\n    :param minimize: Tuple of minimization conditions\n    :param maximize: Tuple of maximization conditions\n    :param solver_timeout: The solver timeout\n    :return:\n    \"\"\"\n\n    solver_timeout = solver_timeout or args.solver_timeout\n    solver_timeout = min(solver_timeout, time_handler.time_remaining())\n    if solver_timeout <= 0:\n        raise SolverTimeOutException\n    for constraint in constraints:\n        if isinstance(constraint, bool) and not constraint:\n            raise UnsatError\n\n    if isinstance(constraints, tuple) is False:\n        constraints = constraints.get_all_constraints()\n    constraints = [\n        constraint\n        for constraint in constraints\n        if isinstance(constraint, bool) is False\n    ]\n\n    if len(maximize) + len(minimize) == 0:\n        ret_model = model_cache.check_quick_sat(simplify(And(*constraints)).raw)\n        if ret_model:\n            return ret_model\n    pool = ThreadPool(1)\n    try:\n        thread_result = pool.apply_async(\n            solver_worker, args=(constraints, minimize, maximize, solver_timeout)\n        )\n        try:\n            result, s = thread_result.get(solver_timeout)\n        except TimeoutError:\n            result = unknown\n        except Exception:\n            log.warning(\"Encountered an exception while solving expression using z3\")\n            result = unknown\n    finally:\n        # This is to prevent any segmentation faults from being displayed from z3\n        sys.stdout = open(os.devnull, \"w\")\n        sys.stderr = open(os.devnull, \"w\")\n        pool.terminate()\n        sys.stdout = sys.__stdout__\n        sys.stderr = sys.__stderr__\n\n    if result == sat:\n        model_cache.model_cache.put(s.model(), 1)\n        return s.model()\n    elif result == unknown:\n        log.debug(\"Timeout/Error encountered while solving expression using z3\")\n        raise SolverTimeOutException\n    raise UnsatError\n"
  },
  {
    "path": "mythril/support/opcodes.py",
    "content": "from typing import Dict\n\nZ_OPERATOR_TUPLE = (0, 1)\nUN_OPERATOR_TUPLE = (1, 1)\nBIN_OPERATOR_TUPLE = (2, 1)\nT_OPERATOR_TUPLE = (3, 1)\nGAS = \"gas\"\nSTACK = \"stack\"\nADDRESS = \"address\"\n\n# Gas tuple contains (min_gas, max_gas)\n# stack tuple contains (no_of_elements_popped, no_of_elements_pushed)\n\n# TODO: Make this more specific when TypedDict supports key re-usage.\nOPCODES: Dict = {\n    \"STOP\": {GAS: (0, 0), STACK: (0, 0), ADDRESS: 0x00},\n    \"ADD\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x01},\n    \"MUL\": {GAS: (5, 5), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x02},\n    \"SUB\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x03},\n    \"DIV\": {GAS: (5, 5), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x04},\n    \"SDIV\": {GAS: (5, 5), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x05},\n    \"MOD\": {GAS: (5, 5), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x06},\n    \"SMOD\": {GAS: (5, 5), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x07},\n    \"ADDMOD\": {GAS: (8, 8), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x08},\n    \"MULMOD\": {GAS: (8, 8), STACK: T_OPERATOR_TUPLE, ADDRESS: 0x09},\n    \"EXP\": {\n        GAS: (10, 340),\n        STACK: BIN_OPERATOR_TUPLE,\n        ADDRESS: 0x0A,\n    },  # exponent max 2^32\n    \"SIGNEXTEND\": {GAS: (5, 5), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x0B},\n    \"LT\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x10},\n    \"GT\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x11},\n    \"SLT\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x12},\n    \"SGT\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x13},\n    \"EQ\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x14},\n    \"ISZERO\": {GAS: (3, 3), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x15},\n    \"AND\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x16},\n    \"OR\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x17},\n    \"XOR\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x18},\n    \"NOT\": {GAS: (3, 3), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x19},\n    \"BYTE\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x1A},\n    \"SHL\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x1B},\n    \"SHR\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x1C},\n    \"SAR\": {GAS: (3, 3), STACK: BIN_OPERATOR_TUPLE, ADDRESS: 0x1D},\n    \"SHA3\": {\n        GAS: (\n            30,\n            30 + 6 * 8,\n        ),  # max can be larger, but usually storage location with 8 words\n        STACK: BIN_OPERATOR_TUPLE,\n        ADDRESS: 0x20,\n    },\n    \"ADDRESS\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x30},\n    \"BALANCE\": {GAS: (700, 700), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x31},\n    \"ORIGIN\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x32},\n    \"CALLER\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x33},\n    \"CALLVALUE\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x34},\n    \"CALLDATALOAD\": {GAS: (3, 3), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x35},\n    \"CALLDATASIZE\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x36},\n    \"CALLDATACOPY\": {\n        GAS: (2, 2 + 3 * 768),  # https://ethereum.stackexchange.com/a/47556\n        STACK: (3, 0),\n        ADDRESS: 0x37,\n    },\n    \"CODESIZE\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x38},\n    \"CODECOPY\": {\n        GAS: (2, 2 + 3 * 768),  # https://ethereum.stackexchange.com/a/47556,\n        STACK: (3, 0),\n        ADDRESS: 0x39,\n    },\n    \"GASPRICE\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x3A},\n    \"EXTCODESIZE\": {GAS: (700, 700), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x3B},\n    \"EXTCODECOPY\": {\n        GAS: (700, 700 + 3 * 768),  # https://ethereum.stackexchange.com/a/47556\n        STACK: (4, 0),\n        ADDRESS: 0x3C,\n    },\n    \"RETURNDATASIZE\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x3D},\n    \"RETURNDATACOPY\": {GAS: (3, 3), STACK: (3, 0), ADDRESS: 0x3E},\n    \"EXTCODEHASH\": {GAS: (700, 700), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x3F},\n    \"BLOCKHASH\": {GAS: (20, 20), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x40},\n    \"COINBASE\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x41},\n    \"TIMESTAMP\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x42},\n    \"NUMBER\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x43},\n    \"DIFFICULTY\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x44},\n    \"GASLIMIT\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x45},\n    \"CHAINID\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x46},\n    \"SELFBALANCE\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x47},\n    \"BASEFEE\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x48},\n    \"POP\": {GAS: (2, 2), STACK: (1, 0), ADDRESS: 0x50},\n    # assume 1KB memory r/w cost as upper bound\n    \"MLOAD\": {GAS: (3, 96), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x51},\n    \"MSTORE\": {GAS: (3, 98), STACK: (2, 0), ADDRESS: 0x52},\n    \"MSTORE8\": {GAS: (3, 98), STACK: (2, 0), ADDRESS: 0x53},\n    # assume 64 byte r/w cost as upper bound\n    \"SLOAD\": {GAS: (800, 800), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x54},\n    \"SSTORE\": {GAS: (5000, 25000), STACK: (2, 0), ADDRESS: 0x55},\n    \"JUMP\": {GAS: (8, 8), STACK: (1, 0), ADDRESS: 0x56},\n    \"JUMPI\": {GAS: (10, 10), STACK: (2, 0), ADDRESS: 0x57},\n    \"PC\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x58},\n    \"MSIZE\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x59},\n    \"GAS\": {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x5A},\n    \"JUMPDEST\": {GAS: (1, 1), STACK: (0, 0), ADDRESS: 0x5B},\n    \"TLOAD\": {GAS: (100, 100), STACK: UN_OPERATOR_TUPLE, ADDRESS: 0x5C},\n    \"TSTORE\": {GAS: (100, 100), STACK: (2, 0), ADDRESS: 0x5D},\n    # apparently Solidity only allows byte32 as input to the log\n    # function. Virtually it could be as large as the block gas limit\n    # allows, but let's stick to the reasonable standard here.\n    # https://ethereum.stackexchange.com/a/1691\n    \"LOG0\": {GAS: (375, 375 + 8 * 32), STACK: (2, 0), ADDRESS: 0xA0},\n    \"LOG1\": {GAS: (2 * 375, 2 * 375 + 8 * 32), STACK: (3, 0), ADDRESS: 0xA1},\n    \"LOG2\": {GAS: (3 * 375, 3 * 375 + 8 * 32), STACK: (4, 0), ADDRESS: 0xA2},\n    \"LOG3\": {GAS: (4 * 375, 4 * 375 + 8 * 32), STACK: (5, 0), ADDRESS: 0xA3},\n    \"LOG4\": {GAS: (5 * 375, 5 * 375 + 8 * 32), STACK: (6, 0), ADDRESS: 0xA4},\n    \"CREATE\": {GAS: (32000, 32000), STACK: T_OPERATOR_TUPLE, ADDRESS: 0xF0},\n    \"CREATE2\": {\n        GAS: (32000, 32000),  # TODO: Make the gas values dynamic\n        STACK: (4, 1),\n        ADDRESS: 0xF5,\n    },\n    \"CALL\": {GAS: (700, 700 + 9000 + 25000), STACK: (7, 1), ADDRESS: 0xF1},\n    \"CALLCODE\": {GAS: (700, 700 + 9000 + 25000), STACK: (7, 1), ADDRESS: 0xF2},\n    \"RETURN\": {GAS: (0, 0), STACK: (2, 0), ADDRESS: 0xF3},\n    \"DELEGATECALL\": {GAS: (700, 700 + 9000 + 25000), STACK: (6, 1), ADDRESS: 0xF4},\n    \"STATICCALL\": {GAS: (700, 700 + 9000 + 25000), STACK: (6, 1), ADDRESS: 0xFA},\n    \"REVERT\": {GAS: (0, 0), STACK: (2, 0), ADDRESS: 0xFD},\n    \"SELFDESTRUCT\": {GAS: (5000, 30000), STACK: (1, 0), ADDRESS: 0xFF},\n    \"INVALID\": {GAS: (0, 0), STACK: (0, 0), ADDRESS: 0xFE},\n}\n\nOPCODES[\"PUSH0\"] = {GAS: (2, 2), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x5F}\nfor i in range(1, 33):\n    OPCODES[f\"PUSH{i}\"] = {GAS: (3, 3), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x5F + i}\n\nfor i in range(1, 17):\n    OPCODES[f\"DUP{i}\"] = {GAS: (3, 3), STACK: (0, 0), ADDRESS: 0x7F + i}\n    OPCODES[f\"SWAP{i}\"] = {GAS: (3, 3), STACK: Z_OPERATOR_TUPLE, ADDRESS: 0x8F + i}\n\nADDRESS_OPCODE_MAPPING = {}\n\nfor opcode, opcode_data in OPCODES.items():\n    ADDRESS_OPCODE_MAPPING[opcode_data[ADDRESS]] = opcode\n"
  },
  {
    "path": "mythril/support/signatures.py",
    "content": "\"\"\"The Mythril function signature database.\"\"\"\n\nimport functools\nimport logging\nimport multiprocessing\nimport os\nimport sqlite3\nfrom collections import defaultdict\nfrom typing import DefaultDict, Dict, List\n\nfrom mythril.ethereum.util import get_solc_json\n\nlog = logging.getLogger(__name__)\n\nlock = multiprocessing.Lock()\n\n\ndef synchronized(sync_lock):\n    \"\"\"A decorator synchronizing multi-process access to a resource.\"\"\"\n\n    def wrapper(f):\n        \"\"\"The decorator's core function.\n\n        :param f:\n        :return:\n        \"\"\"\n\n        @functools.wraps(f)\n        def inner_wrapper(*args, **kw):\n            \"\"\"\n\n            :param args:\n            :param kw:\n            :return:\n            \"\"\"\n            with sync_lock:\n                return f(*args, **kw)\n\n        return inner_wrapper\n\n    return wrapper\n\n\nclass Singleton(type):\n    \"\"\"A metaclass type implementing the singleton pattern.\"\"\"\n\n    _instances: Dict[\"Singleton\", \"Singleton\"] = dict()\n\n    @synchronized(lock)\n    def __call__(cls, *args, **kwargs):\n        \"\"\"Delegate the call to an existing resource or a new one.\n\n        This is not thread- or process-safe by default. It must be protected with\n        a lock.\n\n        :param args:\n        :param kwargs:\n        :return:\n        \"\"\"\n        if cls not in cls._instances:\n            cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)\n\n        return cls._instances[cls]\n\n\nclass SQLiteDB(object):\n    \"\"\"Simple context manager for sqlite3 databases.\n\n    Commits everything at exit.\n    \"\"\"\n\n    def __init__(self, path):\n        \"\"\"\n\n        :param path:\n        \"\"\"\n        self.path = path\n        self.conn = None\n        self.cursor = None\n\n    def __enter__(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        try:\n            self.conn = sqlite3.connect(self.path)\n        except sqlite3.OperationalError:\n            raise sqlite3.OperationalError(f\"Unable to Connect to path {self.path}\")\n        self.cursor = self.conn.cursor()\n        return self.cursor\n\n    def __exit__(self, exc_class, exc, traceback):\n        \"\"\"\n\n        :param exc_class:\n        :param exc:\n        :param traceback:\n        \"\"\"\n        self.conn.commit()\n        self.conn.close()\n\n    def __repr__(self):\n        return \"<SQLiteDB path={}>\".format(self.path)\n\n\nclass SignatureDB(object, metaclass=Singleton):\n    \"\"\"\"\"\"\n\n    def __init__(self, path: str = None) -> None:\n        \"\"\"\n        :param path:\n        \"\"\"\n\n        # if we're analysing a Solidity file, store its hashes\n        # here to prevent unnecessary lookups\n        self.solidity_sigs: DefaultDict[str, List[str]] = defaultdict(list)\n        if path is None:\n            self.path = os.environ.get(\"MYTHRIL_DIR\") or os.path.join(\n                os.path.expanduser(\"~\"), \".mythril\"\n            )\n        self.path = os.path.join(self.path, \"signatures.db\")\n\n        log.info(\"Using signature database at %s\", self.path)\n        # NOTE: Creates a new DB file if it doesn't exist already\n        with SQLiteDB(self.path) as cur:\n            cur.execute(\n                (\n                    \"CREATE TABLE IF NOT EXISTS signatures\"\n                    \"(byte_sig VARCHAR(10), text_sig VARCHAR(255),\"\n                    \"PRIMARY KEY (byte_sig, text_sig))\"\n                )\n            )\n\n    def __getitem__(self, item: str) -> List[str]:\n        \"\"\"Provide dict interface db[sighash]\n\n        :param item: 4-byte signature string\n        :return: list of matching text signature strings\n        \"\"\"\n        return self.get(byte_sig=item)\n\n    @staticmethod\n    def _normalize_byte_sig(byte_sig: str) -> str:\n        \"\"\"Adds a leading 0x to the byte signature if it's not already there.\n\n        :param byte_sig: 4-byte signature string\n        :return: normalized byte signature string\n        \"\"\"\n        if not byte_sig.startswith(\"0x\"):\n            byte_sig = \"0x\" + byte_sig\n        if not len(byte_sig) == 10:\n            raise ValueError(\n                \"Invalid byte signature %s, must have 10 characters\", byte_sig\n            )\n        return byte_sig\n\n    def add(self, byte_sig: str, text_sig: str) -> None:\n        \"\"\"\n        Adds a new byte - text signature pair to the database.\n        :param byte_sig: 4-byte signature string\n        :param text_sig: resolved text signature\n        :return:\n        \"\"\"\n        byte_sig = self._normalize_byte_sig(byte_sig)\n        with SQLiteDB(self.path) as cur:\n            # ignore new row if it's already in the DB (and would cause a unique constraint error)\n            cur.execute(\n                \"INSERT OR IGNORE INTO signatures (byte_sig, text_sig) VALUES (?,?)\",\n                (byte_sig, text_sig),\n            )\n\n    def get(self, byte_sig: str, online_timeout: int = 2) -> List[str]:\n        \"\"\"Get a function text signature for a byte signature 1) try local\n        cache 2) try online lookup (if enabled; if not flagged as unavailable)\n\n        :param byte_sig: function signature hash as hexstr\n        :param online_timeout: online lookup timeout\n        :return: list of matching function text signatures\n        \"\"\"\n\n        byte_sig = self._normalize_byte_sig(byte_sig)\n\n        # check if we have any Solidity signatures to look up\n        text_sigs = self.solidity_sigs.get(byte_sig)\n        if text_sigs is not None:\n            return text_sigs\n\n        # try lookup in the local DB\n        with SQLiteDB(self.path) as cur:\n            cur.execute(\"SELECT text_sig FROM signatures WHERE byte_sig=?\", (byte_sig,))\n            text_sigs = cur.fetchall()\n\n        if text_sigs:\n            return [t[0] for t in text_sigs]\n\n        return []\n\n    def import_solidity_file(\n        self, file_path: str, solc_binary: str = \"solc\", solc_settings_json: str = None\n    ):\n        \"\"\"Import Function Signatures from solidity source files.\n\n        :param solc_binary:\n        :param solc_settings_json:\n        :param file_path: solidity source code file path\n        :return:\n        \"\"\"\n        solc_json = get_solc_json(file_path, solc_binary, solc_settings_json)\n        self.add_sigs(file_path, solc_json)\n\n    def add_sigs(self, file_path: str, solc_json):\n        for contract in solc_json[\"contracts\"][file_path].values():\n            if \"methodIdentifiers\" not in contract[\"evm\"]:\n                continue\n            for name, hash_ in contract[\"evm\"][\"methodIdentifiers\"].items():\n                sig = \"0x{}\".format(hash_)\n                if sig in self.solidity_sigs:\n                    self.solidity_sigs[sig].append(name)\n                else:\n                    self.solidity_sigs[sig] = [name]\n                self.add(sig, name)\n\n    def __repr__(self):\n        return \"<SignatureDB path='{}'>\".format(self.path)\n"
  },
  {
    "path": "mythril/support/source_support.py",
    "content": "from mythril.ethereum.evmcontract import EVMContract\nfrom mythril.solidity.soliditycontract import SolidityContract\n\n\nclass Source:\n    \"\"\"Class to handle to source data\"\"\"\n\n    def __init__(self, source_type=None, source_format=None, source_list=None):\n        \"\"\"\n        :param source_type: whether it is a solidity-file or evm-bytecode\n        :param source_format: whether it is bytecode, ethereum-address or text\n        :param source_list: List of files\n        :param meta: meta data\n        \"\"\"\n        self.source_type = source_type\n        self.source_format = source_format\n        self.source_list = source_list or []\n        self._source_hash = []\n\n    def get_source_from_contracts_list(self, contracts):\n        \"\"\"\n        get the source data from the contracts list\n        :param contracts: the list of contracts\n        :return:\n        \"\"\"\n        if contracts is None or len(contracts) == 0:\n            return\n        if isinstance(contracts[0], SolidityContract):\n            self.source_type = \"solidity-file\"\n            self.source_format = \"text\"\n            for contract in contracts:\n                self.source_list += [\n                    file.filename for file in contract.solc_indices.values()\n                ]\n                self._source_hash.append(contract.bytecode_hash)\n                self._source_hash.append(contract.creation_bytecode_hash)\n        elif isinstance(contracts[0], EVMContract):\n            self.source_format = \"evm-byzantium-bytecode\"\n            self.source_type = (\n                \"ethereum-address\"\n                if len(contracts[0].name) == 42 and contracts[0].name.startswith(\"0x\")\n                else \"raw-bytecode\"\n            )\n            for contract in contracts:\n                if contract.creation_code:\n                    self.source_list.append(contract.creation_bytecode_hash)\n                if contract.code:\n                    self.source_list.append(contract.bytecode_hash)\n            self._source_hash = self.source_list\n\n        else:\n            assert False  # Fail hard\n\n    def get_source_index(self, bytecode_hash: str) -> int:\n        \"\"\"\n        Find the contract index in the list\n        :param bytecode_hash: The contract hash\n        :return: The index of the contract in the _source_hash list\n        \"\"\"\n        # TODO: Add this part to exception logs\n        try:\n            return self._source_hash.index(bytecode_hash)\n        except ValueError:\n            self._source_hash.append(bytecode_hash)\n            return len(self._source_hash) - 1\n"
  },
  {
    "path": "mythril/support/start_time.py",
    "content": "from time import time\n\nfrom mythril.support.support_utils import Singleton\n\n\nclass StartTime(metaclass=Singleton):\n    \"\"\"Maintains the start time of the current contract in execution\"\"\"\n\n    def __init__(self):\n        self.global_start_time = time()\n"
  },
  {
    "path": "mythril/support/support_args.py",
    "content": "from typing import List\n\nfrom mythril.support.support_utils import Singleton\n\n\nclass Args(object, metaclass=Singleton):\n    \"\"\"\n    This module helps in preventing args being sent through multiple of classes to reach\n    any analysis/laser module\n    \"\"\"\n\n    def __init__(self):\n        self.solver_timeout = 10000\n        self.pruning_factor = None\n        self.unconstrained_storage = False\n        self.parallel_solving = False\n        self.call_depth_limit = 3\n        self.disable_iprof = False\n        self.solver_log = None\n        self.transaction_sequences: List[List[str]] = None\n        self.use_integer_module = True\n        self.use_issue_annotations = False\n        self.solc_args = None\n        self.disable_coverage_strategy = False\n        self.disable_mutation_pruner = False\n        self.incremental_txs = True\n        self.enable_summaries = False\n        self.enable_state_merge = False\n\n\nargs = Args()\n"
  },
  {
    "path": "mythril/support/support_utils.py",
    "content": "\"\"\"This module contains utility functions for the Mythril support package.\"\"\"\n\nimport logging\nfrom collections import OrderedDict\nfrom copy import deepcopy\nfrom functools import lru_cache\nfrom typing import Dict\n\nfrom eth_hash.auto import keccak\nfrom z3 import is_true\n\nlog = logging.getLogger(__name__)\n\n\nclass Singleton(type):\n    \"\"\"A metaclass type implementing the singleton pattern.\"\"\"\n\n    _instances: Dict = {}\n\n    def __call__(cls, *args, **kwargs):\n        \"\"\"Delegate the call to an existing resource or a new one.\n\n        This is not thread- or process-safe by default. It must be protected with\n        a lock.\n\n        :param args:\n        :param kwargs:\n        :return:\n        \"\"\"\n        if cls not in cls._instances:\n            cls._instances[cls] = super(Singleton, cls).__call__(*args, **kwargs)\n        return cls._instances[cls]\n\n\nclass LRUCache:\n    def __init__(self, size):\n        self.size = size\n        self.lru_cache = OrderedDict()\n\n    def get(self, key):\n        try:\n            value = self.lru_cache.pop(key)\n            self.lru_cache[key] = value\n            return value\n        except KeyError:\n            return -1\n\n    def put(self, key, value):\n        try:\n            self.lru_cache.pop(key)\n        except KeyError:\n            if len(self.lru_cache) >= self.size:\n                self.lru_cache.popitem(last=False)\n        self.lru_cache[key] = value\n\n\nclass ModelCache:\n    def __init__(self):\n        self.model_cache = LRUCache(size=100)\n\n    @lru_cache(maxsize=2**10)\n    def check_quick_sat(self, constraints) -> bool:\n        for model in reversed(self.model_cache.lru_cache.keys()):\n            model_copy = deepcopy(model)\n            if is_true(model_copy.eval(constraints, model_completion=True)):\n                self.model_cache.put(model, self.model_cache.get(model) + 1)\n                return model\n        return False\n\n    def put(self, key, value):\n        self.model_cache.put(key, value)\n\n\n@lru_cache(maxsize=2**10)\ndef get_code_hash(code) -> str:\n    \"\"\"\n    :param code: bytecode\n    :return: Returns hash of the given bytecode\n    \"\"\"\n    if isinstance(code, tuple):\n        # Temporary hack, since we cannot find symbols of sha3\n        return str(hash(code))\n\n    code = code[2:] if code.startswith(\"0x\") else code\n    try:\n        hash_ = keccak(bytes.fromhex(code))\n        return \"0x\" + hash_.hex()\n    except ValueError:\n        log.debug(\"Unable to change the bytecode to bytes. Bytecode: {}\".format(code))\n        return \"\"\n\n\ndef sha3(value):\n    if isinstance(value, str):\n        if value.startswith(\"0x\"):\n            new_hash = keccak(bytes.fromhex(value))\n        else:\n            new_hash = keccak(value.encode())\n    else:\n        new_hash = keccak(value)\n    return new_hash\n\n\ndef zpad(x, l):\n    \"\"\"\n    Left zero pad value `x` at least to length `l`.\n    \"\"\"\n    return b\"\\x00\" * max(0, l - len(x)) + x\n\n\ndef rzpad(value, total_length):\n    \"\"\"\n    Right zero pad value `x` at least to length `l`.\n    \"\"\"\n    return value + b\"\\x00\" * max(0, total_length - len(value))\n"
  },
  {
    "path": "pyproject.toml",
    "content": "[tool.ruff]\ntarget-version = \"py37\"\n\n[tool.ruff.lint]\nfixable = [\"ALL\"]\n# List of rules https://docs.astral.sh/ruff/rules/\nselect = [\"F\", \"I\"]\n\n[tool.ruff.lint.per-file-ignores]\n# Fine for __init__.py files:\n# * F401: Module imported but unused\n# * F403: 'from .module import *'\n# (resolvable via __all__ list,\n# see https://docs.python.org/3/tutorial/modules.html#importing-from-a-package)\n\"mythril/**/__init__.py\" = [\"F401\", \"F403\"]\n"
  },
  {
    "path": "requirements.txt",
    "content": "blake2b-py>=0.2.0,<1\ncoloredlogs>=10.0\ncoincurve>=13.0.0\ncytoolz>=0.12.0\nasn1crypto>=0.22.0\nconfigparser>=3.5.0\npy_ecc>=5.0.0\neth-abi>=5.1.0\neth-hash>=0.3.1,<0.8.0\neth-utils>=2.0.0\nhexbytes<1.4.0\njinja2>=2.9\nMarkupSafe<3.1.0\nmypy-extensions==1.0.0\nnumpy\npersistent>=4.2.0\npy-flags\npy-evm==0.10.1b2\npy-solc-x<3.0.0\npy-solc\npyparsing>=2.0.2,<4\nrequests\nrlp>=3,<5\nsemantic_version\nz3-solver>=4.8.8.0,<=4.13.4.0\nmatplotlib\ncertifi>=2020.06.20\n"
  },
  {
    "path": "setup.py",
    "content": "# -*- coding: utf-8 -*-\n\"\"\"install mythril and deploy source-dist and wheel to pypi.python.org.\n\ndeps (requires up2date version):\n    *) pip install --upgrade pip wheel setuptools twine\npublish to pypi w/o having to convert Readme.md to RST:\n    1) #> python setup.py sdist bdist_wheel\n    2) #> twine upload dist/*   #<specify bdist_wheel version to upload>; #optional --repository <testpypi> or  --repository-url <testpypi-url>\n\"\"\"\n\nimport io\nimport os\nimport sys\n\nfrom setuptools import find_packages, setup\nfrom setuptools.command.install import install as _install\n\n# Package meta-data.\nNAME = \"mythril\"\nDESCRIPTION = \"Security analysis tool for Ethereum smart contracts\"\nURL = \"https://github.com/ConsenSys/mythril\"\nAUTHOR = \"ConsenSys Dilligence\"\nAUTHOR_MAIL = None\nREQUIRES_PYTHON = \">=3.7.0\"\nhere = os.path.abspath(os.path.dirname(__file__))\n\n\n# What packages are required for this module to be executed?\ndef get_requirements():\n    \"\"\"\n    Return requirements as list.\n    Handles cases where git links are used.\n\n    \"\"\"\n    with open(os.path.join(here, \"requirements.txt\")) as f:\n        packages = []\n        for line in f:\n            line = line.strip()\n            # let's also ignore empty lines and comments\n            if not line or line.startswith(\"#\"):\n                continue\n            if \"https://\" not in line:\n                packages.append(line)\n                continue\n\n            rest, package_name = line.split(\"#egg=\")[0], line.split(\"#egg=\")[1]\n            if \"-e\" in rest:\n                rest = rest.split(\"-e\")[1]\n            package_name = package_name + \"@\" + rest\n            packages.append(package_name)\n    return packages\n\n\nREQUIRED = get_requirements()\n\nTESTS_REQUIRE = [\"mypy==0.782\", \"pytest>=3.6.0\", \"pytest_mock\", \"pytest-cov\"]\n\n# What packages are optional?\nEXTRAS = {}\n\n# If version is set to None then it will be fetched from __version__.py\nVERSION = None\n\n\n# Import the README and use it as the long-description.\n# Note: this will only work if 'README.md' is present in your MANIFEST.in file!\ntry:\n    with io.open(os.path.join(here, \"README.md\"), encoding=\"utf-8\") as f:\n        long_description = \"\\n\" + f.read()\nexcept FileNotFoundError:\n    long_description = DESCRIPTION\n\n\n# Load the package's __version__.py module as a dictionary.\nabout = {}\nif not VERSION:\n    project_slug = NAME.lower().replace(\"-\", \"_\").replace(\" \", \"_\")\n    with open(os.path.join(here, project_slug, \"__version__.py\")) as f:\n        exec(f.read(), about)\nelse:\n    about[\"__version__\"] = VERSION\n\n\n# Package version (vX.Y.Z). It must match git tag being used for CircleCI\n# deployment; otherwise the build will failed.\nclass VerifyVersionCommand(_install):\n    \"\"\"Custom command to verify that the git tag matches our version.\"\"\"\n\n    description = \"verify that the git tag matches our version\"\n\n    def run(self):\n        \"\"\"\"\"\"\n        tag = os.getenv(\"CIRCLE_TAG\")\n\n        if tag != about[\"__version__\"]:\n            info = \"Git tag: {0} does not match the version of this app: {1}\".format(\n                tag, about[\"__version__\"]\n            )\n            sys.exit(info)\n\n\nsetup(\n    name=NAME,\n    version=about[\"__version__\"][1:],\n    description=DESCRIPTION,\n    long_description=long_description,\n    long_description_content_type=\"text/markdown\",  # requires twine and recent setuptools\n    url=URL,\n    author=AUTHOR,\n    author_mail=AUTHOR_MAIL,\n    license=\"MIT\",\n    classifiers=[\n        \"Development Status :: 3 - Alpha\",\n        \"Intended Audience :: Science/Research\",\n        \"Topic :: Software Development :: Disassemblers\",\n        \"License :: OSI Approved :: MIT License\",\n        \"Programming Language :: Python :: 3.6\",\n        \"Programming Language :: Python :: 3.7\",\n        \"Programming Language :: Python :: 3.8\",\n        \"Programming Language :: Python :: 3.9\",\n        \"Programming Language :: Python :: 3.10\",\n        \"Programming Language :: Python :: 3.11\",\n        \"Programming Language :: Python :: 3.12\",\n    ],\n    keywords=\"hacking disassembler security ethereum\",\n    packages=find_packages(exclude=[\"contrib\", \"docs\", \"tests\"]),\n    install_requires=REQUIRED,\n    tests_require=TESTS_REQUIRE,\n    python_requires=REQUIRES_PYTHON,\n    extras_require=EXTRAS,\n    package_data={\"mythril.analysis.templates\": [\"*\"], \"mythril.support.assets\": [\"*\"]},\n    include_package_data=True,\n    entry_points={\"console_scripts\": [\"myth=mythril.interfaces.cli:main\"]},\n    cmdclass={\"verify\": VerifyVersionCommand},\n)\n"
  },
  {
    "path": "solidity_examples/BECToken.sol",
    "content": "\n/**\n * @title SafeMath\n * @dev Math operations with safety checks that throw on error\n */\nlibrary SafeMath {\n  function mul(uint256 a, uint256 b) internal pure returns (uint256) {\n    uint256 c = a * b;\n    assert(a == 0 || c / a == b);\n    return c;\n  }\n\n  function div(uint256 a, uint256 b) internal pure returns (uint256) {\n    // assert(b > 0); // Solidity automatically throws when dividing by 0\n    uint256 c = a / b;\n    // assert(a == b * c + a % b); // There is no case in which this doesn't hold\n    return c;\n  }\n\n  function sub(uint256 a, uint256 b) internal pure returns (uint256) {\n    assert(b <= a);\n    return a - b;\n  }\n\n  function add(uint256 a, uint256 b) internal pure returns (uint256) {\n    uint256 c = a + b;\n    assert(c >= a);\n    return c;\n  }\n}\n\n/**\n * @title ERC20Basic\n * @dev Simpler version of ERC20 interface\n * @dev see https://github.com/ethereum/EIPs/issues/179\n */\ncontract ERC20Basic {\n  uint256 public totalSupply;\n  function balanceOf(address who) public returns (uint256);\n  function transfer(address to, uint256 value) public returns (bool);\n  event Transfer(address indexed from, address indexed to, uint256 value);\n}\n\n/**\n * @title Basic token\n * @dev Basic version of StandardToken, with no allowances.\n */\ncontract BasicToken is ERC20Basic {\n  using SafeMath for uint256;\n\n  mapping(address => uint256) balances;\n\n  /**\n  * @dev transfer token for a specified address\n  * @param _to The address to transfer to.\n  * @param _value The amount to be transferred.\n  */\n  function transfer(address _to, uint256 _value) public returns (bool) {\n    require(_to != address(0));\n    require(_value > 0 && _value <= balances[msg.sender]);\n\n    // SafeMath.sub will throw if there is not enough balance.\n    balances[msg.sender] = balances[msg.sender].sub(_value);\n    balances[_to] = balances[_to].add(_value);\n    emit Transfer(msg.sender, _to, _value);\n    return true;\n  }\n\n  /**\n  * @dev Gets the balance of the specified address.\n  * @param _owner The address to query the balance of.\n  * @return An uint256 representing the amount owned by the passed address.\n  */\n  function balanceOf(address _owner) public returns (uint256 balance) {\n    return balances[_owner];\n  }\n}\n\n/**\n * @title ERC20 interface\n * @dev see https://github.com/ethereum/EIPs/issues/20\n */\ncontract ERC20 is ERC20Basic {\n  function allowance(address owner, address spender) public returns (uint256);\n  function transferFrom(address from, address to, uint256 value) public returns (bool);\n  function approve(address spender, uint256 value) public returns (bool);\n  event Approval(address indexed owner, address indexed spender, uint256 value);\n}\n\n\n/**\n * @title Standard ERC20 token\n *\n * @dev Implementation of the basic standard token.\n * @dev https://github.com/ethereum/EIPs/issues/20\n * @dev Based on code by FirstBlood: https://github.com/Firstbloodio/token/blob/master/smart_contract/FirstBloodToken.sol\n */\ncontract StandardToken is ERC20, BasicToken {\n\n  mapping (address => mapping (address => uint256)) internal allowed;\n\n\n  /**\n   * @dev Transfer tokens from one address to another\n   * @param _from address The address which you want to send tokens from\n   * @param _to address The address which you want to transfer to\n   * @param _value uint256 the amount of tokens to be transferred\n   */\n  function transferFrom(address _from, address _to, uint256 _value) public returns (bool) {\n    require(_to != address(0));\n    require(_value > 0 && _value <= balances[_from]);\n    require(_value <= allowed[_from][msg.sender]);\n\n    balances[_from] = balances[_from].sub(_value);\n    balances[_to] = balances[_to].add(_value);\n    allowed[_from][msg.sender] = allowed[_from][msg.sender].sub(_value);\n    emit Transfer(_from, _to, _value);\n    return true;\n  }\n\n  /**\n   * @dev Approve the passed address to spend the specified amount of tokens on behalf of msg.sender.\n   *\n   * Beware that changing an allowance with this method brings the risk that someone may use both the old\n   * and the new allowance by unfortunate transaction ordering. One possible solution to mitigate this\n   * race condition is to first reduce the spender's allowance to 0 and set the desired value afterwards:\n   * https://github.com/ethereum/EIPs/issues/20#issuecomment-263524729\n   * @param _spender The address which will spend the funds.\n   * @param _value The amount of tokens to be spent.\n   */\n  function approve(address _spender, uint256 _value) public returns (bool) {\n    allowed[msg.sender][_spender] = _value;\n    emit Approval(msg.sender, _spender, _value);\n    return true;\n  }\n\n  /**\n   * @dev Function to check the amount of tokens that an owner allowed to a spender.\n   * @param _owner address The address which owns the funds.\n   * @param _spender address The address which will spend the funds.\n   * @return A uint256 specifying the amount of tokens still available for the spender.\n   */\n  function allowance(address _owner, address _spender) public returns (uint256 remaining) {\n    return allowed[_owner][_spender];\n  }\n}\n\n/**\n * @title Ownable\n * @dev The Ownable contract has an owner address, and provides basic authorization control\n * functions, this simplifies the implementation of \"user permissions\".\n */\ncontract Ownable {\n  address public owner;\n\n\n  event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n\n  /**\n   * @dev The Ownable constructor sets the original `owner` of the contract to the sender\n   * account.\n   */\n  constructor() public {\n    owner = msg.sender;\n  }\n\n\n  /**\n   * @dev Throws if called by any account other than the owner.\n   */\n  modifier onlyOwner() {\n    require(msg.sender == owner);\n    _;\n  }\n\n\n  /**\n   * @dev Allows the current owner to transfer control of the contract to a newOwner.\n   * @param newOwner The address to transfer ownership to.\n   */\n  function transferOwnership(address newOwner) onlyOwner public {\n    require(newOwner != address(0));\n    emit OwnershipTransferred(owner, newOwner);\n    owner = newOwner;\n  }\n\n}\n\n/**\n * @title Pausable\n * @dev Base contract which allows children to implement an emergency stop mechanism.\n */\ncontract Pausable is Ownable {\n  event Pause();\n  event Unpause();\n\n  bool public paused = false;\n\n\n  /**\n   * @dev Modifier to make a function callable only when the contract is not paused.\n   */\n  modifier whenNotPaused() {\n    require(!paused);\n    _;\n  }\n\n  /**\n   * @dev Modifier to make a function callable only when the contract is paused.\n   */\n  modifier whenPaused() {\n    require(paused);\n    _;\n  }\n\n  /**\n   * @dev called by the owner to pause, triggers stopped state\n   */\n  function pause() onlyOwner whenNotPaused public {\n    paused = true;\n    emit Pause();\n  }\n\n  /**\n   * @dev called by the owner to unpause, returns to normal state\n   */\n  function unpause() onlyOwner whenPaused public {\n    paused = false;\n    emit Unpause();\n  }\n}\n\n/**\n * @title Pausable token\n *\n * @dev StandardToken modified with pausable transfers.\n **/\n\ncontract PausableToken is StandardToken, Pausable {\n\n  function transfer(address _to, uint256 _value) public whenNotPaused returns (bool) {\n    return super.transfer(_to, _value);\n  }\n\n  function transferFrom(address _from, address _to, uint256 _value) public whenNotPaused returns (bool) {\n    return super.transferFrom(_from, _to, _value);\n  }\n\n  function approve(address _spender, uint256 _value) public whenNotPaused returns (bool) {\n    return super.approve(_spender, _value);\n  }\n\n  function batchTransfer(address[] memory _receivers, uint256 _value) public whenNotPaused returns (bool) {\n    uint cnt = _receivers.length;\n    uint256 amount = uint256(cnt) * _value;\n    require(cnt > 0 && cnt <= 20);\n    require(_value > 0 && balances[msg.sender] >= amount);\n\n    balances[msg.sender] = balances[msg.sender].sub(amount);\n    for (uint i = 0; i < cnt; i++) {\n        balances[_receivers[i]] = balances[_receivers[i]].add(_value);\n        emit Transfer(msg.sender, _receivers[i], _value);\n    }\n    return true;\n  }\n}\n\n/**\n * @title Bec Token\n *\n * @dev Implementation of Bec Token based on the basic standard token.\n */\ncontract BecToken is PausableToken {\n    /**\n    * Public variables of the token\n    * The following variables are OPTIONAL vanities. One does not have to include them.\n    * They allow one to customise the token contract & in no way influences the core functionality.\n    * Some wallets/interfaces might not even bother to look at this information.\n    */\n    string public name = \"BeautyChain\";\n    string public symbol = \"BEC\";\n    string public version = '1.0.0';\n    uint8 public decimals = 18;\n\n    /**\n     * @dev Function to check the amount of tokens that an owner allowed to a spender.\n     */\n    constructor() public {\n      totalSupply = 7000000000 * (10**(uint256(decimals)));\n      balances[msg.sender] = totalSupply;    // Give the creator all initial tokens\n    }\n\n    function () external {\n        //if ether is sent to this address, send it back.\n        revert();\n    }\n}\n"
  },
  {
    "path": "solidity_examples/WalletLibrary.sol",
    "content": "//sol Wallet\n// Multi-sig, daily-limited account proxy/wallet.\n// @authors:\n// Gav Wood <g@ethdev.com>\n// inheritable \"property\" contract that enables methods to be protected by requiring the acquiescence of either a\n// single, or, crucially, each of a number of, designated owners.\n// usage:\n// use modifiers onlyowner (just own owned) or onlymanyowners(hash), whereby the same hash must be provided by\n// some number (specified in constructor) of the set of owners (specified in the constructor, modifiable) before the\n// interior is executed.\n\npragma solidity 0.5.0;\n\ncontract WalletEvents {\n  // EVENTS\n\n  // this contract only has six types of events: it can accept a confirmation, in which case\n  // we record owner and operation (hash) alongside it.\n  event Confirmation(address owner, bytes32 operation);\n  event Revoke(address owner, bytes32 operation);\n\n  // some others are in the case of an owner changing.\n  event OwnerChanged(address oldOwner, address newOwner);\n  event OwnerAdded(address newOwner);\n  event OwnerRemoved(address oldOwner);\n\n  // the last one is emitted if the required signatures change\n  event RequirementChanged(uint newRequirement);\n\n  // Funds has arrived into the wallet (record how much).\n  event Deposit(address _from, uint value);\n  // Single transaction going out of the wallet (record who signed for it, how much, and to whom it's going).\n  event SingleTransact(address owner, uint value, address to, bytes data, address created);\n  // 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).\n  event MultiTransact(address owner, bytes32 operation, uint value, address to, bytes data, address created);\n  // Confirmation still needed for a transaction.\n  event ConfirmationNeeded(bytes32 operation, address initiator, uint value, address to, bytes data);\n}\n\ncontract WalletAbi {\n  // Revokes a prior confirmation of the given operation\n  function revoke(bytes32 _operation) external;\n\n  // Replaces an owner `_from` with another `_to`.\n  function changeOwner(address _from, address _to) external;\n\n  function addOwner(address _owner) external;\n\n  function removeOwner(address _owner) external;\n\n  function changeRequirement(uint _newRequired) external;\n\n  function isOwner(address _addr) public returns (bool);\n\n  function hasConfirmed(bytes32 _operation, address _owner) external returns (bool);\n\n  // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.\n  function setDailyLimit(uint _newLimit) external;\n\n  function execute(address _to, uint _value, bytes calldata _data) external returns (bytes32 o_hash);\n  function confirm(bytes32 _h) public returns (bool o_success);\n}\n\ncontract WalletLibrary is WalletEvents {\n  // TYPES\n\n  // struct for the status of a pending operation.\n  struct PendingState {\n    uint yetNeeded;\n    uint ownersDone;\n    uint index;\n  }\n\n  // Transaction structure to remember details of transaction lest it need be saved for a later call.\n  struct Transaction {\n    address to;\n    uint value;\n    bytes data;\n  }\n\n  // MODIFIERS\n\n  // simple single-sig function modifier.\n  modifier onlyowner {\n    if (isOwner(msg.sender))\n      _;\n  }\n  // multi-sig function modifier: the operation must have an intrinsic hash in order\n  // that later attempts can be realised as the same underlying operation and\n  // thus count as confirmations.\n  modifier onlymanyowners(bytes32 _operation) {\n    if (confirmAndCheck(_operation))\n      _;\n  }\n\n  // METHODS\n\n  // gets called when no other function matches\n  function() external payable {\n    // just being sent some cash?\n    if (msg.value > 0)\n      emit Deposit(msg.sender, msg.value);\n  }\n\n  // constructor is given number of sigs required to do protected \"onlymanyowners\" transactions\n  // as well as the selection of addresses capable of confirming them.\n  function initMultiowned(address[] memory _owners, uint _required) public only_uninitialized {\n    m_numOwners = _owners.length + 1;\n    m_owners[1] = uint(msg.sender);\n    m_ownerIndex[uint(msg.sender)] = 1;\n    for (uint i = 0; i < _owners.length; ++i)\n    {\n      m_owners[2 + i] = uint(_owners[i]);\n      m_ownerIndex[uint(_owners[i])] = 2 + i;\n    }\n    m_required = _required;\n  }\n\n  // Revokes a prior confirmation of the given operation\n  function revoke(bytes32 _operation) external {\n    uint ownerIndex = m_ownerIndex[uint(msg.sender)];\n    // make sure they're an owner\n    if (ownerIndex == 0) return;\n    uint ownerIndexBit = 2**ownerIndex;\n    PendingState memory pending = m_pending[_operation];\n    if (pending.ownersDone & ownerIndexBit > 0) {\n      pending.yetNeeded++;\n      pending.ownersDone -= ownerIndexBit;\n      emit Revoke(msg.sender, _operation);\n    }\n  }\n\n  // Replaces an owner `_from` with another `_to`.\n  function changeOwner(address _from, address _to) onlymanyowners(keccak256(msg.data)) external {\n    if (isOwner(_to)) return;\n    uint ownerIndex = m_ownerIndex[uint(_from)];\n    if (ownerIndex == 0) return;\n\n    clearPending();\n    m_owners[ownerIndex] = uint(_to);\n    m_ownerIndex[uint(_from)] = 0;\n    m_ownerIndex[uint(_to)] = ownerIndex;\n    emit OwnerChanged(_from, _to);\n  }\n\n  function addOwner(address _owner) onlymanyowners(keccak256(msg.data)) external {\n    if (isOwner(_owner)) return;\n\n    clearPending();\n    if (m_numOwners >= c_maxOwners)\n      reorganizeOwners();\n    if (m_numOwners >= c_maxOwners)\n      return;\n    m_numOwners++;\n    m_owners[m_numOwners] = uint(_owner);\n    m_ownerIndex[uint(_owner)] = m_numOwners;\n    emit OwnerAdded(_owner);\n  }\n\n  function removeOwner(address _owner) onlymanyowners(keccak256(msg.data)) external {\n    uint ownerIndex = m_ownerIndex[uint(_owner)];\n    if (ownerIndex == 0) return;\n    if (m_required > m_numOwners - 1) return;\n\n    m_owners[ownerIndex] = 0;\n    m_ownerIndex[uint(_owner)] = 0;\n    clearPending();\n    reorganizeOwners(); //make sure m_numOwner is equal to the number of owners and always points to the optimal free slot\n    emit OwnerRemoved(_owner);\n  }\n\n  function changeRequirement(uint _newRequired) onlymanyowners(keccak256(msg.data)) external {\n    if (_newRequired > m_numOwners) return;\n    m_required = _newRequired;\n    clearPending();\n    emit RequirementChanged(_newRequired);\n  }\n\n  // Gets an owner by 0-indexed position (using numOwners as the count)\n  function getOwner(uint ownerIndex) external view returns (address) {\n    return address(m_owners[ownerIndex + 1]);\n  }\n\n  function isOwner(address _addr) public view returns (bool) {\n    return m_ownerIndex[uint(_addr)] > 0;\n  }\n\n  function hasConfirmed(bytes32 _operation, address _owner) external view returns (bool) {\n    PendingState memory pending = m_pending[_operation];\n    uint ownerIndex = m_ownerIndex[uint(_owner)];\n\n    // make sure they're an owner\n    if (ownerIndex == 0) return false;\n\n    // determine the bit to set for this owner.\n    uint ownerIndexBit = 2**ownerIndex;\n    return !(pending.ownersDone & ownerIndexBit == 0);\n  }\n\n  // constructor - stores initial daily limit and records the present day's index.\n  function initDaylimit(uint _limit) public only_uninitialized {\n    m_dailyLimit = _limit;\n    m_lastDay = today();\n  }\n  // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.\n  function setDailyLimit(uint _newLimit) onlymanyowners(keccak256(msg.data)) external {\n    m_dailyLimit = _newLimit;\n  }\n  // resets the amount already spent today. needs many of the owners to confirm.\n  function resetSpentToday() onlymanyowners(keccak256(msg.data)) external {\n    m_spentToday = 0;\n  }\n\n  // throw unless the contract is not yet initialized.\n  modifier only_uninitialized { require(m_numOwners == 0); _; }\n\n  // constructor - just pass on the owner array to the multiowned and\n  // the limit to daylimit\n  function initWallet(address[] memory _owners, uint _required, uint _daylimit) public only_uninitialized {\n    initDaylimit(_daylimit);\n    initMultiowned(_owners, _required);\n  }\n\n  // kills the contract sending everything to `_to`.\n  function kill(address payable _to) onlymanyowners(keccak256(msg.data)) external {\n    selfdestruct(_to);\n  }\n\n  // Outside-visible transact entry point. Executes transaction immediately if below daily spend limit.\n  // If not, goes into multisig process. We provide a hash on return to allow the sender to provide\n  // shortcuts for the other confirmations (allowing them to avoid replicating the _to, _value\n  // and _data arguments). They still get the option of using them if they want, anyways.\n  function execute(address _to, uint _value, bytes calldata _data) external onlyowner returns (bytes32 o_hash) {\n    // first, take the opportunity to check that we're under the daily limit.\n    if ((_data.length == 0 && underLimit(_value)) || m_required == 1) {\n      // yes - just execute the call.\n      address created;\n      if (_to == address(0)) {\n        created = create(_value, _data);\n      } else {\n        (bool success, bytes memory data) = _to.call.value(_value)(_data);\n        require(success);\n      }\n      emit SingleTransact(msg.sender, _value, _to, _data, created);\n    } else {\n      // determine our operation hash.\n      o_hash = keccak256(abi.encode(msg.data, block.number));\n      // store if it's new\n      if (m_txs[o_hash].to == address(0) && m_txs[o_hash].value == 0 && m_txs[o_hash].data.length == 0) {\n        m_txs[o_hash].to = _to;\n        m_txs[o_hash].value = _value;\n        m_txs[o_hash].data = _data;\n      }\n      if (!confirm(o_hash)) {\n        emit ConfirmationNeeded(o_hash, msg.sender, _value, _to, _data);\n      }\n    }\n  }\n\n  function create(uint _value, bytes memory _code) internal returns (address o_addr) {\n    uint256 o_size;\n    assembly {\n      o_addr := create(_value, add(_code, 0x20), mload(_code))\n      o_size := extcodesize(o_addr)\n    }\n    require(o_size != 0);\n  }\n\n  // confirm a transaction through just the hash. we use the previous transactions map, m_txs, in order\n  // to determine the body of the transaction from the hash provided.\n  function confirm(bytes32 _h) public onlymanyowners(_h) returns (bool o_success) {\n    if (m_txs[_h].to != address(0) || m_txs[_h].value != 0 || m_txs[_h].data.length != 0) {\n      address created;\n      if (m_txs[_h].to == address(0)) {\n        created = create(m_txs[_h].value, m_txs[_h].data);\n      } else {\n          (bool success, bytes memory data) = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data);\n        require(success);\n      }\n\n      emit MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data, created);\n      delete m_txs[_h];\n      return true;\n    }\n  }\n\n  // INTERNAL METHODS\n\n  function confirmAndCheck(bytes32 _operation) internal returns (bool) {\n    // determine what index the present sender is:\n    uint ownerIndex = m_ownerIndex[uint(msg.sender)];\n    // make sure they're an owner\n    if (ownerIndex == 0) return false;\n\n    PendingState memory pending = m_pending[_operation];\n    // if we're not yet working on this operation, switch over and reset the confirmation status.\n    if (pending.yetNeeded == 0) {\n      // reset count of confirmations needed.\n      pending.yetNeeded = m_required;\n      // reset which owners have confirmed (none) - set our bitmap to 0.\n      pending.ownersDone = 0;\n      pending.index = m_pendingIndex.length++;\n      m_pendingIndex[pending.index] = _operation;\n    }\n    // determine the bit to set for this owner.\n    uint ownerIndexBit = 2**ownerIndex;\n    // make sure we (the message sender) haven't confirmed this operation previously.\n    if (pending.ownersDone & ownerIndexBit == 0) {\n      emit Confirmation(msg.sender, _operation);\n      // ok - check if count is enough to go ahead.\n      if (pending.yetNeeded <= 1) {\n        // enough confirmations: reset and run interior.\n        delete m_pendingIndex[m_pending[_operation].index];\n        delete m_pending[_operation];\n        return true;\n      }\n      else\n      {\n        // not enough: record that this owner in particular confirmed.\n        pending.yetNeeded--;\n        pending.ownersDone |= ownerIndexBit;\n      }\n    }\n  }\n\n  function reorganizeOwners() private {\n    uint free = 1;\n    while (free < m_numOwners)\n    {\n      while (free < m_numOwners && m_owners[free] != 0) free++;\n      while (m_numOwners > 1 && m_owners[m_numOwners] == 0) m_numOwners--;\n      if (free < m_numOwners && m_owners[m_numOwners] != 0 && m_owners[free] == 0)\n      {\n        m_owners[free] = m_owners[m_numOwners];\n        m_ownerIndex[m_owners[free]] = free;\n        m_owners[m_numOwners] = 0;\n      }\n    }\n  }\n\n  // checks to see if there is at least `_value` left from the daily limit today. if there is, subtracts it and\n  // returns true. otherwise just returns false.\n  function underLimit(uint _value) internal onlyowner returns (bool) {\n    // reset the spend limit if we're on a different day to last time.\n    if (today() > m_lastDay) {\n      m_spentToday = 0;\n      m_lastDay = today();\n    }\n    // check to see if there's enough left - if so, subtract and return true.\n    // overflow protection                    // dailyLimit check\n    if (m_spentToday + _value >= m_spentToday && m_spentToday + _value <= m_dailyLimit) {\n      m_spentToday += _value;\n      return true;\n    }\n    return false;\n  }\n\n  // determines today's index.\n  function today() private view returns (uint) { return now / 1 days; }\n\n  function clearPending() internal {\n    uint length = m_pendingIndex.length;\n\n    for (uint i = 0; i < length; ++i) {\n      delete m_txs[m_pendingIndex[i]];\n\n      if (m_pendingIndex[i] != 0)\n        delete m_pending[m_pendingIndex[i]];\n    }\n\n    delete m_pendingIndex;\n  }\n\n  // FIELDS\n  address _walletLibrary = 0xCAfEcAfeCAfECaFeCaFecaFecaFECafECafeCaFe;\n\n  // the number of owners that must confirm the same operation before it is run.\n  uint public m_required;\n  // pointer used to find a free slot in m_owners\n  uint public m_numOwners;\n\n  uint public m_dailyLimit;\n  uint public m_spentToday;\n  uint public m_lastDay;\n\n  // list of owners\n  uint[256] m_owners;\n\n  uint c_maxOwners = 250;\n  // index on the list of owners to allow reverse lookup\n  mapping(uint => uint) m_ownerIndex;\n  // the ongoing operations.\n  mapping(bytes32 => PendingState) m_pending;\n  bytes32[] m_pendingIndex;\n\n  // pending transactions we have at present.\n  mapping (bytes32 => Transaction) m_txs;\n}\n"
  },
  {
    "path": "solidity_examples/calls.sol",
    "content": "\n\ncontract Caller {\n\n\taddress public fixed_address;\n\taddress public stored_address;\n\n\tuint256 statevar;\n\n\tconstructor(address addr) public {\n\t\tfixed_address = addr;\n\t}\n\n\tfunction thisisfine() public {\n\t    fixed_address.call(\"\");\n\t}\n\n\tfunction reentrancy() public {\n\t    fixed_address.call(\"\");\n\t    statevar = 0;\n\t}\n\n\tfunction calluseraddress(address addr) public {\n\t    addr.call(\"\");\n\t}\n\n\tfunction callstoredaddress() public {\n\t    stored_address.call(\"\");\n\t}\n\n\tfunction setstoredaddress(address addr) public {\n\t    stored_address = addr;\n\t}\n\n}\n"
  },
  {
    "path": "solidity_examples/etherstore.sol",
    "content": "pragma solidity 0.5.0;\n\n\ncontract EtherStore {\n\n    uint256 public withdrawalLimit = 1 ether;\n    mapping(address => uint256) public lastWithdrawTime;\n    mapping(address => uint256) public balances;\n\n    function depositFunds() public payable {\n        balances[msg.sender] += msg.value;\n    }\n\n    function withdrawFunds (uint256 _weiToWithdraw) public {\n        require(balances[msg.sender] >= _weiToWithdraw);\n        // limit the withdrawal\n        require(_weiToWithdraw <= withdrawalLimit);\n        // limit the time allowed to withdraw\n        require(now >= lastWithdrawTime[msg.sender] + 1 weeks);\n        (bool success, bytes memory data) = msg.sender.call.value(_weiToWithdraw)(\"\");\n        require(success);\n        balances[msg.sender] -= _weiToWithdraw;\n        lastWithdrawTime[msg.sender] = now;\n    }\n }"
  },
  {
    "path": "solidity_examples/exceptions.sol",
    "content": "\n\ncontract Exceptions {\n\n    uint256[8] myarray;\n\n    function assert1() public pure {\n    \tuint256 i = 1;\n        assert(i == 0);\n    }\n\n    function assert2() public pure {\n    \tuint256 i = 1;\n        assert(i > 0);\n    }\n\n    function assert3(uint256 input) public pure {\n        assert(input != 23);\n    }\n\n    function requireisfine(uint256 input) public pure {\n        require(input != 23);\n    }\n\n    function divisionby0(uint256 input) public pure {\n        uint256 i = 1/input;\n    }\n\n    function thisisfine(uint256 input) public pure {\n        if (input > 0) {\n            uint256 i = 1/input;\n        }\n    }\n\n    function arrayaccess(uint256 index) public view {\n        uint256 i = myarray[index];\n    }\n\n    function thisisalsofind(uint256 index) public view {\n        if (index < 8) {\n            uint256 i = myarray[index];\n        }\n    }\n\n}\n"
  },
  {
    "path": "solidity_examples/hashforether.sol",
    "content": "pragma solidity 0.5.0;\n\n\ncontract HashForEther {\n\n    function withdrawWinnings() public payable {\n        // Winner if the last 8 hex characters of the address are 0.\n        if (uint32(msg.sender) == 0)\n            _sendWinnings();\n    }\n\n    function _sendWinnings() public {\n        msg.sender.transfer(address(this).balance);\n    }\n}\n"
  },
  {
    "path": "solidity_examples/killbilly.sol",
    "content": "pragma solidity 0.5.7;\n\ncontract KillBilly {\n\tbool public is_killable;\n\tmapping (address => bool) public approved_killers;\n\n\tconstructor() public {\n\t\tis_killable = false;\n\t}\n\n\tfunction killerize(address addr) public {\n\t\tapproved_killers[addr] = true;\n\t}\n\n\tfunction activatekillability() public {\n\t\trequire(approved_killers[msg.sender] == true);\n\t\tis_killable = true;\n\t}\n\n\tfunction commencekilling() public {\n\t    require(is_killable);\n\t \tselfdestruct(msg.sender);\n\t}\n}"
  },
  {
    "path": "solidity_examples/origin.sol",
    "content": "pragma solidity 0.5.0;\n\n\ncontract Origin {\n  address public owner;\n\n\n  /**\n   * @dev The Ownable constructor sets the original `owner` of the contract to the sender\n   * account.\n   */\n  constructor() public {\n    owner = msg.sender;\n  }\n\n\n  /**\n   * @dev Throws if called by any account other than the owner.\n   */\n  modifier onlyOwner() {\n    require(tx.origin != owner);\n    _;\n  }\n\n\n  /**\n   * @dev Allows the current owner to transfer control of the contract to a newOwner.\n   * @param newOwner The address to transfer ownership to.\n   */\n  function transferOwnership(address newOwner) public onlyOwner {\n    if (newOwner != address(0)) {\n      owner = newOwner;\n    }\n  }\n\n}\n"
  },
  {
    "path": "solidity_examples/returnvalue.sol",
    "content": "pragma solidity 0.5.0;\n\n\ncontract ReturnValue {\n\n  address public callee = 0xE0f7e56E62b4267062172495D7506087205A4229;\n\n  function callnotchecked() public {\n    callee.call(\"\");\n  }\n\n  function callchecked() public {\n    (bool success, bytes memory data) = callee.call(\"\");\n    require(success);\n  }\n\n}"
  },
  {
    "path": "solidity_examples/rubixi.sol",
    "content": "pragma solidity 0.5.0;\n\n\ncontract Rubixi {\n    //Declare variables for storage critical to contract\n    uint private balance = 0;\n    uint private collectedFees = 0;\n    uint private feePercent = 10;\n    uint private pyramidMultiplier = 300;\n    uint private payoutOrder = 0;\n\n    address payable private creator;\n\n    modifier onlyowner {\n        if (msg.sender == creator) _;\n    }\n\n    struct Participant {\n        address payable etherAddress;\n        uint payout;\n    }\n\n    //Fallback function\n    function() external payable {\n        init();\n    }\n\n    //Sets creator\n    function dynamicPyramid() public {\n        creator = msg.sender;\n    }\n\n    Participant[] private participants;\n\n    //Fee functions for creator\n    function collectAllFees() public onlyowner {\n        require(collectedFees > 0);\n        creator.transfer(collectedFees);\n        collectedFees = 0;\n    }\n\n    function collectFeesInEther(uint _amt) public onlyowner {\n        _amt *= 1 ether;\n        if (_amt > collectedFees) collectAllFees();\n\n        require(collectedFees > 0);\n\n        creator.transfer(_amt);\n        collectedFees -= _amt;\n    }\n\n    function collectPercentOfFees(uint _pcent) public onlyowner {\n        require(collectedFees > 0 && _pcent <= 100);\n\n        uint feesToCollect = collectedFees / 100 * _pcent;\n        creator.transfer(feesToCollect);\n        collectedFees -= feesToCollect;\n    }\n\n    //Functions for changing variables related to the contract\n    function changeOwner(address payable _owner) public onlyowner {\n        creator = _owner;\n    }\n\n    function changeMultiplier(uint _mult) public onlyowner {\n        require(_mult <= 300 &&  _mult >= 120);\n        pyramidMultiplier = _mult;\n    }\n\n    function changeFeePercentage(uint _fee) public onlyowner {\n        require(_fee <= 10);\n        feePercent = _fee;\n    }\n\n    //Functions to provide information to end-user using JSON interface or other interfaces\n    function currentMultiplier() public view returns (uint multiplier, string memory info) {\n        multiplier = pyramidMultiplier;\n        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.\";\n    }\n\n    function currentFeePercentage() public view returns (uint fee, string memory info) {\n        fee = feePercent;\n        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%)\";\n}\n\n    function currentPyramidBalanceApproximately() public view returns (uint pyramidBalance, string memory info) {\n        pyramidBalance = balance / 1 ether;\n        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\";\n    }\n\n    function nextPayoutWhenPyramidBalanceTotalsApproximately() public view returns (uint balancePayout) {\n        balancePayout = participants[payoutOrder].payout / 1 ether;\n    }\n\n    function feesSeperateFromBalanceApproximately() public view returns (uint fees) {\n        fees = collectedFees / 1 ether;\n    }\n\n    function totalParticipants() public view returns (uint count) {\n        count = participants.length;\n    }\n\n    function numberOfParticipantsWaitingForPayout() public view returns (uint count) {\n        count = participants.length - payoutOrder;\n    }\n\n    function participantDetails(uint orderInPyramid) public view returns (address addr, uint payout) {\n        if (orderInPyramid <= participants.length) {\n            addr = participants[orderInPyramid].etherAddress;\n            payout = participants[orderInPyramid].payout / 1 ether;\n        }\n    }\n\n    //init function run on fallback\n    function init() private {\n        //Ensures only tx with value of 1 ether or greater are processed and added to pyramid\n        if (msg.value < 1 ether) {\n            collectedFees += msg.value;\n            return;\n        }\n\n        uint _fee = feePercent;\n        // 50% fee rebate on any ether value of 50 or greater\n        if (msg.value >= 50 ether) _fee /= 2;\n\n        addPayout(_fee);\n    }\n\n    //Function called for valid tx to the contract\n    function addPayout(uint _fee) private {\n        //Adds new address to participant array\n        participants.push(Participant(msg.sender, (msg.value * pyramidMultiplier) / 100));\n\n        // These statements ensure a quicker payout system to\n        // later pyramid entrants, so the pyramid has a longer lifespan\n        if (participants.length == 10) pyramidMultiplier = 200;\n        else if (participants.length == 25) pyramidMultiplier = 150;\n\n        // collect fees and update contract balance\n        balance += (msg.value * (100 - _fee)) / 100;\n        collectedFees += (msg.value * _fee) / 100;\n\n        //Pays earlier participants if balance sufficient\n        while (balance > participants[payoutOrder].payout) {\n            uint payoutToSend = participants[payoutOrder].payout;\n            participants[payoutOrder].etherAddress.transfer(payoutToSend);\n\n            balance -= participants[payoutOrder].payout;\n            payoutOrder += 1;\n        }\n    }\n}\n"
  },
  {
    "path": "solidity_examples/suicide.sol",
    "content": "\n\ncontract Suicide {\n\n  function kill(address payable addr) public {\n    if (addr == address(0x0)) {\n      selfdestruct(addr);\n    }\n  }\n\n}\n"
  },
  {
    "path": "solidity_examples/timelock.sol",
    "content": "pragma solidity 0.5.0;\n\n\ncontract TimeLock {\n\n    mapping(address => uint) public balances;\n    mapping(address => uint) public lockTime;\n\n    function deposit() public payable {\n        balances[msg.sender] += msg.value;\n        lockTime[msg.sender] = now + 1 weeks;\n    }\n\n    function increaseLockTime(uint _secondsToIncrease) public {\n        lockTime[msg.sender] += _secondsToIncrease;\n    }\n\n    function withdraw() public {\n        require(balances[msg.sender] > 0);\n        require(now > lockTime[msg.sender]);\n        balances[msg.sender] = 0;\n        msg.sender.transfer(balances[msg.sender]);\n    }\n}"
  },
  {
    "path": "solidity_examples/token.sol",
    "content": "\n\ncontract Token {\n\n  mapping(address => uint) balances;\n  uint public totalSupply;\n\n  constructor(uint _initialSupply) public {\n    balances[msg.sender] = totalSupply = _initialSupply;\n  }\n\n  function transfer(address _to, uint _value) public returns (bool) {\n    require(balances[msg.sender] - _value >= 0);\n    balances[msg.sender] -= _value;\n    balances[_to] += _value;\n    return true;\n  }\n\n  function balanceOf(address _owner) public view returns (uint balance) {\n    return balances[_owner];\n  }\n}\n"
  },
  {
    "path": "solidity_examples/weak_random.sol",
    "content": "pragma solidity 0.5.0;\n\n\ncontract WeakRandom {\n    struct Contestant {\n        address payable addr;\n        uint gameId;\n    }\n\n    uint public prize = 2.5 ether;\n    uint public totalTickets = 50;\n    uint public pricePerTicket = prize / totalTickets;\n\n    uint public gameId = 1;\n    uint public nextTicket = 0;\n    mapping (uint => Contestant) public contestants;\n\n    function () payable external {\n        uint moneySent = msg.value;\n\n        while (moneySent >= pricePerTicket && nextTicket < totalTickets) {\n            uint currTicket = nextTicket++;\n            contestants[currTicket] = Contestant(msg.sender, gameId);\n            moneySent -= pricePerTicket;\n        }\n\n        if (nextTicket == totalTickets) {\n            chooseWinner();\n        }\n\n        // Send back leftover money\n        if (moneySent > 0) {\n            msg.sender.transfer(moneySent);\n        }\n    }\n\n    function chooseWinner() private {\n        address seed1 = contestants[uint(block.coinbase) % totalTickets].addr;\n        address seed2 = contestants[uint(msg.sender) % totalTickets].addr;\n        uint seed3 = block.difficulty;\n        bytes32 randHash = keccak256(abi.encode(seed1, seed2, seed3));\n\n        uint winningNumber = uint(randHash) % totalTickets;\n        address payable winningAddress = contestants[winningNumber].addr;\n\n        gameId++;\n        nextTicket = 0;\n        winningAddress.transfer(prize);\n    }\n}\n"
  },
  {
    "path": "static/Ownable.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <title>Call Graph</title>\n  <style type=\"text/css\">\n   #mynetwork {\n    background-color: #232625;\n   }\n\n   body {\n    background-color: #232625;\n    color: #ffffff;\n   }\n  </style>\n  <link href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\"></script>\n  <script>\n\n    var options = {\n      autoResize: true,\n      height: '100%',\n      width: '100%',\n      manipulation: false,\n      height: '90%',\n      layout: {\n        randomSeed: undefined,\n        improvedLayout:true,\n        hierarchical: {\n          enabled:true,\n          levelSeparation: 450,\n          nodeSpacing: 200,\n          treeSpacing: 100,\n          blockShifting: true,\n          edgeMinimization: true,\n          parentCentralization: false,\n          direction: 'LR',        // UD, DU, LR, RL\n          sortMethod: 'directed'   // hubsize, directed\n        }\n      },\n      nodes:{\n        borderWidth: 1,\n        borderWidthSelected: 2,\n        chosen: true,\n        shape: 'box',\n        font: {\n          align: 'left',\n          color: '#FFFFFF',\n        },\n      },\n      edges:{\n        font: {\n          color: '#ffffff',\n          size: 12, // px\n          face: 'arial',\n          background: 'none',\n          strokeWidth: 0, // px\n          strokeColor: '#ffffff',\n          align: 'horizontal',\n          multi: false,\n          vadjust: 0,\n        }\n      },\n\n      physics:{\n        enabled: false,\n      }   \n    \n  }\n\n  var nodes = [\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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}\n];\nvar edges = [\n{from: '0', to: '1', 'arrows': 'to', 'label': 'Not(ULE(4, calldatasize_Ownable))', 'smooth': {'type': 'cubicBezier'}},\n{from: '5', to: '6', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: '4', to: '5', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: '3', to: '4', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},\n{from: '3', to: '7', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},\n{from: '2', to: '3', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_Ownable_0) == 0x8da5cb5b', 'smooth': {'type': 'cubicBezier'}},\n{from: '13', to: '14', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: '12', to: '13', 'arrows': 'to', 'label': 'Not(Extract(0x9f, 0, calldata_Ownable_4) == 0)', 'smooth': {'type': 'cubicBezier'}},\n{from: '12', to: '15', 'arrows': 'to', 'label': 'Extract(0x9f, 0, calldata_Ownable_4) == 0', 'smooth': {'type': 'cubicBezier'}},\n{from: '11', to: '12', 'arrows': 'to', 'label': 'Extract(0x9f, 0, caller) == Extract(0xa7, 8, storage_0)', 'smooth': {'type': 'cubicBezier'}},\n{from: '11', to: '16', 'arrows': 'to', 'label': 'Not(Extract(0x9f, 0, caller) == Extract(0xa7, 8, storage_0))', 'smooth': {'type': 'cubicBezier'}},\n{from: '10', to: '11', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: '9', to: '10', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},\n{from: '9', to: '17', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},\n{from: '8', to: '9', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_Ownable_0) == 0xf2fde38b', 'smooth': {'type': 'cubicBezier'}},\n{from: '8', to: '18', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_Ownable_0) == 0xf2fde38b)', 'smooth': {'type': 'cubicBezier'}},\n{from: '2', to: '8', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_Ownable_0) == 0x8da5cb5b)', 'smooth': {'type': 'cubicBezier'}},\n{from: '0', to: '2', 'arrows': 'to', 'label': 'ULE(4, calldatasize_Ownable)', 'smooth': {'type': 'cubicBezier'}}\n];\n\n  </script>\n </head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<p><div id=\"mynetwork\"></div><br /></p>\n<script type=\"text/javascript\">\nvar container = document.getElementById('mynetwork');\n\nvar nodesSet = new vis.DataSet(nodes);\nvar edgesSet = new vis.DataSet(edges);\nvar data = {'nodes': nodesSet, 'edges': edgesSet}\n\nvar gph = new vis.Network(container, data, options);\ngph.on(\"click\", function (params) {\n  // parse node id\n  var nodeID = params['nodes']['0'];\n  if (nodeID) {\n    var clickedNode = nodesSet.get(nodeID);\n\n    if(clickedNode.isExpanded) {\n      clickedNode.label = clickedNode.truncLabel;\n    }\n    else {\n      clickedNode.label = clickedNode.fullLabel;\n    }\n\n    clickedNode.isExpanded = !clickedNode.isExpanded;\n\n    nodesSet.update(clickedNode);\n  }\n});\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "static/assertions.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <title>Call Graph</title>\n\n  <style type=\"text/css\">\n   #mynetwork {\n    background-color: #ffffff;\n   }\n\n   body {\n    background-color: #ffffff;\n    color: #000000;\n    font-size: 10px;\n    font-family: \"courier new\";\n   }\n\n\n  </style>\n\n\n  <link href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\"></script>\n  <script>\n\n  \n    var options = {\n      autoResize: true,\n      height: '100%',\n      width: '100%',\n      manipulation: false,\n      height: '90%',\n      layout: {\n        randomSeed: undefined,\n        improvedLayout:true,\n        hierarchical: {\n          enabled:true,\n          levelSeparation: 450,\n          nodeSpacing: 200,\n          treeSpacing: 100,\n          blockShifting: true,\n          edgeMinimization: true,\n          parentCentralization: false,\n          direction: 'LR',        // UD, DU, LR, RL\n          sortMethod: 'directed'   // hubsize, directed\n        }\n      },\n      nodes:{\n        color: '#000000',\n        borderWidth: 1,\n        borderWidthSelected: 1,\n        shapeProperties: {\n          borderDashes: false, // only for borders\n          borderRadius: 0,     // only for box shape\n        },\n        chosen: true,\n        shape: 'box',\n        font: {\n          face: 'courier new',\n          align: 'left',\n          color: '#000000',\n        },\n      },\n      edges:{\n        font: {\n          color: '#000000',\n          face: 'courier new',\n          background: 'none',\n          strokeWidth: 0, // px\n          strokeColor: '#ffffff',\n          align: 'horizontal',\n          multi: false,\n          vadjust: 0,\n        }\n      },\n\n      physics:{\n        enabled: false,\n      }\n  }\n\n\n  var nodes = [\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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},\n{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}\n];\nvar edges = [\n{from: '0', to: '1', 'arrows': 'to', 'label': 'Not(ULE(4, calldatasize_Assertions))', 'smooth': {'type': 'cubicBezier'}},\n{from: '7', to: '8', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{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'}},\n{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'}},\n{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'}},\n{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'}},\n{from: '4', to: '5', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: '3', to: '4', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},\n{from: '3', to: '11', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},\n{from: '2', to: '3', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_Assertions_0) == 0x59ce2f44', 'smooth': {'type': 'cubicBezier'}},\n{from: '16', to: '17', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: '15', to: '16', 'arrows': 'to', 'label': 'Not(ULE(0x400, 4*calldata_Assertions_4))', 'smooth': {'type': 'cubicBezier'}},\n{from: '15', to: '18', 'arrows': 'to', 'label': 'ULE(0x400, 4*calldata_Assertions_4)', 'smooth': {'type': 'cubicBezier'}},\n{from: '14', to: '15', 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: '13', to: '14', 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},\n{from: '13', to: '19', 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},\n{from: '12', to: '13', 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_Assertions_0) == 0xe166a663', 'smooth': {'type': 'cubicBezier'}},\n{from: '12', to: '20', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_Assertions_0) == 0xe166a663)', 'smooth': {'type': 'cubicBezier'}},\n{from: '2', to: '12', 'arrows': 'to', 'label': 'Not(Extract(0xff, 0xe0, calldata_Assertions_0) == 0x59ce2f44)', 'smooth': {'type': 'cubicBezier'}},\n{from: '0', to: '2', 'arrows': 'to', 'label': 'ULE(4, calldatasize_Assertions)', 'smooth': {'type': 'cubicBezier'}}\n];\n\n  </script>\n </head>\n<body>\n<p>Mythril / LASER Symbolic VM</p>\n<p><div id=\"mynetwork\"></div><br/></p>\n<script type=\"text/javascript\">\nvar container = document.getElementById('mynetwork');\n\nvar nodesSet = new vis.DataSet(nodes);\nvar edgesSet = new vis.DataSet(edges);\nvar data = {'nodes': nodesSet, 'edges': edgesSet}\n\nvar gph = new vis.Network(container, data, options);\ngph.on(\"click\", function (params) {\n  // parse node id\n  var nodeID = params['nodes']['0'];\n  if (nodeID) {\n    var clickedNode = nodesSet.get(nodeID);\n\n    if(clickedNode.isExpanded) {\n      clickedNode.label = clickedNode.truncLabel;\n    }\n    else {\n      clickedNode.label = clickedNode.fullLabel;\n    }\n\n    clickedNode.isExpanded = !clickedNode.isExpanded;\n\n    nodesSet.update(clickedNode);\n  }\n});\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "static/mythril.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n  <title>Call Graph</title>\n  <style type=\"text/css\">\n   #mynetwork {\n    background-color: #232625;\n   }\n\n   body {\n    background-color: #232625;\n    color: #ffffff;\n   }\n  </style>\n  <link href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" rel=\"stylesheet\" type=\"text/css\" />\n  <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\"></script>\n  <script>\n\n    var options = {\n      autoResize: true,\n      height: '100%',\n      width: '100%',\n      manipulation: false,\n      height: '90%',\n      layout: {\n        randomSeed: undefined,\n        improvedLayout:true,\n        hierarchical: {\n          enabled:true,\n          levelSeparation: 450,\n          nodeSpacing: 200,\n          treeSpacing: 100,\n          blockShifting: true,\n          edgeMinimization: true,\n          parentCentralization: false,\n          direction: 'LR',        // UD, DU, LR, RL\n          sortMethod: 'directed'   // hubsize, directed\n        }\n      },\n      nodes:{\n        borderWidth: 1,\n        borderWidthSelected: 2,\n        chosen: true,\n        shape: 'box',\n        font: {\n          align: 'left',\n          color: '#FFFFFF',\n        },\n        color: {\n          border: '#26996f',\n          background: '#1f7e5b',\n          highlight: {\n            border: '#26996f',\n            background: '#28a16f'\n          }  \n        }\n      },\n      edges:{\n        font: {\n          color: '#ffffff',\n          size: 12, // px\n          face: 'arial',\n          background: 'none',\n          strokeWidth: 0, // px\n          strokeColor: '#ffffff',\n          align: 'horizontal',\n          multi: false,\n          vadjust: 0,\n        }\n      },\n\n      physics:{\n        enabled: false,\n      }   \n    \n  }\n\n  var nodes = [\n{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'},\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'},\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'},\n{id: 133, size: 150, 'label': '133 JUMPDEST\\n134 STOP\\n'},\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'},\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'},\n{id: 653, size: 150, 'label': '653 JUMPDEST\\n654 CALLER\\n655 PUSH20 0xffffffff(...)\\n676 AND\\n677 SUICIDE\\n'},\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'},\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'},\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'},\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'},\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'},\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'},\n{id: 168, size: 150, 'label': '168 JUMPDEST\\n169 STOP\\n'},\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'},\n{id: 199, size: 150, 'label': '199 JUMPDEST\\n200 STOP\\n'},\n{id: 109, size: 150, 'label': '109 JUMPDEST\\n110 PUSH1 0x00\\n112 DUP1\\n113 REVERT\\n'},\n{id: 561, size: 150, 'label': '561 JUMPDEST\\n562 POP\\n563 JUMP\\n'},\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'},\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'},\n{id: 181, size: 150, 'label': '181 JUMPDEST\\n182 PUSH2 0x00bd\\n185 PUSH2 0x0234\\n188 JUMP\\n'},\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'},\n{id: 125, size: 150, 'label': '125 JUMPDEST\\n126 PUSH2 0x0085\\n129 PUSH2 0x0116\\n132 JUMP\\n'},\n{id: 191, size: 150, 'label': '191 _function_0x69774c2d\\n192 PUSH2 0x00c7\\n195 PUSH2 0x02a6\\n198 JUMP\\n'}\n];\nvar edges = [\n{from: 0, to: 109, 'arrows': 'to', 'label': 'Not(ULE(4, calldatasize))', 'smooth': {'type': 'cubicBezier'}},\n{from: 278, to: 133, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: 125, to: 278, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: 114, to: 125, 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},\n{from: 0, to: 114, 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0) == 0x1803334e', 'smooth': {'type': 'cubicBezier'}},\n{from: 561, to: 168, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: 421, to: 561, 'arrows': 'to', 'label': 'Not(retval_546_333 == 0)', 'smooth': {'type': 'cubicBezier'}},\n{from: 345, to: 421, 'arrows': 'to', 'label': 'Not(storage_98ea2e05 == 0)', 'smooth': {'type': 'cubicBezier'}},\n{from: 146, to: 345, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: 135, to: 146, 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},\n{from: 0, to: 135, 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0) == 0x2e1a7d4d', 'smooth': {'type': 'cubicBezier'}},\n{from: 564, to: 653, 'arrows': 'to', 'label': 'Extract(0x9f, 0, caller) == Extract(0xa7, 8, storage_1)', 'smooth': {'type': 'cubicBezier'}},\n{from: 181, to: 564, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: 170, to: 181, 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},\n{from: 0, to: 170, 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0) == 0x41c0e1b5', 'smooth': {'type': 'cubicBezier'}},\n{from: 692, to: 199, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: 678, to: 692, 'arrows': 'to', 'label': 'Not(callvalue == 0)', 'smooth': {'type': 'cubicBezier'}},\n{from: 191, to: 678, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: 0, to: 191, 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0) == 0x69774c2d', 'smooth': {'type': 'cubicBezier'}},\n{from: 770, to: 256, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: 212, to: 770, 'arrows': 'to', 'label': '', 'smooth': {'type': 'cubicBezier'}},\n{from: 201, to: 212, 'arrows': 'to', 'label': 'callvalue == 0', 'smooth': {'type': 'cubicBezier'}},\n{from: 0, to: 201, 'arrows': 'to', 'label': 'Extract(0xff, 0xe0, calldata_0) == 0xf8b2cb4f', 'smooth': {'type': 'cubicBezier'}}\n];\n\n  </script>\n </head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<p><div id=\"mynetwork\"></div><br /></p>\n<script type=\"text/javascript\">\nvar container = document.getElementById('mynetwork');\nvar data = {'nodes': nodes, 'edges': edges}\nvar gph = new vis.Network(container, data, options);\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "static/sample_report.md",
    "content": "# Analysis Results\n## Ether send\n- Type: Warning\n- Contract: Crowdfunding\n- Function name: withdrawfunds()\n- PC address: 816\n\n### Description\nIn the function `withdrawfunds()` a non-zero amount of Ether is sent to msg.sender.\nCall value is balance_at_1461501637330902918203684832716283019655932542975 & address.\n\nThere is a check on storage index 7. This storage slot can be written to by calling the function `crowdfunding()`.\n\nIn *ether_send.sol:*\n\n```\nmsg.sender.transfer(this.balance)\n```\n## Use of tx.origin\n- Type: Warning\n- Contract: Origin\n- Function name: transferOwnership(address)\n- PC address: 317\n\n### Description\nFunction transferOwnership(address) retrieves the transaction origin (tx.origin) using the ORIGIN opcode. Use tx.sender instead.\nSee also: https://solidity.readthedocs.io/en/develop/security-considerations.html#tx-origin\n\nIn *origin.sol:*\n\n```\ntx.origin\n```\n## CALL with gas to dynamic address\n- Type: Warning\n- Contract: Reentrancy\n- Function name: withdraw(uint256)\n- PC address: 552\n\n### Description\nThe 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).\n\nIn *reentrancy.sol:*\n\n```\nmsg.sender.call.value(_amount)()\n```\n## Unchecked CALL return value\n- Type: Informational\n- Contract: Reentrancy\n- Function name: withdraw(uint256)\n- PC address: 552\n\n### Description\nThe function withdraw(uint256) contains a call to msg.sender.\nThe 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.\n\nIn *reentrancy.sol:*\n\n```\nmsg.sender.call.value(_amount)()\n```\n## Integer Underflow\n- Type: Warning\n- Contract: Under\n- Function name: sendeth(address,uint256)\n- PC address: 649\n\n### Description\nA possible integer underflow exists in the function `sendeth(address,uint256)`.\nThe SUB instruction at address 649 may result in a value < 0.\n\nIn *underflow.sol:*\n\n```\nbalances[msg.sender] -= _value\n```\n## Integer Underflow\n- Type: Warning\n- Contract: Under\n- Function name: sendeth(address,uint256)\n- PC address: 567\n\n### Description\nA possible integer underflow exists in the function `sendeth(address,uint256)`.\nThe SUB instruction at address 567 may result in a value < 0.\n\nIn *underflow.sol:*\n\n```\nbalances[msg.sender] - _value\n```\n## Weak random\n- Type: Warning\n- Contract: WeakRandom\n- Function name: _function_0xe9874106\n- PC address: 1285\n\n### Description\nIn the function `_function_0xe9874106` the following predictable state variables are used to determine Ether recipient:\n- block.coinbase\n\n\nIn *weak_random.sol:*\n\n```\nwinningAddress.transfer(prize)\n```\n\n"
  },
  {
    "path": "tests/__init__.py",
    "content": "from pathlib import Path\nfrom unittest import TestCase\n\nTESTS_DIR = Path(__file__).parent\nPROJECT_DIR = TESTS_DIR.parent\nTESTDATA = TESTS_DIR / \"testdata\"\nTESTDATA_INPUTS = TESTDATA / \"inputs\"\nTESTDATA_INPUTS_CONTRACTS = TESTDATA / \"input_contracts\"\nTESTDATA_OUTPUTS_EXPECTED = TESTDATA / \"outputs_expected\"\nTESTDATA_OUTPUTS_CURRENT = TESTDATA / \"outputs_current\"\nTESTDATA_OUTPUTS_CURRENT_LASER_RESULT = TESTDATA / \"outputs_current_laser_result\"\nTESTDATA_OUTPUTS_EXPECTED_LASER_RESULT = TESTDATA / \"outputs_expected_laser_result\"\nMYTHRIL_DIR = TESTS_DIR / \"mythril_dir\"\n\nTESTDATA_OUTPUTS_CURRENT.mkdir(exist_ok=True)\nTESTDATA_OUTPUTS_CURRENT_LASER_RESULT.mkdir(exist_ok=True)\n\n\nclass BaseTestCase(TestCase):\n    def setUp(self):\n        \"\"\"\"\"\"\n        self.changed_files = []\n\n    def compare_files_error_message(self):\n        \"\"\"\n\n        :return:\n        \"\"\"\n        message = \"Following output files are changed, compare them manually to see differences: \\n\"\n\n        for input_file, expected, current in self.changed_files:\n            message += \"{}:\\n\".format(input_file.name)\n            message += \"- {}\\n\".format(str(expected))\n            message += \"- {}\\n\".format(str(current))\n\n        return message\n\n    def found_changed_files(self, input_file, output_expected, output_current):\n        \"\"\"\n\n        :param input_file:\n        :param output_expected:\n        :param output_current:\n        \"\"\"\n        self.changed_files.append((input_file, output_expected, output_current))\n\n    def assert_and_show_changed_files(self):\n        \"\"\"\"\"\"\n        self.assertEqual(\n            0, len(self.changed_files), msg=self.compare_files_error_message()\n        )\n"
  },
  {
    "path": "tests/analysis/abi_decode_test.py",
    "content": "import pytest\n\nfrom mythril.analysis.report import Issue\n\ntest_data = (\n    (\n        \"0xa9059cbb000000000000000000000000010801010101010120020101020401010408040402\",\n        \"func(uint256,uint256)\",\n        (\n            5887484186314823854737699484601117092168074244,\n            904625697166532776746648320380374280103671755200316906558262375061821325312,\n        ),\n    ),\n    (\n        \"0xa9059cbb00000000000000000000000000000000000000000000000000000000000000020000000000000000000000000000000000000000000000000000000000000002\",\n        \"func(uint256,uint256)\",\n        (2, 2),\n    ),\n    # location + length + data\n    (\n        \"0xa9059cbb\" + \"0\" * 62 + \"20\" + \"0\" * 63 + \"1\" + \"0\" * 63 + \"2\",\n        \"func(uint256[])\",\n        ((2,),),\n    ),\n)\n\n\n@pytest.mark.parametrize(\"call_data, signature, expected\", test_data)\ndef test_abi_decode(call_data, signature, expected):\n    assert Issue.resolve_input(call_data, signature) == expected\n"
  },
  {
    "path": "tests/analysis/arbitrary_jump_test.py",
    "content": "import pytest\n\nfrom mythril.analysis.module.modules.arbitrary_jump import (\n    ArbitraryJump,\n    is_unique_jumpdest,\n)\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.call import SymbolicCalldata\nfrom mythril.laser.ethereum.state.account import Account\nfrom mythril.laser.ethereum.state.constraints import Constraints\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.time_handler import time_handler\nfrom mythril.laser.ethereum.transaction.symbolic import ACTORS\nfrom mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction\nfrom mythril.laser.smt import symbol_factory\n\n\ndef get_global_state(constraints):\n    \"\"\"Constructs an arbitrary global state\n\n    Args:\n        constraints (List[BitVec]): Constraints list for the global state\n\n    Returns:\n        [GlobalState]: An arbitrary global state\n    \"\"\"\n    active_account = Account(\"0x0\", code=Disassembly(\"60606040\"))\n    environment = Environment(\n        active_account, None, SymbolicCalldata(\"2\"), None, None, None, None\n    )\n    world_state = WorldState()\n    world_state.put_account(active_account)\n    state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))\n    state.world_state.transaction_sequence = [\n        MessageCallTransaction(\n            world_state=world_state,\n            gas_limit=8000000,\n            init_call_data=True,\n            call_value=symbol_factory.BitVecSym(\"call_value\", 256),\n            caller=ACTORS.attacker,\n            callee_account=active_account,\n        )\n    ]\n    state.transaction_stack.append(\n        (\n            MessageCallTransaction(\n                world_state=world_state, gas_limit=8000000, init_call_data=True\n            ),\n            None,\n        )\n    )\n    state.mstate.stack = [symbol_factory.BitVecSym(\"jump_dest\", 256)]\n\n    state.world_state.constraints = Constraints(constraints)\n    return state\n\n\ntest_data = (\n    (\n        get_global_state([symbol_factory.BitVecSym(\"jump_dest\", 256) == 222]),\n        True,\n    ),\n    (\n        get_global_state([symbol_factory.BitVecSym(\"jump_dest\", 256) > 222]),\n        False,\n    ),\n)\n\n\n@pytest.mark.parametrize(\"global_state, unique\", test_data)\ndef test_unique_jumpdest(global_state, unique):\n    time_handler.start_execution(10)\n    assert is_unique_jumpdest(global_state.mstate.stack[-1], global_state) == unique\n\n\ntest_data = (\n    (\n        get_global_state([symbol_factory.BitVecSym(\"jump_dest\", 256) == 222]),\n        False,\n    ),\n    (\n        get_global_state([symbol_factory.BitVecSym(\"jump_dest\", 256) > 222]),\n        True,\n    ),\n)\n\n\n@pytest.mark.parametrize(\"global_state, has_issue\", test_data)\ndef test_module(global_state, has_issue):\n    time_handler.start_execution(10)\n    module = ArbitraryJump()\n    assert (len(module._analyze_state(global_state)) > 0) == has_issue\n"
  },
  {
    "path": "tests/cli_tests/cli_opts_test.py",
    "content": "import json\nimport sys\n\nimport pytest\n\nfrom mythril.interfaces.cli import main\n\n\ndef test_version_opt(capsys):\n    # Check that \"myth --version\" returns a string with the word\n    # \"version\" in it\n    sys.argv = [\"mythril\", \"version\"]\n    with pytest.raises(SystemExit) as pytest_wrapped_e:\n        main()\n    assert pytest_wrapped_e.type == SystemExit\n    captured = capsys.readouterr()\n    assert captured.out.find(\" version \") >= 1\n\n    # Check that \"myth --version -o json\" returns a JSON object\n    sys.argv = [\"mythril\", \"version\", \"-o\", \"json\"]\n    with pytest.raises(SystemExit) as pytest_wrapped_e:\n        main()\n    assert pytest_wrapped_e.type == SystemExit\n    captured = capsys.readouterr()\n    d = json.loads(captured.out)\n    assert isinstance(d, dict)\n    assert d[\"version_str\"]\n"
  },
  {
    "path": "tests/cmd_line_test.py",
    "content": "from subprocess import STDOUT, CalledProcessError, check_output\n\nfrom tests import PROJECT_DIR, TESTDATA, BaseTestCase\n\nMYTH = str(PROJECT_DIR / \"myth\")\n\n\ndef output_of(command):\n    \"\"\"\n\n    :param command:\n    :return:\n    \"\"\"\n    try:\n        return check_output(command, shell=True).decode(\"UTF-8\")\n    except CalledProcessError as exc:\n        return exc.output.decode(\"UTF-8\")\n\n\ndef total_output(command):\n    try:\n        return check_output(command, shell=True, stderr=STDOUT).decode(\"UTF-8\")\n    except CalledProcessError as exc:\n        return exc.output.decode(\"UTF-8\")\n\n\nclass CommandLineToolTestCase(BaseTestCase):\n    def test_disassemble_code_correctly(self):\n        command = \"python3 {} disassemble --bin-runtime -c 0x5050\".format(MYTH)\n        self.assertIn(\"0 POP\\n1 POP\\n\", output_of(command))\n\n    def test_disassemble_solidity_file_correctly(self):\n        solidity_file = str(TESTDATA / \"input_contracts\" / \"metacoin.sol\")\n        command = \"python3 {} disassemble {} --solv 0.5.0\".format(MYTH, solidity_file)\n        self.assertIn(\"2 PUSH1 0x40\\n4 MSTORE\", output_of(command))\n\n    def test_hash_a_function_correctly(self):\n        command = \"python3 {} function-to-hash 'setOwner(address)'\".format(MYTH)\n        self.assertIn(\"0x13af4035\\n\", output_of(command))\n\n    def test_failure_json(self):\n        command = \"python3 {} analyze doesnt_exist.sol -o json\".format(MYTH)\n        print(output_of(command))\n        self.assertIn(\"\"\"\"success\": false\"\"\", output_of(command))\n\n    def test_failure_text(self):\n        command = \"python3 {} analyze doesnt_exist.sol\".format(MYTH)\n        assert output_of(command) == \"\"\n\n    def test_failure_jsonv2(self):\n        command = \"python3 {} analyze doesnt_exist.sol -o jsonv2\".format(MYTH)\n        self.assertIn(\"\"\"\"level\": \"error\"\"\" \"\", output_of(command))\n\n    def test_analyze(self):\n        solidity_file = str(TESTDATA / \"input_contracts\" / \"origin.sol\")\n        command = \"python3 {} analyze {} --solv 0.5.0\".format(MYTH, solidity_file)\n        self.assertIn(\"115\", output_of(command))\n\n    def test_analyze_bytecode(self):\n        solidity_file = str(TESTDATA / \"inputs\" / \"origin.sol.o\")\n        command = \"python3 {} analyze --bin-runtime -f {}\".format(MYTH, solidity_file)\n        self.assertIn(\"115\", output_of(command))\n\n    def test_invalid_args_iprof(self):\n        solidity_file = str(TESTDATA / \"input_contracts\" / \"origin.sol\")\n        command = \"python3 {} analyze {} --enable-iprof -o json\".format(\n            MYTH, solidity_file\n        )\n        self.assertIn(\"\"\"unrecognized arguments\"\"\", total_output(command))\n\n    def test_only_epic(self):\n        command = \"python3 {} --epic\".format(MYTH)\n        # Just check for crashes\n        output_of(command)\n\n    ''''\n    def test_storage(self):\n        command = \"\"\"python3 {} read-storage \"438767356, 3\" 0x76799f77587738bfeef09452df215b63d2cfb08a \"\"\".format(\n            MYTH\n        )\n        self.assertIn(\"0x1a270efc\", output_of(command))\n    '''\n\n\n\"\"\"\nclass InfuraTestCase(BaseTestCase):\n    def test_infura_mainnet(self):\n        command = \"python3 {} disassemble --rpc infura-mainnet  -a 0x2a0c0dbecc7e4d658f48e01e3fa353f44050c208\".format(\n            MYTH\n        )\n        output = output_of(command)\n        self.assertIn(\"0 PUSH1 0x60\\n2 PUSH1 0x40\\n4 MSTORE\", output)\n        self.assertIn(\"7278 POP\\n7279 POP\\n7280 JUMP\\n7281 STOP\", output)\n\n    def test_infura_rinkeby(self):\n        command = \"python3 {} disassemble --rpc infura-rinkeby -a 0xB6f2bFED892a662bBF26258ceDD443f50Fa307F5\".format(\n            MYTH\n        )\n        output = output_of(command)\n        self.assertIn(\"34 JUMPDEST\\n35 CALLVALUE\", output)\n\n    def test_infura_kovan(self):\n        command = \"python3 {} disassemble --rpc infura-kovan -a 0xE6bBF9B5A3451242F82f8cd458675092617a1235\".format(\n            MYTH\n        )\n        output = output_of(command)\n        self.assertIn(\"9999 PUSH1 0x00\\n10001 NOT\\n10002 AND\\n10003 PUSH1 0x00\", output)\n\n    def test_infura_ropsten(self):\n        command = \"python3 {} disassemble --rpc infura-ropsten -a 0x6e0E0e02377Bc1d90E8a7c21f12BA385C2C35f78\".format(\n            MYTH\n        )\n        output = output_of(command)\n        self.assertIn(\"1821 PUSH1 0x01\\n1823 PUSH2 0x070c\", output)\n\"\"\"\n"
  },
  {
    "path": "tests/concolic/concolic_tests.py",
    "content": "import binascii\nimport json\nimport subprocess\nfrom copy import deepcopy\nfrom datetime import datetime\nfrom subprocess import CalledProcessError, check_output\n\nimport pytest\n\nfrom mythril.concolic import concrete_execution\nfrom mythril.concolic.find_trace import setup_concrete_initial_state\nfrom mythril.laser.ethereum import util\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.ethereum.time_handler import time_handler\nfrom mythril.laser.ethereum.transaction.concolic import execute_transaction\nfrom mythril.laser.plugin.loader import LaserPluginLoader\nfrom mythril.laser.plugin.plugins import TraceFinderBuilder\nfrom mythril.laser.smt import symbol_factory\nfrom tests import PROJECT_DIR, TESTDATA\n\nMYTH = str(PROJECT_DIR / \"myth\")\n\n\ndef output_of(command):\n    try:\n        return json.loads(check_output(command, shell=True).decode(\"UTF-8\"))\n    except CalledProcessError as exc:\n        return json.loads(exc.output.decode(\"UTF-8\"))\n\n\n# TODO: Try using some python EVM for these tests\n\n\ndef validate_simple_example(output, branches):\n    for branch_output, branch in zip(output, branches):\n        if branch == \"153\":\n            # Validation for initialState\n\n            # Validation for tx steps\n            tx_step = branch_output[\"steps\"][1]\n            assert tx_step[\"input\"] == tx_step[\"calldata\"]\n            assert int(tx_step[\"input\"][10:], 16) == 3\n\n\ndef validate_multiple_example(output, branches):\n    for branch_output, branch in zip(output, branches):\n        if branch == \"153\":\n            # Validation for initialState\n\n            # Validation for tx steps\n            tx_step = branch_output[\"steps\"][1]\n            assert tx_step[\"input\"] == tx_step[\"calldata\"]\n            assert int(tx_step[\"input\"][10:], 16) == 3\n        elif branch == \"192\":\n            # Validation for initialState\n\n            # Validation for tx steps\n            tx_step = branch_output[\"steps\"][1]\n            assert tx_step[\"input\"] == tx_step[\"calldata\"]\n            assert int(tx_step[\"input\"][10:], 16) == 5\n        elif branch == \"243\":\n            # Validation for initialState\n\n            # Validation for tx steps\n            tx_step = branch_output[\"steps\"][1]\n            assert tx_step[\"input\"] == tx_step[\"calldata\"]\n            assert int(tx_step[\"input\"][10:], 16) == 7\n\n\ndef validate_two_contract(output, branches):\n    for branch_output, branch in zip(output, branches):\n        if branch == \"311\":\n            # Validation for initialState\n            # Validation for tx steps\n            assert (\n                int(branch_output[\"steps\"][1][\"input\"][10:], 16)\n                + int(branch_output[\"steps\"][3][\"input\"][10:], 16)\n                == 11\n            )\n\n        if branch == \"341\":\n            # Validation for initialState\n\n            # Validation for tx steps\n            assert (\n                int(branch_output[\"steps\"][1][\"input\"][10:], 16)\n                + int(branch_output[\"steps\"][3][\"input\"][10:], 16)\n                == 30\n            )\n\n        if branch == \"371\":\n            # Validation for initialState\n\n            # Validation for tx steps\n            assert (\n                int(branch_output[\"steps\"][1][\"input\"][10:], 16)\n                + int(branch_output[\"steps\"][3][\"input\"][10:], 16)\n                == 20\n            )\n\n\ndef validate_multi_contract(output, branches):\n    for branch_output, branch in zip(output, branches):\n        if branch == \"453\":\n            # Validation for initialState\n\n            # Validation for tx steps\n            assert (\n                int(branch_output[\"steps\"][1][\"input\"][10:], 16)\n                + int(branch_output[\"steps\"][3][\"input\"][10:], 16)\n                + int(branch_output[\"steps\"][5][\"input\"][10:], 16)\n                == 10\n            )\n\n        if branch == \"483\":\n            # Validation for initialState\n\n            # Validation for tx steps\n            assert (\n                int(branch_output[\"steps\"][1][\"input\"][10:], 16)\n                + int(branch_output[\"steps\"][3][\"input\"][10:], 16)\n                + int(branch_output[\"steps\"][5][\"input\"][10:], 16)\n                == 25\n            )\n\n\nvalidate_test_data = (\n    (\"simple_example_input.json\", validate_simple_example, \"153\"),\n    (\"multiple_example_input.json\", validate_multiple_example, \"153,192,243\"),\n    (\"two_contract_input.json\", validate_two_contract, \"311,341,371\"),\n    (\"multi_contract_example_input.json\", validate_multi_contract, \"453,483\"),\n)\ncheck_state_validity_test_data = (\n    (\"simple_example_input.json\", \"153\"),\n    (\"multiple_example_input.json\", \"153,192,243\"),\n    (\"two_contract_input.json\", \"311,341,371\"),\n    (\"multi_contract_example_input.json\", \"453,483\"),\n)\n\ntest_data_error = ((\"simple_example_input.json\", \"508\"),)\n\n\n@pytest.mark.parametrize(\"input_file,validate_function,branches\", validate_test_data)\ndef test_concolic_conditions(input_file, validate_function, branches):\n    input_path = str(TESTDATA / \"concolic_io\" / input_file)\n\n    command = f\"{MYTH} concolic {input_path} --branches {branches}\"\n    received_output = output_of(command)\n    branches = [branch for branch in branches.split(\",\")]\n    validate_function(received_output, branches)\n\n\n@pytest.mark.parametrize(\"input_file,branch\", test_data_error)\ndef test_concolic_error(input_file, branch):\n    input_path = str(TESTDATA / \"concolic_io\" / input_file)\n    command = f\"{MYTH} concolic {input_path} --branches {branch}\"\n    received_output = subprocess.run(\n        command.split(), stdout=subprocess.PIPE, stderr=subprocess.PIPE\n    )\n\n    assert (\n        f\"The branch {branch} does not lead to a jump address, skipping this branch\"\n        in received_output.stderr.decode(\"UTF-8\")\n    )\n\n\ndef get_pc_from_disassembler(concrete_data, branches):\n    init_state = setup_concrete_initial_state(concrete_data)\n    laser_evm = LaserEVM(execution_timeout=100)\n\n    laser_evm.open_states = [deepcopy(init_state)]\n    plugin_loader = LaserPluginLoader()\n    trace_plugin = TraceFinderBuilder()\n    plugin_loader.load(trace_plugin)\n    laser_evm.time = datetime.now()\n    plugin_loader.instrument_virtual_machine(laser_evm, None)\n\n    for transaction in concrete_data[\"steps\"][:-1]:\n        execute_transaction(\n            laser_evm,\n            callee_address=transaction[\"address\"],\n            caller_address=symbol_factory.BitVecVal(\n                int(transaction[\"origin\"], 16), 256\n            ),\n            origin_address=symbol_factory.BitVecVal(\n                int(transaction[\"origin\"], 16), 256\n            ),\n            gas_limit=int(transaction.get(\"gasLimit\", \"0x9999999999999999999999\"), 16),\n            data=binascii.a2b_hex(transaction[\"input\"][2:]),\n            gas_price=int(transaction.get(\"gasPrice\", \"0x773594000\"), 16),\n            value=int(transaction[\"value\"], 16),\n            track_gas=False,\n        )\n    contract_addr = concrete_data[\"steps\"][-1][\"address\"]\n    assert len(laser_evm.open_states) == 1\n    instruction_list = (\n        laser_evm.open_states[0].accounts[int(contract_addr, 16)].code.instruction_list\n    )\n    branches = [\n        util.get_instruction_index(instruction_list, branch) for branch in branches\n    ]\n    return branches\n\n\ndef run_concolic(input_path, output, branches):\n    with open(input_path) as f:\n        concrete_data = json.load(f)\n    _, input_trace = concrete_execution(concrete_data)\n    input_last_tx = input_trace[-1]\n    branches = [int(branch) for branch in branches.split(\",\")]\n    time_handler.start_execution(1000)\n    branches = get_pc_from_disassembler(concrete_data, branches)\n    for out, branch in zip(output, branches):\n        _, trace = concrete_execution(out)\n        last_tx = trace[-1]\n        tx_id = last_tx[0][1]\n        branch_idx = last_tx.index((branch, tx_id))\n        input_idx = input_last_tx.index((branch, tx_id))\n\n        assert (branch_idx == input_idx) and last_tx[branch_idx + 1][\n            0\n        ] != input_last_tx[branch_idx + 1][0]\n\n\n@pytest.mark.parametrize(\"input_file,branches\", check_state_validity_test_data)\ndef test_validate_concolic_output(input_file, branches):\n    input_path = str(TESTDATA / \"concolic_io\" / input_file)\n\n    command = f\"{MYTH} concolic {input_path} --branches {branches}\"\n    received_output = output_of(command)\n    run_concolic(input_path, received_output, branches)\n"
  },
  {
    "path": "tests/disassembler/__init__.py",
    "content": ""
  },
  {
    "path": "tests/disassembler/asm_test.py",
    "content": "import pytest\n\nfrom mythril.disassembler.asm import (\n    disassemble,\n    find_op_code_sequence,\n    get_opcode_from_name,\n    is_sequence_match,\n)\n\nvalid_names = [(\"PUSH1\", 0x60), (\"STOP\", 0x0), (\"RETURN\", 0xF3)]\n\n\n@pytest.mark.parametrize(\"operation_name, hex_value\", valid_names)\ndef test_get_opcode(operation_name: str, hex_value: int):\n    # Act\n    return_value = get_opcode_from_name(operation_name)\n    # Assert\n    assert return_value == hex_value\n\n\ndef test_get_unknown_opcode():\n    operation_name = \"definitely unknown\"\n\n    # Act\n    with pytest.raises(RuntimeError):\n        get_opcode_from_name(operation_name)\n\n\nsequence_match_test_data = [\n    # Normal no match\n    (\n        ([\"PUSH1\"], [\"EQ\"]),\n        [{\"opcode\": \"PUSH1\"}, {\"opcode\": \"PUSH3\"}, {\"opcode\": \"EQ\"}],\n        1,\n        False,\n    ),\n    # Normal match\n    (\n        ([\"PUSH1\"], [\"EQ\"]),\n        [{\"opcode\": \"PUSH1\"}, {\"opcode\": \"PUSH1\"}, {\"opcode\": \"EQ\"}],\n        1,\n        True,\n    ),\n    # Out of bounds pattern\n    (\n        ([\"PUSH1\"], [\"EQ\"]),\n        [{\"opcode\": \"PUSH1\"}, {\"opcode\": \"PUSH3\"}, {\"opcode\": \"EQ\"}],\n        3,\n        False,\n    ),\n    (\n        ([\"PUSH1\"], [\"EQ\"]),\n        [{\"opcode\": \"PUSH1\"}, {\"opcode\": \"PUSH3\"}, {\"opcode\": \"EQ\"}],\n        2,\n        False,\n    ),\n    # Double option match\n    (\n        ([\"PUSH1\", \"PUSH3\"], [\"EQ\"]),\n        [{\"opcode\": \"PUSH1\"}, {\"opcode\": \"PUSH1\"}, {\"opcode\": \"EQ\"}],\n        1,\n        True,\n    ),\n    (\n        ([\"PUSH1\", \"PUSH3\"], [\"EQ\"]),\n        [{\"opcode\": \"PUSH1\"}, {\"opcode\": \"PUSH3\"}, {\"opcode\": \"EQ\"}],\n        1,\n        True,\n    ),\n    # Double option no match\n    (\n        ([\"PUSH1\", \"PUSH3\"], [\"EQ\"]),\n        [{\"opcode\": \"PUSH1\"}, {\"opcode\": \"PUSH3\"}, {\"opcode\": \"EQ\"}],\n        0,\n        False,\n    ),\n]\n\n\n@pytest.mark.parametrize(\n    \"pattern, instruction_list, index,  expected_result\", sequence_match_test_data\n)\ndef test_is_sequence_match(pattern, instruction_list, index, expected_result):\n    # Act\n    return_value = is_sequence_match(pattern, instruction_list, index)\n    # Assert\n    assert return_value == expected_result\n\n\nfind_sequence_match_test_data = [\n    # Normal no match\n    (\n        ([\"PUSH1\"], [\"EQ\"]),\n        [{\"opcode\": \"PUSH1\"}, {\"opcode\": \"PUSH3\"}, {\"opcode\": \"EQ\"}],\n        [],\n    ),\n    # Normal match\n    (\n        ([\"PUSH1\"], [\"EQ\"]),\n        [\n            {\"opcode\": \"PUSH1\"},\n            {\"opcode\": \"PUSH1\"},\n            {\"opcode\": \"EQ\"},\n            {\"opcode\": \"PUSH1\"},\n            {\"opcode\": \"EQ\"},\n        ],\n        [1, 3],\n    ),\n]\n\n\n@pytest.mark.parametrize(\n    \"pattern, instruction_list, expected_result\", find_sequence_match_test_data\n)\ndef test_find_op_code_sequence(pattern, instruction_list, expected_result):\n    # Act\n    return_value = list(find_op_code_sequence(pattern, instruction_list))\n\n    # Assert\n    assert return_value == expected_result\n\n\ndef test_disassemble():\n    # Act\n    instruction_list = disassemble(b\"\\x00\\x16\\x06\")\n\n    # Assert\n    assert instruction_list[0][\"opcode\"] == \"STOP\"\n    assert instruction_list[1][\"opcode\"] == \"AND\"\n    assert instruction_list[2][\"opcode\"] == \"MOD\"\n"
  },
  {
    "path": "tests/disassembler/disassembly_test.py",
    "content": "from mythril.disassembler.disassembly import SignatureDB, get_function_info\n\ninstruction_list = [\n    {\"opcode\": \"PUSH4\", \"argument\": \"0x10203040\"},\n    {\"opcode\": \"EQ\"},\n    {\"opcode\": \"PUSH4\", \"argument\": \"0x40302010\"},\n    {\"opcode\": \"JUMPI\"},\n]\n\n\ndef test_get_function_info(mocker):\n    # Arrange\n    global instruction_list\n\n    signature_database_mock = SignatureDB()\n    mocker.patch.object(signature_database_mock, \"get\")\n    signature_database_mock.get.return_value = [\"function_name\"]\n\n    # Act\n    function_hash, entry_point, function_name = get_function_info(\n        0, instruction_list, signature_database_mock\n    )\n\n    # Assert\n    assert function_hash == \"0x10203040\"\n    assert entry_point == 0x40302010\n    assert function_name == \"function_name\"\n\n\ndef test_get_function_info_multiple_names(mocker):\n    # Arrange\n    global instruction_list\n\n    signature_database_mock = SignatureDB()\n    mocker.patch.object(signature_database_mock, \"get\")\n    signature_database_mock.get.return_value = [\"function_name\", \"another_name\"]\n\n    # Act\n    function_hash, entry_point, function_name = get_function_info(\n        0, instruction_list, signature_database_mock\n    )\n\n    # Assert\n    assert function_name in (\n        \"function_name or another_name\",\n        \"another_name or function_name\",\n    )\n\n\ndef test_get_function_info_no_names(mocker):\n    # Arrange\n    global instruction_list\n\n    signature_database_mock = SignatureDB()\n    mocker.patch.object(signature_database_mock, \"get\")\n    signature_database_mock.get.return_value = []\n\n    # Act\n    function_hash, entry_point, function_name = get_function_info(\n        0, instruction_list, signature_database_mock\n    )\n\n    # Assert\n    assert function_name == \"_function_0x10203040\"\n"
  },
  {
    "path": "tests/disassembler_test.py",
    "content": "import os\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom tests import (\n    TESTDATA_INPUTS,\n    TESTDATA_OUTPUTS_CURRENT,\n    TESTDATA_OUTPUTS_EXPECTED,\n    BaseTestCase,\n)\n\n\nclass DisassemblerTestCase(BaseTestCase):\n    def test_instruction_list(self):\n        code = \"0x606060405236156100ca5763ffffffff60e060020a600035041663054f7d9c81146100d3578063095c21e3146100f45780630ba50baa146101165780631a3719321461012857806366529e3f14610153578063682789a81461017257806389f21efc146101915780638da5cb5b146101ac5780638f4ffcb1146101d55780639a1f2a5714610240578063b5f522f71461025b578063bd94b005146102b6578063c5ab5a13146102c8578063cc424839146102f1578063deb077b914610303578063f3fef3a314610322575b6100d15b5b565b005b34610000576100e0610340565b604080519115158252519081900360200190f35b3461000057610104600435610361565b60408051918252519081900360200190f35b34610000576100d1600435610382565b005b3461000057610104600160a060020a03600435166103b0565b60408051918252519081900360200190f35b346100005761010461041e565b60408051918252519081900360200190f35b3461000057610104610424565b60408051918252519081900360200190f35b34610000576100d1600160a060020a036004351661042b565b005b34610000576101b961046f565b60408051600160a060020a039092168252519081900360200190f35b3461000057604080516020600460643581810135601f81018490048402850184019095528484526100d1948235600160a060020a039081169560248035966044359093169594608494929391019190819084018382808284375094965061048595505050505050565b005b34610000576100d1600160a060020a03600435166106e7565b005b346100005761026b60043561072b565b60408051600160a060020a0390991689526020890197909752878701959095526060870193909352608086019190915260a085015260c084015260e083015251908190036101000190f35b34610000576100d160043561077a565b005b34610000576101b9610830565b60408051600160a060020a039092168252519081900360200190f35b34610000576100d160043561083f565b005b34610000576101046108a1565b60408051918252519081900360200190f35b34610000576100d1600160a060020a03600435166024356108a7565b005b60015474010000000000000000000000000000000000000000900460ff1681565b600681815481101561000057906000526020600020900160005b5054905081565b600054600160a060020a036301000000909104811690331681146103a557610000565b60038290555b5b5050565b6005546040805160006020918201819052825160e260020a631d010437028152600160a060020a03868116600483015293519194939093169263740410dc92602480830193919282900301818787803b156100005760325a03f115610000575050604051519150505b919050565b60035481565b6006545b90565b600054600160a060020a0363010000009091048116903316811461044e57610000565b60018054600160a060020a031916600160a060020a0384161790555b5b5050565b60005463010000009004600160a060020a031681565b6000600060006000600060006000600160149054906101000a900460ff16156104ad57610000565b87600081518110156100005760209101015160005460f860020a918290048202975002600160f860020a031990811690871614156105405760009450600196505b600587101561053057878781518110156100005790602001015160f860020a900460f860020a0260f860020a900485610100020194505b6001909601956104ee565b61053b8b868c610955565b6106d6565b600054610100900460f860020a02600160f860020a0319908116908716141561069e57506001955060009250829150819050805b60058710156105b657878781518110156100005790602001015160f860020a900460f860020a0260f860020a900481610100020190505b600190960195610574565b600596505b60098710156105fd57878781518110156100005790602001015160f860020a900460f860020a0260f860020a900484610100020193505b6001909601956105bb565b600996505b600d87101561064457878781518110156100005790602001015160f860020a900460f860020a0260f860020a900483610100020192505b600190960195610602565b600d96505b601187101561068b57878781518110156100005790602001015160f860020a900460f860020a0260f860020a900482610100020191505b600190960195610649565b61053b8b828c878787610bc4565b6106d6565b60005462010000900460f860020a02600160f860020a031990811690871614156106d15761053b8b8b610e8e565b6106d6565b610000565b5b5b5b5b5050505050505050505050565b600054600160a060020a0363010000009091048116903316811461070a57610000565b60058054600160a060020a031916600160a060020a0384161790555b5b5050565b600760208190526000918252604090912080546001820154600283015460038401546004850154600586015460068701549690970154600160a060020a03909516969395929491939092909188565b600081815260076020526040812054600160a060020a0390811690331681146107a257610000565b600083815260076020526040902080546004820154600583015460038401549395506107dc93600160a060020a039093169291029061105e565b50600060058301556107ed83611151565b6040805184815290517fb5dc9baf0cb4e7e4759fa12eadebddf9316e26147d5a9ae150c4228d5a1dd23f9181900360200190a161082933611244565b5b5b505050565b600154600160a060020a031681565b600054600160a060020a0363010000009091048116903316811461086257610000565b600080546040516301000000909104600160a060020a0316916108fc851502918591818181858888f1935050505015156103ab57610000565b5b5b5050565b60025481565b600054600160a060020a036301000000909104811690331681146108ca57610000565b6000805460408051602090810184905281517fa9059cbb0000000000000000000000000000000000000000000000000000000081526301000000909304600160a060020a0390811660048501526024840187905291519187169363a9059cbb9360448082019492918390030190829087803b156100005760325a03f115610000575050505b5b505050565b610100604051908101604052806000600160a060020a03168152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525060006007600085815260200190815260200160002061010060405190810160405290816000820160009054906101000a9004600160a060020a0316600160a060020a0316600160a060020a0316815260200160018201548152602001600282015481526020016003820154815260200160048201548152602001600582015481526020016006820154815260200160078201548152505091508260001415610a4857610000565b8160400151838115610000570615610a5f57610000565b6002548410610a6d57610000565b8160400151838115610000570490508160a00151811115610a8d57610000565b610a9c8584846020015161128e565b1515610aa757610000565b60a082018051829003815260008581526007602081815260409283902086518154600160a060020a031916600160a060020a038216178255918701516001820181905593870151600282015560608701516003820155608087015160048201559351600585015560c0860151600685015560e08601519390910192909255610b319190859061105e565b1515610b3c57610000565b610b518582846080015102846060015161105e565b1515610b5c57610000565b60a0820151158015610b71575060c082015115155b15610b7f57610b7f84611151565b5b6040805185815290517fb5dc9baf0cb4e7e4759fa12eadebddf9316e26147d5a9ae150c4228d5a1dd23f9181900360200190a1610bbc85611244565b5b5050505050565b831515610bd057610000565b82851415610bdd57610000565b801580610be8575081155b15610bf257610000565b80848115610000570615610c0557610000565b6005546040805160006020918201819052825160e260020a631d010437028152600160a060020a038b8116600483015293518695949094169363740410dc9360248084019491938390030190829087803b156100005760325a03f11561000057505050604051805190501015610c7a57610000565b610c8586858761128e565b1515610c9057610000565b600554604080517fbe0140a6000000000000000000000000000000000000000000000000000000008152600160a060020a03898116600483015260006024830181905260448301869052925193169263be0140a69260648084019391929182900301818387803b156100005760325a03f115610000575050506101006040519081016040528087600160a060020a03168152602001848152602001838152602001868152602001828681156100005704815260200182815260200160068054905081526020014281525060076000600254815260200190815260200160002060008201518160000160006101000a815481600160a060020a030219169083600160a060020a031602179055506020820151816001015560408201518160020155606082015181600301556080820151816004015560a0820151816005015560c0820151816006015560e0820151816007015590505060068054806001018281815481835581811511610e2757600083815260209020610e279181019083015b80821115610e235760008155600101610e0f565b5090565b5b505050916000526020600020900160005b50600280549182905560018201905560408051918252517fb5dc9baf0cb4e7e4759fa12eadebddf9316e26147d5a9ae150c4228d5a1dd23f92509081900360200190a1610e8586611244565b5b505050505050565b600354818115610000570615610ea357610000565b600160009054906101000a9004600160a060020a0316600160a060020a031663cf35bdd060016000604051602001526040518263ffffffff1660e060020a02815260040180828152602001915050602060405180830381600087803b156100005760325a03f115610000575050604080518051600080546020938401829052845160e060020a6323b872dd028152600160a060020a038981166004830152630100000090920482166024820152604481018890529451921694506323b872dd936064808201949392918390030190829087803b156100005760325a03f1156100005750506040515115159050610f9857610000565b600554600354600160a060020a039091169063be0140a6908490600190858115610000576040805160e060020a63ffffffff8816028152600160a060020a039095166004860152921515602485015204604483015251606480830192600092919082900301818387803b156100005760325a03f1156100005750505061101d82611244565b60408051600160a060020a038416815290517f30a29a0aa75376a69254bb98dbd11db423b7e8c3473fb5bf0fcba60bcbc42c4b9181900360200190a15b5050565b600081151561106c57610000565b6001546040805160006020918201819052825160e460020a630cf35bdd028152600481018790529251600160a060020a039094169363cf35bdd09360248082019493918390030190829087803b156100005760325a03f1156100005750505060405180519050600160a060020a031663a9059cbb85856000604051602001526040518363ffffffff1660e060020a0281526004018083600160a060020a0316600160a060020a0316815260200182815260200192505050602060405180830381600087803b156100005760325a03f115610000575050604051519150505b9392505050565b6000818152600760205260409020600690810154815490919060001981019081101561000057906000526020600020900160005b5054600682815481101561000057906000526020600020900160005b50556006805460001981018083559091908280158290116111e7576000838152602090206111e79181019083015b80821115610e235760008155600101610e0f565b5090565b5b50506006548314915061122d9050578060076000600684815481101561000057906000526020600020900160005b505481526020810191909152604001600020600601555b6000828152600760205260408120600601555b5050565b60045481600160a060020a031631101561128957600454604051600160a060020a0383169180156108fc02916000818181858888f19350505050151561128957610000565b5b5b50565b600081151561129c57610000565b6001546040805160006020918201819052825160e460020a630cf35bdd028152600481018790529251600160a060020a039094169363cf35bdd09360248082019493918390030190829087803b156100005760325a03f11561000057505060408051805160006020928301819052835160e060020a6323b872dd028152600160a060020a038a811660048301523081166024830152604482018a905294519490921694506323b872dd93606480840194939192918390030190829087803b156100005760325a03f115610000575050604051519150505b93925050505600a165627a7a723058204dee0e1bf170a9d122508f3e876c4a84893b12a7345591521af4ca737bb765000029\"\n        disassembly = Disassembly(code)\n        self.assertEqual(len(disassembly.instruction_list), 3523)\n\n    def test_easm_from_solidity_files(self):\n        for input_file in TESTDATA_INPUTS.iterdir():\n            output_expected = TESTDATA_OUTPUTS_EXPECTED / (input_file.name + \".easm\")\n            output_current = TESTDATA_OUTPUTS_CURRENT / (input_file.name + \".easm\")\n            if os.path.isfile(output_current) is False:\n                # Ignore files which do not have output data\n                continue\n            code = input_file.read_text()\n            disassembly = Disassembly(code)\n            output_current.write_text(disassembly.get_easm())\n\n            if not (output_expected.read_text() == output_current.read_text()):\n                self.found_changed_files(input_file, output_expected, output_current)\n\n        self.assert_and_show_changed_files()\n"
  },
  {
    "path": "tests/evmcontract_test.py",
    "content": "from mythril.ethereum.evmcontract import EVMContract\nfrom tests import BaseTestCase\n\n\nclass EVMContractTestCase(BaseTestCase):\n    def setUp(self):\n        \"\"\"\"\"\"\n        super().setUp()\n        self.code = \"0x60606040525b603c5b60006010603e565b9050593681016040523660008237602060003683856040603f5a0204f41560545760206000f35bfe5b50565b005b73c3b2ae46792547a96b9f84405e36d0e07edcd05c5b905600a165627a7a7230582062a884f947232ada573f95940cce9c8bfb7e4e14e21df5af4e884941afb55e590029\"\n        self.creation_code = \"0x60606040525b603c5b60006010603e565b9050593681016040523660008237602060003683856040603f5a0204f41560545760206000f35bfe5b50565b005b73c3b2ae46792547a96b9f84405e36d0e07edcd05c5b905600a165627a7a7230582062a884f947232ada573f95940cce9c8bfb7e4e14e21df5af4e884941afb55e590029\"\n\n\nclass Getinstruction_listTestCase(EVMContractTestCase):\n    def runTest(self):\n        \"\"\"\"\"\"\n        contract = EVMContract(self.code, self.creation_code)\n\n        disassembly = contract.disassembly\n\n        self.assertEqual(\n            len(disassembly.instruction_list),\n            53,\n            \"Error disassembling code using EVMContract.get_instruction_list()\",\n        )\n\n\nclass GetEASMTestCase(EVMContractTestCase):\n    def runTest(self):\n        \"\"\"\"\"\"\n        contract = EVMContract(self.code)\n\n        instruction_list = contract.get_easm()\n\n        self.assertTrue(\n            \"PUSH1 0x60\" in instruction_list,\n            \"Error obtaining EASM code through EVMContract.get_easm()\",\n        )\n\n\nclass MatchesExpressionTestCase(EVMContractTestCase):\n    def runTest(self):\n        \"\"\"\"\"\"\n        contract = EVMContract(self.code)\n\n        self.assertTrue(\n            contract.matches_expression(\"code#PUSH1# or code#PUSH1#\"),\n            \"Unexpected result in expression matching\",\n        )\n        self.assertFalse(\n            contract.matches_expression(\"func#abcdef#\"),\n            \"Unexpected result in expression matching\",\n        )\n"
  },
  {
    "path": "tests/features_test.py",
    "content": "from pathlib import Path\n\nimport pytest\n\nfrom mythril.mythril import MythrilDisassembler\nfrom mythril.solidity.features import SolidityFeatureExtractor\nfrom mythril.solidity.soliditycontract import SolidityContract\n\nTEST_FILES = Path(__file__).parent / \"testdata/input_contracts\"\nsolc_binary_5 = MythrilDisassembler._init_solc_binary(\"v0.5.0\")\nsolc_binary_8 = MythrilDisassembler._init_solc_binary(\"v0.8.0\")\nsolc_binary_82 = MythrilDisassembler._init_solc_binary(\"v0.8.20\")\n\n\ntest_cases = [\n    (\"suicide.sol\", 1, \"kill\", \"contains_selfdestruct\", True, solc_binary_5),\n    (\n        \"SimpleModifier.sol\",\n        1,\n        \"withdrawfunds\",\n        \"all_require_vars\",\n        set([\"msg\", \"owner\"]),\n        solc_binary_5,\n    ),\n    (\n        \"SimpleModifier.sol\",\n        1,\n        \"withdrawfunds\",\n        \"transfer_vars\",\n        set([\"owner\"]),\n        solc_binary_5,\n    ),\n    (\"rubixi.sol\", 18, \"init\", \"contains_selfdestruct\", False, solc_binary_5),\n    (\"rubixi.sol\", 18, \"collectAllFees\", \"has_owner_modifier\", True, solc_binary_5),\n    (\"rubixi.sol\", 18, \"collectAllFees\", \"is_payable\", False, solc_binary_5),\n    (\n        \"rubixi.sol\",\n        18,\n        \"collectAllFees\",\n        \"all_require_vars\",\n        set([\"collectedFees\", \"creator\"]),\n        solc_binary_5,\n    ),\n    (\n        \"rubixi.sol\",\n        18,\n        \"collectPercentOfFees\",\n        \"all_require_vars\",\n        set([\"collectedFees\", \"_pcent\", \"creator\"]),\n        solc_binary_5,\n    ),\n    (\n        \"rubixi.sol\",\n        18,\n        \"changeMultiplier\",\n        \"all_require_vars\",\n        set([\"_mult\", \"creator\"]),\n        solc_binary_5,\n    ),\n    (\"rubixi.sol\", 18, \"\", \"is_payable\", True, solc_binary_5),\n    (\n        \"rubixi.sol\",\n        18,\n        \"collectAllFees\",\n        \"transfer_vars\",\n        set([\"creator\"]),\n        solc_binary_5,\n    ),\n    (\"exceptions.sol\", 8, \"assert3\", \"contains_assert\", True, solc_binary_5),\n    (\n        \"exceptions.sol\",\n        8,\n        \"requireisfine\",\n        \"all_require_vars\",\n        set([\"input\"]),\n        solc_binary_5,\n    ),\n    (\"WalletLibrary.sol\", 23, \"execute\", \"has_owner_modifier\", True, solc_binary_5),\n    (\"WalletLibrary.sol\", 23, \"initWallet\", \"has_owner_modifier\", False, solc_binary_5),\n    (\n        \"WalletLibrary.sol\",\n        23,\n        \"initWallet\",\n        \"all_require_vars\",\n        set([\"m_numOwners\"]),\n        solc_binary_5,\n    ),\n    (\n        \"WalletLibrary.sol\",\n        23,\n        \"confirm\",\n        \"all_require_vars\",\n        set([\"success\"]),\n        solc_binary_5,\n    ),\n    (\"kcalls.sol\", 3, \"callSetN\", \"contains_call\", True, solc_binary_5),\n    (\"kcalls.sol\", 3, \"delegatecallSetN\", \"contains_delegatecall\", True, solc_binary_5),\n    (\"kcalls.sol\", 3, \"callcodeSetN\", \"contains_staticcall\", True, solc_binary_5),\n    (\n        \"regression_1.sol\",\n        5,\n        \"transfer\",\n        \"all_require_vars\",\n        set([\"userBalances\", \"msg\", \"_to\", \"_amount\"]),\n        solc_binary_8,\n    ),\n    (\"SecureVault.sol\", 11, \"withdraw\", \"has_owner_modifier\", True, solc_binary_82),\n    (\"SecureVault.sol\", 11, \"deposit\", \"has_owner_modifier\", False, solc_binary_82),\n    (\n        \"SecureVault.sol\",\n        11,\n        \"withdraw\",\n        \"all_require_vars\",\n        set([\"amount\", \"this\"]),\n        solc_binary_82,\n    ),\n]\n\n\n@pytest.mark.parametrize(\n    \"file_name, num_funcs, func_name, field, expected_value, solc_binary\", test_cases\n)\ndef test_features(file_name, num_funcs, func_name, field, expected_value, solc_binary):\n    input_file = TEST_FILES / file_name\n    name = file_name.split(\".\")[0]\n    if name[0].islower():\n        name = name.capitalize()\n    contract = SolidityContract(str(input_file), name=name, solc_binary=solc_binary)\n    ms = contract.solc_json[\"sources\"][str(input_file)][\"ast\"]\n    sfe = SolidityFeatureExtractor(ms)\n    fe = sfe.extract_features()\n    assert len(fe) == num_funcs\n    assert fe[func_name][field] == expected_value\n"
  },
  {
    "path": "tests/graph_test.py",
    "content": "\"\"\"\nThis test only checks whether dumping is successful, not whether the dumped state space makes sense\n\"\"\"\n\nfrom types import SimpleNamespace\n\nfrom mythril.ethereum import util\nfrom mythril.mythril import MythrilAnalyzer, MythrilDisassembler\nfrom mythril.solidity.soliditycontract import EVMContract\nfrom tests import TESTDATA_INPUTS\n\n\ndef test_generate_graph():\n    for input_file in TESTDATA_INPUTS.iterdir():\n        if input_file.name != \"origin.sol.o\":\n            continue\n        contract = EVMContract(input_file.read_text())\n        disassembler = MythrilDisassembler()\n\n        disassembler.contracts.append(contract)\n        args = SimpleNamespace(\n            execution_timeout=5,\n            max_depth=30,\n            solver_timeout=10000,\n            no_onchain_data=True,\n            loop_bound=None,\n            create_timeout=None,\n            disable_dependency_pruning=False,\n            custom_modules_directory=None,\n            pruning_factor=0,\n            parallel_solving=True,\n            unconstrained_storage=True,\n            call_depth_limit=3,\n            disable_iprof=True,\n            solver_log=None,\n            transaction_sequences=None,\n            disable_coverage_strategy=False,\n            disable_mutation_pruner=False,\n            enable_summaries=False,\n            enable_state_merging=False,\n        )\n        analyzer = MythrilAnalyzer(\n            disassembler=disassembler,\n            strategy=\"dfs\",\n            address=(util.get_indexed_address(0)),\n            cmd_args=args,\n        )\n\n        analyzer.graph_html(transaction_count=1)\n"
  },
  {
    "path": "tests/instructions/__init__.py",
    "content": ""
  },
  {
    "path": "tests/instructions/basefee_test.py",
    "content": "from mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.instructions import Instruction\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction\nfrom mythril.laser.smt import symbol_factory\n\n\ndef test_basefee():\n    # Arrange\n    world_state = WorldState()\n    account = world_state.create_account(balance=10, address=101)\n    account.code = Disassembly(\"60606040\")\n    environment = Environment(\n        account,\n        None,\n        None,\n        None,\n        None,\n        None,\n        basefee=symbol_factory.BitVecSym(\"gasfee\", 256),\n    )\n    og_state = GlobalState(\n        world_state, environment, None, MachineState(gas_limit=8000000)\n    )\n    og_state.transaction_stack.append(\n        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)\n    )\n\n    og_state.mstate.stack = []\n    instruction = Instruction(\"basefee\", dynamic_loader=None)\n\n    # Act\n    new_state = instruction.evaluate(og_state)[0]\n\n    # Assert\n    assert new_state.mstate.stack == [symbol_factory.BitVecSym(\"gasfee\", 256)]\n"
  },
  {
    "path": "tests/instructions/codecopy_test.py",
    "content": "from mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.instructions import Instruction\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction\n\n\ndef test_codecopy_concrete():\n    # Arrange\n    world_state = WorldState()\n    account = world_state.create_account(balance=10, address=101)\n    account.code = Disassembly(\"60606040\")\n    environment = Environment(account, None, None, None, None, None, None)\n    og_state = GlobalState(\n        world_state, environment, None, MachineState(gas_limit=8000000)\n    )\n    og_state.transaction_stack.append(\n        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)\n    )\n\n    og_state.mstate.stack = [2, 2, 2]\n    instruction = Instruction(\"codecopy\", dynamic_loader=None)\n\n    # Act\n    new_state = instruction.evaluate(og_state)[0]\n\n    # Assert\n    assert new_state.mstate.memory[2] == 96\n    assert new_state.mstate.memory[3] == 64\n"
  },
  {
    "path": "tests/instructions/create2_test.py",
    "content": "import pytest\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.instructions import Instruction\nfrom mythril.laser.ethereum.state.calldata import ConcreteCalldata\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.time_handler import time_handler\nfrom mythril.laser.ethereum.transaction.transaction_models import (\n    MessageCallTransaction,\n    TransactionStartSignal,\n)\nfrom mythril.laser.smt import symbol_factory\nfrom mythril.support.support_utils import get_code_hash\n\nlast_state = None\ncreated_contract_account = None\n\n\ndef generate_salted_address(code_str, salt, caller):\n    addr = hex(caller.value)[2:]\n    addr = \"0\" * (40 - len(addr)) + addr\n\n    salt = hex(salt.value)[2:]\n    salt = \"0\" * (64 - len(salt)) + salt\n\n    contract_address = int(\n        get_code_hash(\"0xff\" + addr + salt + get_code_hash(code_str)[2:])[26:], 16\n    )\n    return contract_address\n\n\ndef test_create2():\n    world_state = WorldState()\n    account = world_state.create_account(balance=10, address=101)\n    account.code = Disassembly(\"60606040\")\n    environment = Environment(account, None, None, None, None, None, None)\n    og_state = GlobalState(\n        world_state, environment, None, MachineState(gas_limit=8000000)\n    )\n    code_raw = []\n    code = \"606060606060\"\n    for i in range(len(code) // 2):\n        code_raw.append(int(code[2 * i : 2 * (i + 1)], 16))\n    calldata = ConcreteCalldata(\"1\", code_raw)\n    environment.calldata = calldata\n    og_state.transaction_stack.append(\n        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)\n    )\n    value = symbol_factory.BitVecVal(3, 256)\n    salt = symbol_factory.BitVecVal(10, 256)\n    og_state.mstate.stack = [\n        salt,\n        symbol_factory.BitVecVal(6, 256),\n        symbol_factory.BitVecVal(0, 256),\n        value,\n    ]\n    og_state.mstate.memory.extend(100)\n    og_state.mstate.memory[0:6] = [96] * 6\n    time_handler.start_execution(10)\n    instruction = Instruction(\"create2\", dynamic_loader=None)\n    # Act + Assert\n    with pytest.raises(TransactionStartSignal) as t:\n        _ = instruction.evaluate(og_state)[0]\n    assert t.value.transaction.call_value == value\n    assert t.value.transaction.code.bytecode == code\n    assert t.value.transaction.callee_account.address == generate_salted_address(\n        code, salt, account.address\n    )\n"
  },
  {
    "path": "tests/instructions/create_test.py",
    "content": "import pytest\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.instructions import Instruction\nfrom mythril.laser.ethereum.state.calldata import ConcreteCalldata\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.time_handler import time_handler\nfrom mythril.laser.ethereum.transaction.transaction_models import (\n    MessageCallTransaction,\n    TransactionStartSignal,\n)\n\nlast_state = None\ncreated_contract_account = None\n\n\ndef test_create():\n    world_state = WorldState()\n    account = world_state.create_account(balance=10, address=101)\n    account.code = Disassembly(\"60606060\")\n    environment = Environment(account, None, None, None, None, None, None)\n    og_state = GlobalState(\n        world_state, environment, None, MachineState(gas_limit=8000000)\n    )\n    code_raw = []\n    code = \"606060606060\"\n    for i in range(len(code) // 2):\n        code_raw.append(int(code[2 * i : 2 * (i + 1)], 16))\n    calldata = ConcreteCalldata(\"1\", code_raw)\n    environment.calldata = calldata\n    og_state.transaction_stack.append(\n        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)\n    )\n    value = 3\n    og_state.mstate.stack = [6, 0, value]\n    instruction = Instruction(\"create\", dynamic_loader=None)\n    og_state.mstate.memory.extend(100)\n    og_state.mstate.memory[0:6] = [96] * 6\n    time_handler.start_execution(100)\n\n    # Act + Assert\n    with pytest.raises(TransactionStartSignal) as t:\n        _ = instruction.evaluate(og_state)[0]\n\n    assert t.value.transaction.call_value == value\n    assert t.value.transaction.code.bytecode == code\n    assert (\n        t.value.transaction.callee_account.address\n        == world_state._generate_new_address(account.address.value)\n    )\n"
  },
  {
    "path": "tests/instructions/extcodecopy_test.py",
    "content": "from mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.instructions import Instruction\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction\nfrom mythril.laser.smt import symbol_factory\n\n\ndef test_extcodecopy():\n    # Arrange\n    new_world_state = WorldState()\n    new_account = new_world_state.create_account(balance=10, address=101)\n    new_account.code = Disassembly(\"60616240\")\n    ext_account = new_world_state.create_account(balance=1000, address=121)\n    ext_account.code = Disassembly(\"6040404040\")\n\n    new_environment = Environment(new_account, None, None, None, None, None, None)\n    state = GlobalState(\n        new_world_state, new_environment, None, MachineState(gas_limit=8000000)\n    )\n    state.transaction_stack.append(\n        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)\n    )\n\n    state.mstate.stack = [3, 0, 0, 121]\n    instruction = Instruction(\"extcodecopy\", dynamic_loader=None)\n\n    # Act\n    new_state = instruction.evaluate(state)[0]\n    # Assert\n    assert new_state.mstate.memory[0:3] == [96, 64, 64]\n\n\ndef test_extcodecopy_fail():\n    # Arrange\n    new_world_state = WorldState()\n    new_account = new_world_state.create_account(balance=10, address=101)\n    new_account.code = Disassembly(\"60616240\")\n    new_environment = Environment(new_account, None, None, None, None, None, None)\n    state = GlobalState(\n        new_world_state, new_environment, None, MachineState(gas_limit=8000000)\n    )\n    state.transaction_stack.append(\n        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)\n    )\n\n    state.mstate.stack = [2, 2, 2, symbol_factory.BitVecSym(\"FAIL\", 256)]\n    instruction = Instruction(\"extcodecopy\", dynamic_loader=None)\n\n    # Act\n    new_state = instruction.evaluate(state)[0]\n\n    # Assert\n    assert new_state.mstate.stack == []\n    assert new_state.mstate.memory._memory == state.mstate.memory._memory\n"
  },
  {
    "path": "tests/instructions/extcodehash_test.py",
    "content": "from mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.instructions import Instruction\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction\nfrom mythril.laser.smt import symbol_factory\nfrom mythril.support.support_utils import get_code_hash\n\n# Arrange\nworld_state = WorldState()\naccount = world_state.create_account(balance=10, address=101)\naccount.code = Disassembly(\"60606040\")\nworld_state.create_account(balance=10, address=1000)\nenvironment = Environment(account, None, None, None, None, None, None)\nog_state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))\nog_state.transaction_stack.append(\n    (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)\n)\n\ninstruction = Instruction(\"extcodehash\", dynamic_loader=None)\n\n\ndef test_extcodehash_no_account():\n    # If account does not exist, return 0\n    og_state.mstate.stack = [symbol_factory.BitVecVal(1, 256)]\n    new_state = instruction.evaluate(og_state)[0]\n    assert new_state.mstate.stack[-1] == 0\n\n\ndef test_extcodehash_no_code():\n    # If account code does not exist, return hash of empty set.\n    og_state.mstate.stack = [symbol_factory.BitVecVal(1000, 256)]\n    new_state = instruction.evaluate(og_state)[0]\n    assert hex(new_state.mstate.stack[-1].value) == get_code_hash(\"\")\n\n\ndef test_extcodehash_return_hash():\n    # If account code exists, return hash of the code.\n    og_state.mstate.stack = [symbol_factory.BitVecVal(101, 256)]\n    new_state = instruction.evaluate(og_state)[0]\n    assert hex(new_state.mstate.stack[-1].value) == get_code_hash(\"60606040\")\n"
  },
  {
    "path": "tests/instructions/push_test.py",
    "content": "import pytest\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.instructions import Instruction\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction\nfrom mythril.laser.smt import simplify, symbol_factory\n\n\ndef get_state(input):\n    world_state = WorldState()\n    account = world_state.create_account(balance=10, address=101)\n    account.code = Disassembly(input)\n    environment = Environment(account, None, None, None, None, None, None)\n    state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))\n    state.transaction_stack.append(\n        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)\n    )\n    return state\n\n\nBVV = symbol_factory.BitVecVal\nBV = symbol_factory.BitVecSym\n\ntest_data = [\n    (\"5F\", 0),  # Successful execution, stack consists of a single item, set to zero\n    (\n        \"5F\" * 1024,\n        0,\n    ),  # Successful execution, stack consists of 1024 items, all set to zero\n]\n\n\n@pytest.mark.parametrize(\"inputs,output\", test_data)\ndef test_push0(inputs, output):\n    # Arrange\n    state = get_state(inputs)\n\n    instruction = Instruction(\"push\", dynamic_loader=None)\n\n    # Act\n    new_state = instruction.evaluate(state)[0]\n\n    # Assert\n    assert simplify(new_state.mstate.stack[-1]) == output\n"
  },
  {
    "path": "tests/instructions/sar_test.py",
    "content": "import pytest\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.instructions import Instruction\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction\nfrom mythril.laser.smt import simplify, symbol_factory\n\n\ndef get_state():\n    world_state = WorldState()\n    account = world_state.create_account(balance=10, address=101)\n    account.code = Disassembly(\"60606040\")\n    environment = Environment(account, None, None, None, None, None, None)\n    state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))\n    state.transaction_stack.append(\n        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)\n    )\n    return state\n\n\nBVV = symbol_factory.BitVecVal\nBV = symbol_factory.BitVecSym\n\ntest_data = (\n    ([BVV(-1, 256), BVV(1, 256)], BVV(-1, 256)),\n    ([BVV(23, 256), BVV(257, 256)], BVV(0, 256)),\n    ([BVV(23, 256), BVV(30, 256)], BVV(23 >> 30, 256)),\n    ([BVV(-10, 256), BVV(10, 256)], BVV(-1, 256)),\n    ([BV(\"a\", 256), BV(\"b\", 256)], BV(\"a\", 256) >> BV(\"b\", 256)),\n)\n\n\n@pytest.mark.parametrize(\"inputs,output\", test_data)\ndef test_sar(inputs, output):\n    # Arrange\n    state = get_state()\n\n    state.mstate.stack = inputs\n    instruction = Instruction(\"sar\", dynamic_loader=None)\n\n    # Act\n    new_state = instruction.evaluate(state)[0]\n\n    # Assert\n    assert simplify(new_state.mstate.stack[-1]) == output\n\n\n@pytest.mark.parametrize(\n    # Test cases from https://github.com/ethereum/EIPs/blob/master/EIPS/eip-145.md#sar-arithmetic-shift-right\n    \"val1, val2, expected \",\n    (\n        (\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n            \"0x00\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n        ),\n        (\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n            \"0x01\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0x8000000000000000000000000000000000000000000000000000000000000000\",\n            \"0x01\",\n            \"0xc000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0x8000000000000000000000000000000000000000000000000000000000000000\",\n            \"0xff\",\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n        ),\n        (\n            \"0x8000000000000000000000000000000000000000000000000000000000000000\",\n            \"0x0100\",\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n        ),\n        (\n            \"0x8000000000000000000000000000000000000000000000000000000000000000\",\n            \"0x0101\",\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n        ),\n        (\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0x00\",\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n        ),\n        (\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0x01\",\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n        ),\n        (\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0xff\",\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n        ),\n        (\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0x0100\",\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n        ),\n        (\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n            \"0x01\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0x4000000000000000000000000000000000000000000000000000000000000000\",\n            \"0xfe\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n        ),\n        (\n            \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0xf8\",\n            \"0x000000000000000000000000000000000000000000000000000000000000007f\",\n        ),\n        (\n            \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0xfe\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n        ),\n        (\n            \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0xff\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0x0100\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n    ),\n)\ndef test_concrete_sar(val1, val2, expected):\n    # Arrange\n    state = get_state()\n    state.mstate.stack = [BVV(int(val1, 16), 256), BVV(int(val2, 16), 256)]\n    expected = BVV(int(expected, 16), 256)\n    instruction = Instruction(\"sar\", dynamic_loader=None)\n\n    # Act\n    new_state = instruction.evaluate(state)[0]\n\n    # Assert\n    assert simplify(new_state.mstate.stack[-1]) == expected\n"
  },
  {
    "path": "tests/instructions/shl_test.py",
    "content": "import pytest\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.instructions import Instruction\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction\nfrom mythril.laser.smt import simplify, symbol_factory\n\n\ndef get_state():\n    world_state = WorldState()\n    account = world_state.create_account(balance=10, address=101)\n    account.code = Disassembly(\"60606040\")\n    environment = Environment(account, None, None, None, None, None, None)\n    state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))\n    state.transaction_stack.append(\n        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)\n    )\n    return state\n\n\nBVV = symbol_factory.BitVecVal\nBV = symbol_factory.BitVecSym\n\ntest_data = (\n    ([BVV(2, 256), BVV(2, 256)], BVV(8, 256)),\n    ([BVV(23, 256), BVV(257, 256)], BVV(0, 256)),\n    ([BVV(23, 256), BVV(30, 256)], BVV(23 * (1 << 30), 256)),\n    ([BV(\"a\", 256), BVV(270, 256)], 0),\n    ([BV(\"a\", 256), BV(\"b\", 256)], BV(\"a\", 256) << BV(\"b\", 256)),\n)\n\n\n@pytest.mark.parametrize(\"inputs,output,\", test_data)\ndef test_shl(inputs, output):\n    # Arrange\n    state = get_state()\n\n    state.mstate.stack = inputs\n    instruction = Instruction(\"shl\", dynamic_loader=None)\n\n    # Act\n    new_state = instruction.evaluate(state)[0]\n\n    # Assert\n    assert simplify(new_state.mstate.stack[-1]) == output\n\n\n@pytest.mark.parametrize(\n    # Testcases from https://github.com/ethereum/EIPs/blob/master/EIPS/eip-145.md#shl-shift-left\n    \"val1, val2, expected\",\n    (\n        (\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n            \"0x00\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n        ),\n        (\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n            \"0x01\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n        ),\n        (\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n            \"0xff\",\n            \"0x8000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n            \"0x0100\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n            \"0x0101\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0x00\",\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n        ),\n        (\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0x01\",\n            \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe\",\n        ),\n        (\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0xff\",\n            \"0x8000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0x0100\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n            \"0x01\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0x01\",\n            \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe\",\n        ),\n    ),\n)\ndef test_concrete_shl(val1, val2, expected):\n    # Arrange\n    state = get_state()\n    state.mstate.stack = [BVV(int(val1, 16), 256), BVV(int(val2, 16), 256)]\n    expected = BVV(int(expected, 16), 256)\n    instruction = Instruction(\"shl\", dynamic_loader=None)\n\n    # Act\n    new_state = instruction.evaluate(state)[0]\n\n    # Assert\n    assert simplify(new_state.mstate.stack[-1]) == expected\n"
  },
  {
    "path": "tests/instructions/shr_test.py",
    "content": "import pytest\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.instructions import Instruction\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction\nfrom mythril.laser.smt import LShR, simplify, symbol_factory\n\n\ndef get_state():\n    world_state = WorldState()\n    account = world_state.create_account(balance=10, address=101)\n    account.code = Disassembly(\"60606040\")\n    environment = Environment(account, None, None, None, None, None, None)\n    state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))\n    state.transaction_stack.append(\n        (MessageCallTransaction(world_state=WorldState(), gas_limit=8000000), None)\n    )\n    return state\n\n\nBVV = symbol_factory.BitVecVal\nBV = symbol_factory.BitVecSym\n\ntest_data = (\n    ([BVV(33, 256), BVV(4, 256)], BVV(2, 256)),\n    ([BVV(1 << 100, 256), BVV(257, 256)], BVV(0, 256)),\n    ([BVV(23233, 256), BVV(10, 256)], BVV(23233 // (1 << 10), 256)),\n    ([BV(\"a\", 256), BVV(270, 256)], 0),\n    (\n        [BV(\"a\", 256), BV(\"b\", 256)],\n        LShR(BV(\"a\", 256), BV(\"b\", 256)),\n    ),  # Current approximate specs\n)\n\n\n@pytest.mark.parametrize(\"inputs,output,\", test_data)\ndef test_shr(inputs, output):\n    # Arrange\n    state = get_state()\n\n    state.mstate.stack = inputs\n    instruction = Instruction(\"shr\", dynamic_loader=None)\n\n    # Act\n    new_state = instruction.evaluate(state)[0]\n\n    # Assert\n    assert simplify(new_state.mstate.stack[-1]) == output\n\n\n@pytest.mark.parametrize(\n    # Cases: https://github.com/ethereum/EIPs/blob/master/EIPS/eip-145.md#shr-logical-shift-right\n    \"val1, val2, expected\",\n    (\n        (\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n            \"0x00\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n        ),\n        (\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n            \"0x01\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0x8000000000000000000000000000000000000000000000000000000000000000\",\n            \"0x01\",\n            \"0x4000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0x8000000000000000000000000000000000000000000000000000000000000000\",\n            \"0xff\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n        ),\n        (\n            \"0x8000000000000000000000000000000000000000000000000000000000000000\",\n            \"0x0100\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0x8000000000000000000000000000000000000000000000000000000000000000\",\n            \"0x0101\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0x00\",\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n        ),\n        (\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0x01\",\n            \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n        ),\n        (\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0xff\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n        ),\n        (\n            \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"0x0100\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n        (\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n            \"0x01\",\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ),\n    ),\n)\ndef test_concrete_shr(val1, val2, expected):\n    state = get_state()\n    state.mstate.stack = [BVV(int(val1, 16), 256), BVV(int(val2, 16), 256)]\n    expected = BVV(int(expected, 16), 256)\n    instruction = Instruction(\"shr\", dynamic_loader=None)\n\n    # Act\n    new_state = instruction.evaluate(state)[0]\n\n    # Assert\n    assert simplify(new_state.mstate.stack[-1]) == expected\n"
  },
  {
    "path": "tests/instructions/static_call_test.py",
    "content": "from unittest.mock import patch\n\nimport pytest\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.call import SymbolicCalldata\nfrom mythril.laser.ethereum.evm_exceptions import WriteProtection\nfrom mythril.laser.ethereum.instructions import Instruction\nfrom mythril.laser.ethereum.state.account import Account\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.transaction import TransactionStartSignal\nfrom mythril.laser.ethereum.transaction.transaction_models import MessageCallTransaction\nfrom mythril.laser.smt import symbol_factory\n\n\ndef get_global_state():\n    active_account = Account(\"0x0\", code=Disassembly(\"60606040\"))\n    environment = Environment(\n        active_account, None, SymbolicCalldata(\"2\"), None, None, None, None\n    )\n    world_state = WorldState()\n    world_state.put_account(active_account)\n    state = GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))\n    state.transaction_stack.append(\n        (MessageCallTransaction(world_state=world_state, gas_limit=8000000), None)\n    )\n    return state\n\n\n@patch(\n    \"mythril.laser.ethereum.instructions.get_call_parameters\",\n    return_value=(\n        \"0\",\n        Account(code=Disassembly(code=\"0x00\"), address=\"0x19\"),\n        0,\n        0,\n        0,\n        0,\n        0,\n    ),\n)\ndef test_staticcall(f1):\n    # Arrange\n    state = get_global_state()\n    state.mstate.stack = [10, 10, 10, 10, 10, 10, 10, 10, 0]\n    instruction = Instruction(\"staticcall\", dynamic_loader=None)\n\n    # Act and Assert\n    with pytest.raises(TransactionStartSignal) as ts:\n        instruction.evaluate(state)\n    assert ts.value.transaction.static\n    assert ts.value.transaction.initial_global_state().environment.static\n\n\ntest_data = (\n    \"selfdestruct\",\n    \"create\",\n    \"create2\",\n    \"log0\",\n    \"log1\",\n    \"log2\",\n    \"log3\",\n    \"log4\",\n    \"sstore\",\n)\n\n\n@pytest.mark.parametrize(\"input\", test_data)\ndef test_staticness(input):\n    # Arrange\n    state = get_global_state()\n    state.environment.static = True\n    state.mstate.stack = []\n    instruction = Instruction(input, dynamic_loader=None)\n\n    # Act and Assert\n    with pytest.raises(WriteProtection):\n        instruction.evaluate(state)\n\n\ntest_data_call = ((0, True), (100, False))\n\n\n@pytest.mark.parametrize(\"input, success\", test_data_call)\n@patch(\"mythril.laser.ethereum.instructions.get_call_parameters\")\ndef test_staticness_call_concrete(f1, input, success):\n    # Arrange\n    state = get_global_state()\n    state.environment.static = True\n    state.mstate.stack = [10] * 100\n    code = Disassembly(code=\"616263\")\n    f1.return_value = (\"0\", Account(code=code, address=\"0x19\"), 0, input, 0, 0, 0)\n    instruction = Instruction(\"call\", dynamic_loader=None)\n\n    # Act and Assert\n    if success:\n        with pytest.raises(TransactionStartSignal) as ts:\n            instruction.evaluate(state)\n        assert ts.value.transaction.static\n    else:\n        with pytest.raises(WriteProtection):\n            instruction.evaluate(state)\n\n\n@patch(\"mythril.laser.ethereum.instructions.get_call_parameters\")\ndef test_staticness_call_symbolic(f1):\n    # Arrange\n    state = get_global_state()\n    state.environment.static = True\n    state.mstate.stack = [10] * 100\n    call_value = symbol_factory.BitVecSym(\"x\", 256)\n    code = Disassembly(code=\"616263\")\n    f1.return_value = (\"0\", Account(code=code, address=\"0x19\"), 0, call_value, 0, 0, 0)\n    instruction = Instruction(\"call\", dynamic_loader=None)\n\n    # Act and Assert\n    with pytest.raises(TransactionStartSignal) as ts:\n        instruction.evaluate(state)\n\n    assert ts.value.transaction.static\n    assert ts.value.global_state.world_state.constraints[-1] == (call_value == 0)\n"
  },
  {
    "path": "tests/integration_tests/analysis_tests.py",
    "content": "import json\n\nimport pytest\nfrom utils import output_of\n\nfrom tests import PROJECT_DIR, TESTDATA\n\nMYTH = str(PROJECT_DIR / \"myth\")\ntest_data = (\n    (\n        \"flag_array.sol.o\",\n        {\n            \"TX_COUNT\": 1,\n            \"TX_OUTPUT\": 1,\n            \"MODULE\": \"EtherThief\",\n            \"ISSUE_COUNT\": 1,\n            \"ISSUE_NUMBER\": 0,\n        },\n        \"0xab12585800000000000000000000000000000000000000000000000000000000000004d2\",\n    ),\n    (\n        \"exceptions_0.8.0.sol.o\",\n        {\n            \"TX_COUNT\": 1,\n            \"TX_OUTPUT\": 1,\n            \"MODULE\": \"Exceptions\",\n            \"ISSUE_COUNT\": 2,\n            \"ISSUE_NUMBER\": 0,\n        },\n        None,\n    ),\n    (\n        \"symbolic_exec_bytecode.sol.o\",\n        {\n            \"TX_COUNT\": 1,\n            \"TX_OUTPUT\": 0,\n            \"MODULE\": \"AccidentallyKillable\",\n            \"ISSUE_COUNT\": 1,\n            \"ISSUE_NUMBER\": 0,\n        },\n        None,\n    ),\n    (\n        \"extcall.sol.o\",\n        {\n            \"TX_COUNT\": 1,\n            \"TX_OUTPUT\": 0,\n            \"MODULE\": \"Exceptions\",\n            \"ISSUE_COUNT\": 1,\n            \"ISSUE_NUMBER\": 0,\n        },\n        None,\n    ),\n)\n\n\n@pytest.mark.parametrize(\"file_name, tx_data, calldata\", test_data)\ndef test_analysis(file_name, tx_data, calldata):\n    bytecode_file = str(TESTDATA / \"inputs\" / file_name)\n    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\"\"\"\n    output = json.loads(output_of(command))\n\n    assert len(output[0][\"issues\"]) == tx_data[\"ISSUE_COUNT\"]\n    if calldata:\n        test_case = output[0][\"issues\"][tx_data[\"ISSUE_NUMBER\"]][\"extra\"][\"testCases\"][\n            0\n        ]\n        assert test_case[\"steps\"][tx_data[\"TX_OUTPUT\"]][\"input\"] == calldata\n\n\n@pytest.mark.parametrize(\"file_name, tx_data, calldata\", test_data)\ndef test_analysis_pending(file_name, tx_data, calldata):\n    bytecode_file = str(TESTDATA / \"inputs\" / file_name)\n    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\"\"\"\n    output = json.loads(output_of(command))\n\n    assert len(output[0][\"issues\"]) == tx_data[\"ISSUE_COUNT\"]\n    if calldata:\n        test_case = output[0][\"issues\"][tx_data[\"ISSUE_NUMBER\"]][\"extra\"][\"testCases\"][\n            0\n        ]\n        assert test_case[\"steps\"][tx_data[\"TX_OUTPUT\"]][\"input\"] == calldata\n\n\ntest_data_code = [\n    (\"114\", f\"{TESTDATA}/input_contracts/tx.sol\", True),\n    (\"123\", f\"{TESTDATA}/input_contracts/requirements_violation_pos.sol\", True),\n    (\"123\", f\"{TESTDATA}/input_contracts/requirements_violation_neg.sol\", False),\n    (\"132\", f\"{TESTDATA}/input_contracts/unexpected_ether_pos.sol\", True),\n    (\"132\", f\"{TESTDATA}/input_contracts/unexpected_ether_neg.sol\", False),\n]\n\n\n@pytest.mark.parametrize(\"swc, file_path, exists\", test_data_code)\ndef test_analysis_code(swc, file_path, exists):\n    assert (\n        \"SWC ID: {}\".format(swc)\n        in output_of(f\"python3 {MYTH} a {file_path} --solver-timeout 5000\")\n    ) == exists\n"
  },
  {
    "path": "tests/integration_tests/coverage_metrics_test.py",
    "content": "import pytest\nfrom utils import output_of\n\nfrom tests import PROJECT_DIR, TESTDATA\n\nMYTH = str(PROJECT_DIR / \"myth\")\n\n\ntest_data = [\n    (open(f\"{TESTDATA}/inputs/coverage.sol.o\").read(), True),\n]\n\n\n@pytest.mark.parametrize(\"code, exists\", test_data)\ndef test_basic_coverage(code, exists):\n    assert (\n        \"instruction_discovery_time\"\n        in output_of(f\"{MYTH} a -c 0x{code} --solver-timeout 1000 -o jsonv2\")\n    ) == exists\n"
  },
  {
    "path": "tests/integration_tests/old_version_test.py",
    "content": "import json\n\nimport pytest\nfrom utils import output_of\n\nfrom tests import PROJECT_DIR, TESTDATA\n\nMYTH = str(PROJECT_DIR / \"myth\")\ntest_data = (\n    (\"old_origin.sol\", 1),\n    (\"old_version.sol\", 2),\n)\n\n\n@pytest.mark.parametrize(\"file_name, issues\", test_data)\ndef test_analysis_old(file_name, issues):\n    file = str(TESTDATA / \"input_contracts\" / file_name)\n    command = f\"python3 {MYTH} analyze {file} -o jsonv2\"\n    output = json.loads(output_of(command))\n    assert len(output[0][\"issues\"]) >= issues\n"
  },
  {
    "path": "tests/integration_tests/safe_functions_test.py",
    "content": "import pytest\nfrom utils import output_of\n\nfrom tests import PROJECT_DIR, TESTDATA\n\nMYTH = str(PROJECT_DIR / \"myth\")\ntest_data = (\n    (\"suicide.sol\", [], \"0.5.0\"),\n    (\"overflow.sol\", [\"balanceOf(address)\", \"totalSupply()\"], \"0.5.0\"),\n    (\n        \"ether_send.sol\",\n        [\n            \"crowdfunding()\",\n            \"owner()\",\n            \"balances(address)\",\n            \"getBalance()\",\n        ],\n        \"0.5.0\",\n    ),\n)\n\nbytes_test_data = (\n    (\"suicide.sol.o\", []),\n    (\"overflow.sol.o\", [\"balanceOf(address)\", \"totalSupply()\"]),\n    (\n        \"ether_send.sol.o\",\n        [\"crowdfunding()\", \"withdrawfunds()\", \"owner()\", \"balances(address)\"],\n    ),\n)\n\n\n@pytest.mark.parametrize(\"file_name, safe_funcs, version\", test_data)\ndef test_analysis(file_name, safe_funcs, version):\n    file = str(TESTDATA / \"input_contracts\" / file_name)\n    command = f\"python3 {MYTH} safe-functions {file} --solv {version}\"\n    output = output_of(command)\n    assert f\"{len(safe_funcs)} functions are deemed safe in this contract\" in output\n    for func in safe_funcs:\n        assert func in output\n\n\n@pytest.mark.parametrize(\"file_name, safe_funcs\", bytes_test_data)\ndef test_bytecode_analysis(file_name, safe_funcs):\n    file = str(TESTDATA / \"inputs\" / file_name)\n    command = f\"python3 {MYTH} safe-functions --bin-runtime -f {file}\"\n    output = output_of(command)\n    assert f\"{len(safe_funcs)} functions are deemed safe in this contract\" in output\n"
  },
  {
    "path": "tests/integration_tests/solc_settings_test.py",
    "content": "from subprocess import STDOUT, check_output\n\nfrom tests import PROJECT_DIR, TESTDATA\n\nMYTH = str(PROJECT_DIR / \"myth\")\n\n\ndef test_positive_solc_settings():\n    file_dir = str(TESTDATA / \"json_test_dir\" / \"dir_a\")\n    json_file_path = str(TESTDATA / \"json_test_dir\" / \"test_file.json\")\n    file_path = file_dir + \"/input_file.sol\"\n\n    command = f\"cd {file_dir} && python3 {MYTH} analyze {file_path} --solc-json {json_file_path} --solv 0.8.0\"\n    output = check_output(command, shell=True, stderr=STDOUT).decode(\"UTF-8\")\n    assert \"The analysis was completed successfully\" in output\n\n\ndef test_positive_solc_args():\n    base_path = str(TESTDATA)\n    file_dir = str(TESTDATA / \"json_test_dir\" / \"dir_a\")\n    file_path = file_dir + \"/input_file_args.sol\"\n\n    command = f\"\"\"cd {file_dir} && python3 {MYTH} analyze {file_path} --solc-args \"--allow-paths {base_path}\" --solv 0.8.0\"\"\"\n    output = check_output(command, shell=True, stderr=STDOUT).decode(\"UTF-8\")\n    assert \"The analysis was completed successfully\" in output\n\n\ndef test_neg_optimizer_solc_settings():\n    file_dir = str(TESTDATA / \"json_test_dir\" / \"dir_a\")\n    json_file_path = str(TESTDATA / \"json_test_dir\" / \"test_file_disable.json\")\n    file_path = file_dir + \"/input_file.sol\"\n\n    command = f\"cd {file_dir} && python3 {MYTH} analyze {file_path} --solc-json {json_file_path} --solv 0.8.0\"\n    output = check_output(command, shell=True, stderr=STDOUT).decode(\"UTF-8\")\n    assert \"Stack too deep when compiling inline assembly\" in output\n\n\ndef test_negative_solc_settings():\n    file_path = str(TESTDATA / \"json_test_dir\" / \"dir_a\" / \"input_file.sol\")\n\n    command = f\"python3 {MYTH} analyze {file_path} --solv 0.8.0\"\n    output = check_output(command, shell=True, stderr=STDOUT).decode(\"UTF-8\")\n    assert (\n        \"\"\"ParserError: Source \"@openzeppelin/contracts/token/PRC20/PRC20.sol\"\"\"\n        in output\n    )\n"
  },
  {
    "path": "tests/integration_tests/src_mapping_test.py",
    "content": "from subprocess import STDOUT\n\nfrom utils import output_of\n\nfrom tests import PROJECT_DIR, TESTDATA\n\nMYTH = str(PROJECT_DIR / \"myth\")\n\n\ndef test_positive_solc_settings():\n    file_path = str(TESTDATA / \"input_contracts\" / \"destruct_crlf.sol\")\n\n    command = f\"python3 {MYTH} analyze {file_path} --solv 0.5.0\"\n    output = output_of(command, stderr=STDOUT)\n    assert \"selfdestruct(addr)\" in output\n"
  },
  {
    "path": "tests/integration_tests/state_merge_tests.py",
    "content": "import os\nimport subprocess\n\nimport pytest\n\nfrom tests import PROJECT_DIR, TESTDATA\n\nMYTH = str(PROJECT_DIR / \"myth\")\n\n\ndef output_with_stderr(command):\n    return subprocess.run(\n        command.split(\" \"), stdout=subprocess.PIPE, stderr=subprocess.PIPE\n    )\n\n\ntestfile_path = os.path.split(__file__)[0]\n\n\"\"\"\ncalls.bin is the bytecode of \nhttps://github.com/ConsenSys/mythril/blob/develop/solidity_examples/calls.sol\n\"\"\"\nswc_test_data = [\n    (\"114\", f\"{TESTDATA}/inputs/calls.sol.o\", (9, 5)),\n]\n\n\n@pytest.mark.parametrize(\"swc, code, states_reduction\", swc_test_data)\ndef test_merge(swc, code, states_reduction):\n    output = output_with_stderr(\n        f\"{MYTH} -v4 a -f {code} -t 1 --solver-timeout 500 -mUncheckedRetval --enable-state-merging\"\n    )\n    output_str = f\"States reduced from {states_reduction[0]} to {states_reduction[1]}\"\n    assert output_str in output.stderr.decode(\"utf-8\")\n"
  },
  {
    "path": "tests/integration_tests/summary_test.py",
    "content": "import json\n\nimport pytest\nfrom utils import output_of\n\nfrom tests import PROJECT_DIR, TESTDATA\n\nMYTH = str(PROJECT_DIR / \"myth\")\n\n\ntest_data = (\n    # TODO: The commented tests should be sped up!\n    # (\n    #    \"destruct.sol\",\n    #    {\n    #        \"TX_COUNT\": 5,\n    #        \"MODULE\": \"AccidentallyKillable\",\n    #        \"ISSUE_COUNT\": 1,\n    #        \"VERSION\": \"v0.5.0\",\n    #    },\n    # ),\n    # (\n    #    \"destruct.sol\",\n    #    {\n    #        \"TX_COUNT\": 4,\n    #        \"MODULE\": \"AccidentallyKillable\",\n    #        \"ISSUE_COUNT\": 0,\n    #        \"VERSION\": \"v0.5.0\",\n    #    },\n    # ),\n    (\n        \"theft.sol\",\n        {\"TX_COUNT\": 4, \"MODULE\": \"EtherThief\", \"ISSUE_COUNT\": 1, \"VERSION\": \"v0.5.0\"},\n    ),\n    (\n        \"theft.sol\",\n        {\"TX_COUNT\": 3, \"MODULE\": \"EtherThief\", \"ISSUE_COUNT\": 0, \"VERSION\": \"v0.5.0\"},\n    ),\n    (\n        \"large.sol\",\n        {\n            \"TX_COUNT\": 11,\n            \"MODULE\": \"AccidentallyKillable\",\n            \"ISSUE_COUNT\": 1,\n            \"VERSION\": \"v0.5.0\",\n        },\n    ),\n    (\n        \"large.sol\",\n        {\n            \"TX_COUNT\": 10,\n            \"MODULE\": \"AccidentallyKillable\",\n            \"ISSUE_COUNT\": 0,\n            \"VERSION\": \"v0.5.0\",\n        },\n    ),\n    (\n        \"hash_test.sol\",\n        {\n            \"TX_COUNT\": 2,\n            \"MODULE\": \"AccidentallyKillable\",\n            \"ISSUE_COUNT\": 1,\n            \"VERSION\": \"v0.4.24\",\n        },\n    ),\n    (\n        \"complex.sol\",\n        {\n            \"TX_COUNT\": 2,\n            \"MODULE\": \"AccidentallyKillable\",\n            \"ISSUE_COUNT\": 1,\n            \"VERSION\": \"v0.5.0\",\n        },\n    ),\n    (\n        \"base_case.sol\",\n        {\n            \"TX_COUNT\": 1,\n            \"MODULE\": \"AccidentallyKillable\",\n            \"ISSUE_COUNT\": 1,\n            \"VERSION\": \"v0.5.0\",\n        },\n    ),\n    (\n        \"simple_theft.sol\",\n        {\n            \"TX_COUNT\": 1,\n            \"MODULE\": \"EtherThief\",\n            \"ISSUE_COUNT\": 0,\n            \"VERSION\": \"v0.5.0\",\n        },\n    ),\n)\n\n\n@pytest.mark.parametrize(\"file_name, tx_data\", test_data)\ndef test_analysis(file_name, tx_data):\n    file_path = str(TESTDATA / \"input_contracts\" / file_name)\n    command = f\"\"\"python3 {MYTH} analyze {file_path} -t {tx_data[\"TX_COUNT\"]} -o jsonv2 -m {tx_data[\"MODULE\"]} --solver-timeout 60000 --solv {tx_data[\"VERSION\"]} --execution-timeout 300 --enable-summaries\"\"\"\n    output = json.loads(output_of(command))\n    assert len(output[0][\"issues\"]) == tx_data[\"ISSUE_COUNT\"]\n"
  },
  {
    "path": "tests/integration_tests/transient_storage_test.py",
    "content": "import pytest\nfrom utils import output_of\n\nfrom tests import PROJECT_DIR, TESTDATA\n\nMYTH = str(PROJECT_DIR / \"myth\")\n\ninput_files = [\n    (\"transient.sol\", False),\n    (\"transient_bug.sol\", True),\n    (\"transient_bug_2.sol\", True),\n    (\"transient_recursive.sol\", True),\n]\n\n\n@pytest.mark.parametrize(\"file_name, expected_has_bug\", input_files)\ndef test_positive_solc_settings(file_name, expected_has_bug):\n    file_path = str(TESTDATA / \"input_contracts\" / file_name)\n\n    # Call the function you want to test\n    command = f\"python3 {MYTH} analyze {file_path} -mExceptions --solv 0.8.25\"\n    actual_output = output_of(command)\n\n    # Assertion\n    if expected_has_bug:\n        assert \"An assertion violation was triggered\" in actual_output\n    else:\n        assert (\n            \"The analysis was completed successfully. No issues were detected\"\n            in actual_output\n        )\n"
  },
  {
    "path": "tests/integration_tests/utils.py",
    "content": "from subprocess import CalledProcessError, check_output\n\n\ndef output_of(command, stderr=None):\n    \"\"\"\n\n    :param command:\n    :return:\n    \"\"\"\n    try:\n        return check_output(command, shell=True, stderr=stderr).decode(\"UTF-8\")\n    except CalledProcessError as exc:\n        return exc.output.decode(\"UTF-8\")\n"
  },
  {
    "path": "tests/integration_tests/version_test.py",
    "content": "import pytest\nfrom utils import output_of\n\nfrom tests import PROJECT_DIR, TESTDATA\n\nMYTH = str(PROJECT_DIR / \"myth\")\ntest_data = (\n    (\"version_contract.sol\", \"v0.7.0\", True),\n    (\"version_contract.sol\", \"v0.8.0\", False),\n    (\"version_contract_0.8.0.sol\", None, False),\n    (\"version_contract_0.7.0.sol\", None, True),\n    (\"version_chaos.sol\", None, True),\n    (\"version_2.sol\", None, True),\n    (\"version_3.sol\", None, True),\n    (\"version_4.sol\", None, False),\n    (\"version_patch.sol\", None, False),\n    (\"integer_edge_case.sol\", None, True),\n    (\"integer_edge_case.sol\", \"v0.8.19\", True),\n)\n\n\n@pytest.mark.parametrize(\"file_name, version, has_overflow\", test_data)\ndef test_analysis(file_name, version, has_overflow):\n    file = str(TESTDATA / \"input_contracts\" / file_name)\n    if version:\n        command = f\"python3 {MYTH} analyze {file} --solv {version}\"\n    else:\n        command = f\"python3 {MYTH} analyze {file}\"\n    output = output_of(command)\n    if has_overflow:\n        assert \"SWC ID: 101\" in output\n    else:\n        assert (\n            \"The analysis was completed successfully. No issues were detected.\"\n            in output\n        )\n"
  },
  {
    "path": "tests/laser/Precompiles/blake2_test.py",
    "content": "import pytest\n\nfrom mythril.laser.ethereum.natives import blake2b_fcompress\n\n\n# Test cases taken from https://eips.ethereum.org/EIPS/eip-152.\n# One of the test case is expected to take a few hrs so I ignored it\n@pytest.mark.parametrize(\n    \"input_hex, expected_result\",\n    (\n        (\"\", \"\"),\n        (\n            \"00000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001\",  # noqa: E501\n            \"\",\n        ),\n        (\n            \"000000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001\",  # noqa: E501\n            \"\",\n        ),\n        (\n            \"0000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000002\",  # noqa: E501\n            \"\",\n        ),\n        (\n            \"0000000048c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001\",  # noqa: E501\n            \"08c9bcf367e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d282e6ad7f520e511f6c3e2b8c68059b9442be0454267ce079217e1319cde05b\",  # noqa: E501\n        ),\n        (\n            \"0000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001\",  # noqa: E501\n            \"ba80a53f981c4d0d6a2797b69f12f6e94c212f14685ac4b74b12bb6fdbffa2d17d87c5392aab792dc252d5de4533cc9518d38aa8dbf1925ab92386edd4009923\",  # noqa: E501\n        ),\n        (\n            \"0000000c48c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000000\",  # noqa: E501\n            \"75ab69d3190a562c51aef8d88f1c2775876944407270c42c9844252c26d2875298743e7f6d5ea2f2d3e8d226039cd31b4e426ac4f2d3d666a610c2116fde4735\",  # noqa: E501\n        ),\n        (\n            \"0000000148c9bdf267e6096a3ba7ca8485ae67bb2bf894fe72f36e3cf1361d5f3af54fa5d182e6ad7f520e511f6c3e2b8c68059b6bbd41fbabd9831f79217e1319cde05b61626300000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000300000000000000000000000000000001\",  # noqa: E501\n            \"b63a380cb2897d521994a85234ee2c181b5f844d2c624c002677e9703449d2fba551b3a8333bcdf5f2f7e08993d53923de3d64fcc68c034e717b9293fed7a421\",  # noqa: E501\n        ),\n    ),\n)\ndef test_blake2(input_hex, expected_result):\n    input_hex = bytearray.fromhex(input_hex)\n    assert blake2b_fcompress(input_hex) == list(bytearray.fromhex(expected_result))\n"
  },
  {
    "path": "tests/laser/Precompiles/ec_add_test.py",
    "content": "from unittest.mock import patch\n\nfrom eth_utils import decode_hex\nfrom py_ecc.optimized_bn128 import FQ\n\nfrom mythril.laser.ethereum.natives import ec_add\n\nVECTOR_A = decode_hex(\n    \"0000000000000000000000000000000000000000000000000000000000000001\"\n    \"0000000000000000000000000000000000000000000000000000000000000020\"\n    \"0000000000000000000000000000000000000000000000000000000000000020\"\n    \"03\"\n    \"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e\"\n    \"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f\"\n)\n\n\ndef test_ec_add_sanity():\n    assert ec_add(VECTOR_A) == []\n\n\n@patch(\"mythril.laser.ethereum.natives.validate_point\", return_value=1)\n@patch(\"mythril.laser.ethereum.natives.bn128.add\", return_value=1)\n@patch(\"mythril.laser.ethereum.natives.bn128.normalize\")\ndef test_ec_add(f1, f2, f3):\n    FQ.fielf_modulus = 128\n    a = FQ(val=1)\n    f1.return_value = (a, a)\n    assert ec_add(VECTOR_A) == ([0] * 31 + [1]) * 2\n"
  },
  {
    "path": "tests/laser/Precompiles/ecrecover_test.py",
    "content": "import pytest\n\nfrom mythril.laser.ethereum.natives import NativeContractException, ecrecover\nfrom mythril.laser.smt import symbol_factory\n\nmsg = 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\"\nv = 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\"\nr = 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\"\ns = 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\"\n\nGOOD_DATA = list(msg + v + r + s)\n\n\n@pytest.mark.parametrize(\n    \"input_list, expected_result\",\n    (\n        ([], []),\n        ([10, 20], []),\n        (\n            GOOD_DATA,\n            [\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                131,\n                23,\n                8,\n                48,\n                142,\n                77,\n                185,\n                107,\n                254,\n                47,\n                229,\n                79,\n                224,\n                43,\n                181,\n                99,\n                36,\n                171,\n                166,\n                119,\n            ],\n        ),\n    ),\n)\ndef test_ecrecover(input_list, expected_result):\n    assert ecrecover(input_list) == expected_result\n\n\ndef test_ecrecover_symbol():\n    input_list = [\"bab\", symbol_factory.BitVecSym(\"name\", 256)]\n    with pytest.raises(NativeContractException):\n        ecrecover(input_list)\n"
  },
  {
    "path": "tests/laser/Precompiles/elliptic_curves_test.py",
    "content": "from unittest.mock import patch\n\nfrom py_ecc.optimized_bn128 import FQ\n\nfrom mythril.laser.ethereum.natives import ec_pair\n\n\ndef test_ec_pair_192_check():\n    vec_c = [0] * 100\n    assert ec_pair(vec_c) == []\n\n\n@patch(\"mythril.laser.ethereum.natives.validate_point\", return_value=1)\n@patch(\"mythril.laser.ethereum.natives.bn128.is_on_curve\", return_value=True)\n@patch(\"mythril.laser.ethereum.natives.bn128.pairing\", return_value=1)\n@patch(\"mythril.laser.ethereum.natives.bn128.normalize\")\ndef test_ec_pair(f1, f2, f3, f4):\n    FQ.fielf_modulus = 100\n    a = FQ(val=1)\n    f1.return_value = (a, a)\n    vec_c = [0] * 192\n    assert ec_pair(vec_c) == [0] * 31 + [1]\n\n\n@patch(\"mythril.laser.ethereum.natives.validate_point\", return_value=False)\ndef test_ec_pair_point_validation_failure(f1):\n    vec_c = [0] * 192\n    assert ec_pair(vec_c) == []\n\n\n@patch(\"mythril.laser.ethereum.natives.validate_point\", return_value=1)\ndef test_ec_pair_field_exceed_mod(f1):\n    FQ.fielf_modulus = 100\n    a = FQ(val=1)\n    f1.return_value = (a, a)\n    vec_c = [10] * 192\n    assert ec_pair(vec_c) == []\n"
  },
  {
    "path": "tests/laser/Precompiles/elliptic_mul_test.py",
    "content": "from unittest.mock import patch\n\nfrom eth_utils import decode_hex\nfrom py_ecc.optimized_bn128 import FQ\n\nfrom mythril.laser.ethereum.natives import ec_mul\n\nVECTOR_A = decode_hex(\n    \"0000000000000000000000000000000000000000000000000000000000000001\"\n    \"0000000000000000000000000000000000000000000000000000000000000020\"\n    \"0000000000000000000000000000000000000000000000000000000000000020\"\n    \"03\"\n    \"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e\"\n    \"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f\"\n)\n\n\n@patch(\"mythril.laser.ethereum.natives.validate_point\", return_value=1)\n@patch(\"mythril.laser.ethereum.natives.bn128.multiply\", return_value=1)\n@patch(\"mythril.laser.ethereum.natives.bn128.normalize\")\ndef test_ec_mul(f1, f2, f3):\n    FQ.fielf_modulus = 128\n    a = FQ(val=1)\n    f1.return_value = (a, a)\n    assert ec_mul(VECTOR_A) == ([0] * 31 + [1]) * 2\n\n\ndef test_ec_mul_validation_failure():\n    assert ec_mul(VECTOR_A) == []\n"
  },
  {
    "path": "tests/laser/Precompiles/identity_test.py",
    "content": "import pytest\n\nfrom mythril.laser.ethereum.natives import identity\n\n\n@pytest.mark.parametrize(\n    \"input_list, expected_result\", (([], []), ([10, 20], [10, 20]))\n)\ndef test_identity(input_list, expected_result):\n    assert identity(input_list) == expected_result\n"
  },
  {
    "path": "tests/laser/Precompiles/mod_exp_test.py",
    "content": "import pytest\nfrom eth_utils import big_endian_to_int, decode_hex\n\nfrom mythril.laser.ethereum.natives import mod_exp\n\nEIP198_VECTOR_A = decode_hex(\n    \"0000000000000000000000000000000000000000000000000000000000000001\"\n    \"0000000000000000000000000000000000000000000000000000000000000020\"\n    \"0000000000000000000000000000000000000000000000000000000000000020\"\n    \"03\"\n    \"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e\"\n    \"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f\"\n)\n\nEIP198_VECTOR_B = decode_hex(\n    \"0000000000000000000000000000000000000000000000000000000000000000\"\n    \"0000000000000000000000000000000000000000000000000000000000000020\"\n    \"0000000000000000000000000000000000000000000000000000000000000020\"\n    \"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2e\"\n    \"fffffffffffffffffffffffffffffffffffffffffffffffffffffffefffffc2f\"\n)\n\nEIP198_VECTOR_C = decode_hex(\n    \"0000000000000000000000000000000000000000000000000000000000000001\"\n    \"0000000000000000000000000000000000000000000000000000000000000002\"\n    \"0000000000000000000000000000000000000000000000000000000000000020\"\n    \"03\"\n    \"ffff\"\n    \"8000000000000000000000000000000000000000000000000000000000000000\"\n    \"07\"\n)\n\nEIP198_VECTOR_D = decode_hex(\n    \"0000000000000000000000000000000000000000000000000000000000000001\"\n    \"0000000000000000000000000000000000000000000000000000000000000002\"\n    \"0000000000000000000000000000000000000000000000000000000000000020\"\n    \"03\"\n    \"ffff\"\n    \"80\"\n)\n\n\n@pytest.mark.parametrize(\n    \"data,expected\",\n    (\n        (EIP198_VECTOR_A, 1),\n        (EIP198_VECTOR_B, 0),\n        (\n            EIP198_VECTOR_C,\n            26689440342447178617115869845918039756797228267049433585260346420242739014315,\n        ),\n        (\n            EIP198_VECTOR_D,\n            26689440342447178617115869845918039756797228267049433585260346420242739014315,\n        ),\n    ),\n)\ndef test_modexp_result(data, expected):\n    actual = mod_exp(data)\n    assert big_endian_to_int(actual) == expected\n"
  },
  {
    "path": "tests/laser/Precompiles/ripemd_test.py",
    "content": "import pytest\n\nfrom mythril.laser.ethereum.natives import NativeContractException, ripemd160\nfrom mythril.laser.smt import symbol_factory\n\n\n@pytest.mark.parametrize(\n    \"input_list, expected_result\",\n    (\n        (\n            [],\n            [\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                156,\n                17,\n                133,\n                165,\n                197,\n                233,\n                252,\n                84,\n                97,\n                40,\n                8,\n                151,\n                126,\n                232,\n                245,\n                72,\n                178,\n                37,\n                141,\n                49,\n            ],\n        ),\n        (\n            [10, 20],\n            [\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                0,\n                92,\n                161,\n                226,\n                233,\n                76,\n                11,\n                228,\n                69,\n                224,\n                14,\n                89,\n                120,\n                246,\n                184,\n                197,\n                182,\n                35,\n                215,\n                51,\n                130,\n            ],\n        ),\n    ),\n)\ndef test_ripemd160(input_list, expected_result):\n    assert ripemd160(input_list) == expected_result\n\n\ndef test_ripemd160_symbol():\n    input_list = [\"bab\", symbol_factory.BitVecSym(\"name\", 256)]\n    with pytest.raises(NativeContractException):\n        ripemd160(input_list)\n"
  },
  {
    "path": "tests/laser/Precompiles/sha256_test.py",
    "content": "import pytest\n\nfrom mythril.laser.ethereum.natives import NativeContractException, sha256\nfrom mythril.laser.smt import symbol_factory\n\n\n@pytest.mark.parametrize(\n    \"input_list, expected_result\",\n    (\n        (\n            [],\n            [\n                227,\n                176,\n                196,\n                66,\n                152,\n                252,\n                28,\n                20,\n                154,\n                251,\n                244,\n                200,\n                153,\n                111,\n                185,\n                36,\n                39,\n                174,\n                65,\n                228,\n                100,\n                155,\n                147,\n                76,\n                164,\n                149,\n                153,\n                27,\n                120,\n                82,\n                184,\n                85,\n            ],\n        ),\n        (\n            [10, 20],\n            [\n                195,\n                48,\n                250,\n                117,\n                58,\n                197,\n                190,\n                59,\n                143,\n                203,\n                82,\n                116,\n                80,\n                98,\n                247,\n                129,\n                204,\n                158,\n                15,\n                79,\n                169,\n                129,\n                162,\n                189,\n                6,\n                252,\n                185,\n                105,\n                53,\n                91,\n                148,\n                105,\n            ],\n        ),\n    ),\n)\ndef test_sha256(input_list, expected_result):\n    assert sha256(input_list) == expected_result\n\n\ndef test_sha_symbol():\n    input_list = [\"bab\", symbol_factory.BitVecSym(\"name\", 256)]\n    with pytest.raises(NativeContractException):\n        sha256(input_list)\n"
  },
  {
    "path": "tests/laser/__init__.py",
    "content": ""
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/LICENSE",
    "content": "Copyright 2014 Ethereum Foundation\n\nPermission 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:\n\nThe above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.\n\nTHE 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.\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/README.md",
    "content": "Files found in this directory are taken from https://github.com/ethereum/tests, released under the \nlicense LICENSE in the same directory as this file.\n\nAll credit goes to the awesome people that made this!\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add0.json",
    "content": "{\n    \"add0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/add0Filler.json\",\n            \"sourceHash\": \"8ffcccd596ff216a8304f822e302bd7b2abe3f7f7616928a2a0385d2cfdf01ac\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013874\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add1.json",
    "content": "{\n    \"add1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/add1Filler.json\",\n            \"sourceHash\": \"36b138942544cd189bff05ff1694917ed4cef48760592536b2829f3e90d5850a\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013874\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x03\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60047fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add2.json",
    "content": "{\n    \"add2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/add2Filler.json\",\n            \"sourceHash\": \"c17fbe9e92877d5a60743ca4c172bba1060e20b08f9ee00ca0ccb6b72bac897f\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01730c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff01600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add3.json",
    "content": "{\n    \"add3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/add3Filler.json\",\n            \"sourceHash\": \"d64685dfa395fd7dc69e5883eaedaeece8217daff0ad658a083dc2f2fc870ef1\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6000600001600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01730c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000600001600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000600001600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/add4.json",
    "content": "{\n    \"add4\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/add4Filler.json\",\n            \"sourceHash\": \"3b04e90121702949a56e656f4f895f5de3aed278fd3530eec4c52c378f41dcfa\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600101600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01730c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600101600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600101600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod0.json",
    "content": "{\n    \"addmod0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmod0Filler.json\",\n            \"sourceHash\": \"aba7a646dee5e90acf0c2257a986ff99d044f057de21667f2acec868f7d4b8eb\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60026002600108600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026002600108600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026002600108600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1.json",
    "content": "{\n    \"addmod1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmod1Filler.json\",\n            \"sourceHash\": \"edf8071d0533dd82ff2fb34b4caab47db62aa7d918004d82630cd2b37ddcbc90\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60026002600003600160000308600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013860\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026002600003600160000308600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026002600003600160000308600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflow2.json",
    "content": "{\n    \"addmod1_overflow2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmod1_overflow2Filler.json\",\n            \"sourceHash\": \"9029d29f6ad3ad30d1cae39fe98723bb400f9fab4562bd7898a0168a0f353a3f\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60056000600160000308600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x2710\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x136e\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056000600160000308600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056000600160000308600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflow3.json",
    "content": "{\n    \"addmod1_overflow3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmod1_overflow3Filler.json\",\n            \"sourceHash\": \"f51942005cbb182f759380c7c7fa43d9666d8ea095cc9ce0538e04c2ffc2dd03\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60056001600160000308600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef406\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056001600160000308600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056001600160000308600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflow4.json",
    "content": "{\n    \"addmod1_overflow4\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmod1_overflow4Filler.json\",\n            \"sourceHash\": \"59184840928cfdb750aab06b0a42c30d4dc99a713f315239b1b6596ec9ef92c2\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60056002600160000308600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef406\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056002600160000308600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x02\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056002600160000308600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod1_overflowDiff.json",
    "content": "{\n    \"addmod1_overflowDiff\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmod1_overflowDiffFiller.json\",\n            \"sourceHash\": \"4836017c5969c3cc9e6fee8a3da1e2d81454d2880d10fadd146cdb8ca8b57273\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60056002600003600160000308600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef400\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056002600003600160000308600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x04\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056002600003600160000308600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod2.json",
    "content": "{\n    \"addmod2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmod2Filler.json\",\n            \"sourceHash\": \"22a6b0713565860ede4858c04c85d823cc24829962730303aeb7bacf48e6e2af\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60036001600660000308600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013866\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036001600660000308600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x02\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036001600660000308600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod2_0.json",
    "content": "{\n    \"addmod2_0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmod2_0Filler.json\",\n            \"sourceHash\": \"dc557aacebaa46b88f072e79ac09df8a576c1551f7ce3381bc22aa33a5fdfa7b\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60036001600660000308600360056000030714600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0172ea\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036001600660000308600360056000030714600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036001600660000308600360056000030714600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod2_1.json",
    "content": "{\n    \"addmod2_1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmod2_1Filler.json\",\n            \"sourceHash\": \"f5227cd573f551a66a89ca6ef0075d999fa0dfcd1b6cc162deba46db3fc957ae\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60036001600660000308600360056000030614600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013852\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036001600660000308600360056000030614600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036001600660000308600360056000030614600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod3.json",
    "content": "{\n    \"addmod3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmod3Filler.json\",\n            \"sourceHash\": \"98f42c19c4c02edb27ddbe15d425fa031f3b79998b3fcfce32ecbb070dca20f7\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60036000036001600408600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013866\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036000036001600408600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x05\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036000036001600408600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmod3_0.json",
    "content": "{\n    \"addmod3_0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmod3_0Filler.json\",\n            \"sourceHash\": \"20e873a721f9d6c9a6808a017a7ddb48538f6e24e0ea5bb2e1e0d616aee00b1e\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60026003600003600160040814600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0172f8\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026003600003600160040814600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026003600003600160040814600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodBigIntCast.json",
    "content": "{\n    \"addmodBigIntCast\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmodBigIntCastFiller.json\",\n            \"sourceHash\": \"6425ea71989061d67059c0ff21a02ae588b5a1b7d69acab1136d8e5cd3341349\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600560017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff08600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero.json",
    "content": "{\n    \"addmodDivByZero\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmodDivByZeroFiller.json\",\n            \"sourceHash\": \"ff8897ddc6eff1209bf12094e82e622ac4a2ecd6ce84ffdac4e4b1bf6c0a7bda\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60006001600408600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x017304\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006001600408600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006001600408600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero1.json",
    "content": "{\n    \"addmodDivByZero1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmodDivByZero1Filler.json\",\n            \"sourceHash\": \"38ae4bc3d451120dcd38c38ede77bde9e767c64e25025a459233261ba101b05f\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60006001600008600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x017304\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006001600008600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006001600008600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero2.json",
    "content": "{\n    \"addmodDivByZero2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmodDivByZero2Filler.json\",\n            \"sourceHash\": \"433f565d64a9730f98cd80b4ae1510d496eba6a3a311c85c2d12394f3edd8cf3\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60006000600108600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x017304\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006000600108600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006000600108600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/addmodDivByZero3.json",
    "content": "{\n    \"addmodDivByZero3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/addmodDivByZero3Filler.json\",\n            \"sourceHash\": \"f10de49a80343bfa59231702b9a2f7c500d1c000693005c39a82049ed55b62f8\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60016000600060000803600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013866\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016000600060000803600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016000600060000803600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/arith1.json",
    "content": "{\n    \"arith1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/arith1Filler.json\",\n            \"sourceHash\": \"26a824545a0d305ff19c0483bf52a65822c1df521fac97eac52902de884f2a5f\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6001600190016007026005016002900460049060016021900560150160030260059007600303600960110a60005260086000f3\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0f41bf\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x0000000000000000\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001600190016007026005016002900460049060016021900560150160030260059007600303600960110a60005260086000f3\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001600190016007026005016002900460049060016021900560150160030260059007600303600960110a60005260086000f3\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/div1.json",
    "content": "{\n    \"div1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/div1Filler.json\",\n            \"sourceHash\": \"159c0277fb5839d12de6e134cafe963c3b66c577959ad6c760d2c76af7f896c5\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60027ffedcba9876543210fedcba9876543210fedcba9876543210fedcba98765432100460005260206000f3\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x018686\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x7f6e5d4c3b2a19087f6e5d4c3b2a19087f6e5d4c3b2a19087f6e5d4c3b2a1908\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60027ffedcba9876543210fedcba9876543210fedcba9876543210fedcba98765432100460005260206000f3\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60027ffedcba9876543210fedcba9876543210fedcba9876543210fedcba98765432100460005260206000f3\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divBoostBug.json",
    "content": "{\n    \"divBoostBug\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/divBoostBugFiller.json\",\n            \"sourceHash\": \"b572d1a3d37f2ac6255b64338654b664ae1e27b5da5a8ce7e337812f0ae357f5\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7f01dae6076b981dae6076b981dae6076b981dae6076b981dae6076b981dae60777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffba04600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013872\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7f01dae6076b981dae6076b981dae6076b981dae6076b981dae6076b981dae60777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffba04600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x89\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7f01dae6076b981dae6076b981dae6076b981dae6076b981dae6076b981dae60777fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffba04600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero0.json",
    "content": "{\n    \"divByNonZero0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/divByNonZero0Filler.json\",\n            \"sourceHash\": \"de10028af4d71ec4eab4f19099b395e5a8ee65b3797507c5100574344f432a41\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6002600504600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013872\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6002600504600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x02\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6002600504600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero1.json",
    "content": "{\n    \"divByNonZero1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/divByNonZero1Filler.json\",\n            \"sourceHash\": \"a10288727a8cd42937137db0964c54dfeb67031156d9e89c762c1ccf5400f46d\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6018601704600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01730a\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6018601704600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6018601704600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero2.json",
    "content": "{\n    \"divByNonZero2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/divByNonZero2Filler.json\",\n            \"sourceHash\": \"09b0a23cd19a08af2b97b1348b9c15ad0668dbb7f1303fc8c188edbfc532163c\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6018600004600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01730a\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6018600004600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6018600004600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByNonZero3.json",
    "content": "{\n    \"divByNonZero3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/divByNonZero3Filler.json\",\n            \"sourceHash\": \"2421e4d08c24171e953eeb5b7e1e6f1db9a16a8d3160d4ab082401a379bcda37\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6001600104600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013872\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001600104600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001600104600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByZero.json",
    "content": "{\n    \"divByZero\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/divByZeroFiller.json\",\n            \"sourceHash\": \"d08e0f0e1b8a688776ad0772dcb91f93ce5320d0e8e34723139d20b3358234e1\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6000600204600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01730a\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000600204600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000600204600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/divByZero_2.json",
    "content": "{\n    \"divByZero_2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/divByZero_2Filler.json\",\n            \"sourceHash\": \"63a28c09a22266dc3c56fe10cf0542d7945ff53214deba17b511372c4d24fd29\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60076000600d0401600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60076000600d0401600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x07\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60076000600d0401600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp0.json",
    "content": "{\n    \"exp0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/exp0Filler.json\",\n            \"sourceHash\": \"d7bca8fc54c818174631d156150165cf8b3cb5b3275ee3f00aa651a9614a8b6b\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600260020a600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013863\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600260020a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x04\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600260020a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp1.json",
    "content": "{\n    \"exp1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/exp1Filler.json\",\n            \"sourceHash\": \"790225dd362e72d2c03d6fb70e8f3d1b07c27ba502d3e4968d0584342925cf78\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01372d\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp2.json",
    "content": "{\n    \"exp2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/exp2Filler.json\",\n            \"sourceHash\": \"048b0885d4cbf3735ed6d6ea4e70f6d2fcabf1ec0c797028859f0138485129c7\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x637fffffff637fffffff0a600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013845\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x637fffffff637fffffff0a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xbc8cccccccc888888880000000aaaaaab00000000fffffffffffffff7fffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x637fffffff637fffffff0a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp3.json",
    "content": "{\n    \"exp3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/exp3Filler.json\",\n            \"sourceHash\": \"0fb6a29eff8766b8b8e5d4bebd1bd26191382cf9a53fb082f318d835d3ef54ca\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x637fffffff60000a600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0172dd\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x637fffffff60000a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x637fffffff60000a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp4.json",
    "content": "{\n    \"exp4\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/exp4Filler.json\",\n            \"sourceHash\": \"b0493347ef7099abaa8b086c34db3f90d32c3b1ba099799be4e6937f44707d84\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6000637fffffff0a600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386d\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000637fffffff0a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000637fffffff0a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp5.json",
    "content": "{\n    \"exp5\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/exp5Filler.json\",\n            \"sourceHash\": \"050d2365266bd54b09698870bf65e32e3aaabd28ae1edaf8df7162fbb707e810\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60016101010a600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013863\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016101010a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016101010a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp6.json",
    "content": "{\n    \"exp6\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/exp6Filler.json\",\n            \"sourceHash\": \"4534de4b71ac08f103de5d9c76546ede7925f520b88f5dbadca3ece614f19101\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x61010160010a600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013859\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x61010160010a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x61010160010a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp7.json",
    "content": "{\n    \"exp7\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/exp7Filler.json\",\n            \"sourceHash\": \"caa58d4cf6deb6783a20c24ec41da247074d43a7038c9eca2ca0122f9c6a59f9\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x61010160020a600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0172f1\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x61010160020a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x61010160020a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/exp8.json",
    "content": "{\n    \"exp8\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/exp8Filler.json\",\n            \"sourceHash\": \"1cc9a393c6ceda35ec9afd4aca74145c1c244a0d4765ede3f473e0fd194ca595\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600060000a600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386d\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600060000a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600060000a600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_0.json",
    "content": "{\n    \"expPowerOf256Of256_0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_0Filler.json\",\n            \"sourceHash\": \"6863ca9c3ee1851b0b73bd28fd8f93247e10db38711c963874c5525fdde6e9a3\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60006101000a6101000a600055600060ff0a6101000a60015560006101010a6101000a60025560006101000a60ff0a600355600060ff0a60ff0a60045560006101010a60ff0a60055560006101000a6101010a600655600060ff0a6101010a60075560006101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0c81a6\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006101000a6101000a600055600060ff0a6101000a60015560006101010a6101000a60025560006101000a60ff0a600355600060ff0a60ff0a60045560006101010a60ff0a60055560006101000a6101010a600655600060ff0a6101010a60075560006101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100\",\n                    \"0x01\": \"0x0100\",\n                    \"0x02\": \"0x0100\",\n                    \"0x03\": \"0xff\",\n                    \"0x04\": \"0xff\",\n                    \"0x05\": \"0xff\",\n                    \"0x06\": \"0x0101\",\n                    \"0x07\": \"0x0101\",\n                    \"0x08\": \"0x0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006101000a6101000a600055600060ff0a6101000a60015560006101010a6101000a60025560006101000a60ff0a600355600060ff0a60ff0a60045560006101010a60ff0a60055560006101000a6101010a600655600060ff0a6101010a60075560006101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_1.json",
    "content": "{\n    \"expPowerOf256Of256_1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_1Filler.json\",\n            \"sourceHash\": \"69cfec5346c375b71292c83f0077c8db86c8046a52aed0700f70628c5de03cf7\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60016101000a6101000a600055600160ff0a6101000a60015560016101010a6101000a60025560016101000a60ff0a600355600160ff0a60ff0a60045560016101010a60ff0a60055560016101000a6101010a600655600160ff0a6101010a60075560016101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d30d8\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016101000a6101000a600055600160ff0a6101000a60015560016101010a6101000a60025560016101000a60ff0a600355600160ff0a60ff0a60045560016101010a60ff0a60055560016101000a6101010a600655600160ff0a6101010a60075560016101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x06c3acd330b959ad6efabce6d2d2125e73a88a65a9880d203dddf5957f7f0001\",\n                    \"0x04\": \"0x8f965a06da0ac41dcb3a34f1d8ab7d8fee620a94faa42c395997756b007ffeff\",\n                    \"0x05\": \"0xbce9265d88a053c18bc229ebff404c1534e1db43de85131da0179fe9ff8100ff\",\n                    \"0x06\": \"0x02b5e9d7a094c19f5ebdd4f2e618f859ed15e4f1f0351f286bf849eb7f810001\",\n                    \"0x07\": \"0xc73b7a6f68385c653a24993bb72eea0e4ba17470816ec658cf9c5bedfd81ff01\",\n                    \"0x08\": \"0xb89fc178355660fe1c92c7d8ff11524702fad6e2255447946442356b00810101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016101000a6101000a600055600160ff0a6101000a60015560016101010a6101000a60025560016101000a60ff0a600355600160ff0a60ff0a60045560016101010a60ff0a60055560016101000a6101010a600655600160ff0a6101010a60075560016101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_10.json",
    "content": "{\n    \"expPowerOf256Of256_10\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_10Filler.json\",\n            \"sourceHash\": \"4b8da51eee6773daecfe22bd2067c03bc00a82f27934f7b8053636433008d2fe\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600a6101000a6101000a600055600a60ff0a6101000a600155600a6101010a6101000a600255600a6101000a60ff0a600355600a60ff0a60ff0a600455600a6101010a60ff0a600555600a6101000a6101010a600655600a60ff0a6101010a600755600a6101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2dae\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600a6101000a6101000a600055600a60ff0a6101000a600155600a6101010a6101000a600255600a6101000a60ff0a600355600a60ff0a60ff0a600455600a6101010a60ff0a600555600a6101000a6101010a600655600a60ff0a6101010a600755600a6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0xfe0f60957dc223578a0298879ec55c33085514ff7f0000000000000000000001\",\n                    \"0x04\": \"0xc1ea45f348b5d351c4d8fe5c77da979cadc33d866acc42e981278896b1f600ff\",\n                    \"0x05\": \"0x56ddb29bca94fb986ac0a40188b3b53f3216b3559bd8324a77ea8bd8a80a00ff\",\n                    \"0x06\": \"0x2d49ff6b0bbe177ae9317000b68fb921f7aa6aff810000000000000000000001\",\n                    \"0x07\": \"0x185fa9eab94cfe3016b69657e83b23fd24cc6960218254231c3db627a7f60101\",\n                    \"0x08\": \"0xa7a0223829f26d6c635368034320563df4aa5eb62efc87a42bb35f69b20a0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600a6101000a6101000a600055600a60ff0a6101000a600155600a6101010a6101000a600255600a6101000a60ff0a600355600a60ff0a60ff0a600455600a6101010a60ff0a600555600a6101000a6101010a600655600a60ff0a6101010a600755600a6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_11.json",
    "content": "{\n    \"expPowerOf256Of256_11\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_11Filler.json\",\n            \"sourceHash\": \"9f894285b221c629d940fd5717ca08b2f5f1e35b809191f00557ed3d1c76e01c\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600b6101000a6101000a600055600b60ff0a6101000a600155600b6101010a6101000a600255600b6101000a60ff0a600355600b60ff0a60ff0a600455600b6101010a60ff0a600555600b6101000a6101010a600655600b60ff0a6101010a600755600b6101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2d54\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600b6101000a6101000a600055600b60ff0a6101000a600155600b6101010a6101000a600255600b6101000a60ff0a600355600b60ff0a60ff0a600455600b6101010a60ff0a600555600b6101000a6101010a600655600b60ff0a6101010a600755600b6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0xe1440264b8ee0cea0218879ec55c33085514ff7f000000000000000000000001\",\n                    \"0x04\": \"0x29575fdce377b23043e489e358581474bc863187fa85f9945473a2be5889feff\",\n                    \"0x05\": \"0x3df8c030ec521fb109c4d887dbbc14c7c9c9921b27058e3503971b60b18b00ff\",\n                    \"0x06\": \"0x67799740340daf4a30f000b68fb921f7aa6aff81000000000000000000000001\",\n                    \"0x07\": \"0x540a4e4635b40585e09ff10b63ffe310dd717fca5c0a51570091e25e378bff01\",\n                    \"0x08\": \"0xdbbaef5c49ffee61b08cde6ebc8dba6e9a62d56c2355d1980cb9e790bc8b0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600b6101000a6101000a600055600b60ff0a6101000a600155600b6101010a6101000a600255600b6101000a60ff0a600355600b60ff0a60ff0a600455600b6101010a60ff0a600555600b6101000a6101010a600655600b60ff0a6101010a600755600b6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_12.json",
    "content": "{\n    \"expPowerOf256Of256_12\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_12Filler.json\",\n            \"sourceHash\": \"3f676ad5517e82148d0d2da5936d57a608e33179c423d4304a6fe825b5707548\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600c6101000a6101000a600055600c60ff0a6101000a600155600c6101010a6101000a600255600c6101000a60ff0a600355600c60ff0a60ff0a600455600c6101010a60ff0a600555600c6101000a6101010a600655600c60ff0a6101010a600755600c6101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2cfa\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600c6101000a6101000a600055600c60ff0a6101000a600155600c6101010a6101000a600255600c6101000a60ff0a600355600c60ff0a60ff0a600455600c6101010a60ff0a600555600c6101000a6101010a600655600c60ff0a6101010a600755600c6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0xb0e95b83a36ce98218879ec55c33085514ff7f00000000000000000000000001\",\n                    \"0x04\": \"0xc482ab56ec19186dc48c88f30861a850b2253b1ea6dc021589e569bd47f400ff\",\n                    \"0x05\": \"0xcf45c7f9af4bbe4a83055b55b97777ad5e0a3f08b129c9ae208c5d713c0c00ff\",\n                    \"0x06\": \"0xa5cbb62a421049b0f000b68fb921f7aa6aff8100000000000000000000000001\",\n                    \"0x07\": \"0x3bde6ca66dffe1bf5d727c3edea74c7a4af43b3912e6256d37705c8f3bf40101\",\n                    \"0x08\": \"0x3f49a1e40c5213aa4ffed57eb4c1ad2d181b2aaa289e9d59c2256c43480c0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600c6101000a6101000a600055600c60ff0a6101000a600155600c6101010a6101000a600255600c6101000a60ff0a600355600c60ff0a60ff0a600455600c6101010a60ff0a600555600c6101000a6101010a600655600c60ff0a6101010a600755600c6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_13.json",
    "content": "{\n    \"expPowerOf256Of256_13\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_13Filler.json\",\n            \"sourceHash\": \"da54905daaeaa0664d44547ff55e475b07362ac581d4a395233ed5e2c6f52ced\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600d6101000a6101000a600055600d60ff0a6101000a600155600d6101010a6101000a600255600d6101000a60ff0a600355600d60ff0a60ff0a600455600d6101010a60ff0a600555600d6101000a6101010a600655600d60ff0a6101010a600755600d6101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2ca0\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600d6101000a6101000a600055600d60ff0a6101000a600155600d6101010a6101000a600255600d6101000a60ff0a600355600d60ff0a60ff0a600455600d6101010a60ff0a600555600d6101000a6101010a600655600d60ff0a6101010a600755600d6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0xe02639036c698218879ec55c33085514ff7f0000000000000000000000000001\",\n                    \"0x04\": \"0x8be664bde946d939ce551b948b503787942d2a7734509288c1b62fd5c48bfeff\",\n                    \"0x05\": \"0xa923a28e7a75aef26c51580ffc686879e4a0b404b089bdbcd751d88b478d00ff\",\n                    \"0x06\": \"0x41ac5ea30fc9b0f000b68fb921f7aa6aff810000000000000000000000000001\",\n                    \"0x07\": \"0x0daa3a177ec975cb69bb4acf4a6e1be7bcc1ad33d1ffad97510f9fea9d8dff01\",\n                    \"0x08\": \"0x19e6822beb889be28310060f4fb9741bfd50a31fa81ec65de21f7b02548d0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600d6101000a6101000a600055600d60ff0a6101000a600155600d6101010a6101000a600255600d6101000a60ff0a600355600d60ff0a60ff0a600455600d6101010a60ff0a600555600d6101000a6101010a600655600d60ff0a6101010a600755600d6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_14.json",
    "content": "{\n    \"expPowerOf256Of256_14\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_14Filler.json\",\n            \"sourceHash\": \"edd3df91eb065b15cab5d220c3d106ed68ddaf58d6c58f53a8cd65b27d2b2581\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600e6101000a6101000a600055600e60ff0a6101000a600155600e6101010a6101000a600255600e6101000a60ff0a600355600e60ff0a60ff0a600455600e6101010a60ff0a600555600e6101000a6101010a600655600e60ff0a6101010a600755600e6101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2c46\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600e6101000a6101000a600055600e60ff0a6101000a600155600e6101010a6101000a600255600e6101000a60ff0a600355600e60ff0a60ff0a600455600e6101010a60ff0a600555600e6101000a6101010a600655600e60ff0a6101010a600755600e6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0xdb9902ec698218879ec55c33085514ff7f000000000000000000000000000001\",\n                    \"0x04\": \"0x83fab06c6c8fef761ebbb9534c06ac2a9d61820623008069062ff3b1e1f200ff\",\n                    \"0x05\": \"0x3f791dd183ed5b963bd86e0dba1a9dd5b8ceeb078f15c73062f1942fd40e00ff\",\n                    \"0x06\": \"0xe0bfa28fc9b0f000b68fb921f7aa6aff81000000000000000000000000000001\",\n                    \"0x07\": \"0x8133b760dfae27560eb490f235ddfa301f058dee4f01f3fe4b3567d0d3f20101\",\n                    \"0x08\": \"0xcd4cd0124e983af71620fb5f98275965c6a8bebc4b8adc288b63224ee20e0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600e6101000a6101000a600055600e60ff0a6101000a600155600e6101010a6101000a600255600e6101000a60ff0a600355600e60ff0a60ff0a600455600e6101010a60ff0a600555600e6101000a6101010a600655600e60ff0a6101010a600755600e6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_15.json",
    "content": "{\n    \"expPowerOf256Of256_15\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_15Filler.json\",\n            \"sourceHash\": \"f7cb05c59e6a333a6f97a5d9f4c0f35af8d8422f06d1cfe1aa80a98c27f99ed1\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600f6101000a6101000a600055600f60ff0a6101000a600155600f6101010a6101000a600255600f6101000a60ff0a600355600f60ff0a60ff0a600455600f6101010a60ff0a600555600f6101000a6101010a600655600f60ff0a6101010a600755600f6101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2bec\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600f6101000a6101000a600055600f60ff0a6101000a600155600f6101010a6101000a600255600f6101000a60ff0a600355600f60ff0a60ff0a600455600f6101010a60ff0a600555600f6101000a6101010a600655600f60ff0a6101010a600755600f6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x9882ec698218879ec55c33085514ff7f00000000000000000000000000000001\",\n                    \"0x04\": \"0x75c4915e18b96704209738f5ca765568bb4dc4113d56683977825a132c8dfeff\",\n                    \"0x05\": \"0x5c76839bf5a80b1da705dbdf43e4dd6770cd7501af11ff2dab7918dfe18f00ff\",\n                    \"0x06\": \"0xbf228fc9b0f000b68fb921f7aa6aff8100000000000000000000000000000001\",\n                    \"0x07\": \"0xc6a29131e7594004bc2aa79f0d2c402a1409c57c77d284c14b1a3ab0ff8fff01\",\n                    \"0x08\": \"0xe6b3e5cf6ec90e532fef7d08455ebf92a03e9e3f6e224ea0febdf1a9f08f0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600f6101000a6101000a600055600f60ff0a6101000a600155600f6101010a6101000a600255600f6101000a60ff0a600355600f60ff0a60ff0a600455600f6101010a60ff0a600555600f6101000a6101010a600655600f60ff0a6101010a600755600f6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_16.json",
    "content": "{\n    \"expPowerOf256Of256_16\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_16Filler.json\",\n            \"sourceHash\": \"df0ea880ab4d8279515ba63f5a4c098d3869d42a1145eee993bdb07d543191ac\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60106101000a6101000a600055601060ff0a6101000a60015560106101010a6101000a60025560106101000a60ff0a600355601060ff0a60ff0a60045560106101010a60ff0a60055560106101000a6101010a600655601060ff0a6101010a60075560106101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2b92\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60106101000a6101000a600055601060ff0a6101000a60015560106101010a6101000a60025560106101000a60ff0a600355601060ff0a60ff0a60045560106101010a60ff0a60055560106101000a6101010a600655601060ff0a6101010a60075560106101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x82ec698218879ec55c33085514ff7f0000000000000000000000000000000001\",\n                    \"0x04\": \"0x3122f4bcdf6dd8b265cd18eb6af28c879aed44a35e0bf59273e39e6c7ff000ff\",\n                    \"0x05\": \"0x6a2b3bc87a02c29b9d27757df43047ecd0f15485270fca27417a701c701000ff\",\n                    \"0x06\": \"0x228fc9b0f000b68fb921f7aa6aff810000000000000000000000000000000001\",\n                    \"0x07\": \"0x88e1259502eef93d46060aacc9e2ff506c734dade0b6714ab12d17e46ff00101\",\n                    \"0x08\": \"0x4a103813c12c12169b218296bb0a9eae80cf8d2b158aa70eb990f99480100101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60106101000a6101000a600055601060ff0a6101000a60015560106101010a6101000a60025560106101000a60ff0a600355601060ff0a60ff0a60045560106101010a60ff0a60055560106101000a6101010a600655601060ff0a6101010a60075560106101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_17.json",
    "content": "{\n    \"expPowerOf256Of256_17\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_17Filler.json\",\n            \"sourceHash\": \"f070c654038863bc1be0d7f5a1f94d32eeae2548d2253bef46dd9153621c8d3a\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60116101000a6101000a600055601160ff0a6101000a60015560116101010a6101000a60025560116101000a60ff0a600355601160ff0a60ff0a60045560116101010a60ff0a60055560116101000a6101010a600655601160ff0a6101010a60075560116101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2b38\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60116101000a6101000a600055601160ff0a6101000a60015560116101010a6101000a60025560116101000a60ff0a600355601160ff0a60ff0a60045560116101010a60ff0a60055560116101000a6101010a600655601160ff0a6101010a60075560116101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0xec698218879ec55c33085514ff7f000000000000000000000000000000000001\",\n                    \"0x04\": \"0x722ad218eb1995a2d257c4c06d8de993c203cfc8e3512df7d633e17e908ffeff\",\n                    \"0x05\": \"0x8ac9b5ec08d74612cb29f941481d274b51721af2296207c0da8d24667f9100ff\",\n                    \"0x06\": \"0x8fc9b0f000b68fb921f7aa6aff81000000000000000000000000000000000001\",\n                    \"0x07\": \"0x81d5ff63680841482299f3eab616446dcd336f537c0c565aa4112ab95d91ff01\",\n                    \"0x08\": \"0x9c6ca90dac4e97dea02ac969e8649ee9e6232e0c3f4797411151cb8f90910101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60116101000a6101000a600055601160ff0a6101000a60015560116101010a6101000a60025560116101000a60ff0a600355601160ff0a60ff0a60045560116101010a60ff0a60055560116101000a6101010a600655601160ff0a6101010a60075560116101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_18.json",
    "content": "{\n    \"expPowerOf256Of256_18\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_18Filler.json\",\n            \"sourceHash\": \"8cb52e6bdf20dde0fbdfcfa1309199db454a3bea15b4695b2f19fc0de0eb7aca\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60126101000a6101000a600055601260ff0a6101000a60015560126101010a6101000a60025560126101000a60ff0a600355601260ff0a60ff0a60045560126101010a60ff0a60055560126101000a6101010a600655601260ff0a6101010a60075560126101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2ade\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60126101000a6101000a600055601260ff0a6101000a60015560126101010a6101000a60025560126101000a60ff0a600355601260ff0a60ff0a60045560126101010a60ff0a60055560126101000a6101010a600655601260ff0a6101010a60075560126101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x698218879ec55c33085514ff7f00000000000000000000000000000000000001\",\n                    \"0x04\": \"0x8a2cbd9f40794e2205b13306f2aa0a43c60823c64b95d8601fa4f1e521ee00ff\",\n                    \"0x05\": \"0xc1b5a1e3a81da51b10d84e880f0113ff67b863ddad3faf1f4ecf413f101200ff\",\n                    \"0x06\": \"0xc9b0f000b68fb921f7aa6aff8100000000000000000000000000000000000001\",\n                    \"0x07\": \"0x410be68e49452a1fbcd863bf6e8d637f8eae4979c34c88d552afbcc20fee0101\",\n                    \"0x08\": \"0xf540cb714754b5b1eb0373833833bd7fb0ee925ce8b92962500b7a1c22120101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60126101000a6101000a600055601260ff0a6101000a60015560126101010a6101000a60025560126101000a60ff0a600355601260ff0a60ff0a60045560126101010a60ff0a60055560126101000a6101010a600655601260ff0a6101010a60075560126101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_19.json",
    "content": "{\n    \"expPowerOf256Of256_19\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_19Filler.json\",\n            \"sourceHash\": \"2bf12bb4afe51d507c22e76e8e5c567b0ef569281b1ebfd4045334c1da40bef5\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60136101000a6101000a600055601360ff0a6101000a60015560136101010a6101000a60025560136101000a60ff0a600355601360ff0a60ff0a60045560136101010a60ff0a60055560136101000a6101010a600655601360ff0a6101010a60075560136101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2a84\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60136101000a6101000a600055601360ff0a6101000a60015560136101010a6101000a60025560136101000a60ff0a600355601360ff0a60ff0a60045560136101010a60ff0a60055560136101000a6101010a600655601360ff0a6101010a60075560136101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x8218879ec55c33085514ff7f0000000000000000000000000000000000000001\",\n                    \"0x04\": \"0xb795ad7ac24cfbb7435cf53bd3584f3d4b2709935635c3ceb66e761ff091feff\",\n                    \"0x05\": \"0x1f0bb7be91a0ccd0cca93d75cf03de3e6b56fe8f1c54242617665327219300ff\",\n                    \"0x06\": \"0xb0f000b68fb921f7aa6aff810000000000000000000000000000000000000001\",\n                    \"0x07\": \"0xad571756ecbff1bfdef064861e5e92c5d897a9cc380e54bdbaabd80bb793ff01\",\n                    \"0x08\": \"0xd8b5b531989e689f700dcdb43ab90e79a49dfbbb5a13dbf751df98bb34930101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60136101000a6101000a600055601360ff0a6101000a60015560136101010a6101000a60025560136101000a60ff0a600355601360ff0a60ff0a60045560136101010a60ff0a60055560136101000a6101010a600655601360ff0a6101010a60075560136101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_2.json",
    "content": "{\n    \"expPowerOf256Of256_2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_2Filler.json\",\n            \"sourceHash\": \"1bb794ffa6e9ae153773b173b7a12dac12fac68c4ca5cda54e75173507967636\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60026101000a6101000a600055600260ff0a6101000a60015560026101010a6101000a60025560026101000a60ff0a600355600260ff0a60ff0a60045560026101010a60ff0a60055560026101000a6101010a600655600260ff0a6101010a60075560026101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d307e\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026101000a6101000a600055600260ff0a6101000a60015560026101010a6101000a60025560026101000a60ff0a600355600260ff0a60ff0a60045560026101010a60ff0a60055560026101000a6101010a600655600260ff0a6101010a60075560026101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x4ee4ceeaac565c81f55a87c43f82f7c889ef4fc7c679671e28d594ff7f000001\",\n                    \"0x04\": \"0x82f46a1b4e34d66712910615d2571d75606ceac51fa8ca8c58cf6ca881fe00ff\",\n                    \"0x05\": \"0x81c9fcefa5de158ae2007f25d35c0d11cd735342a48905955a5a6852800200ff\",\n                    \"0x06\": \"0x666ac362902470ed850709e2a29969d10cba09debc03c38d172aeaff81000001\",\n                    \"0x07\": \"0xeb30a3c678a01bde914548f98f3366dc0ffe9f85384ebf1111d03dad7ffe0101\",\n                    \"0x08\": \"0x72d0a7939b6303ce1d46e6e3f1b8be303bfdb2b00f41ad8076b0975782020101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026101000a6101000a600055600260ff0a6101000a60015560026101010a6101000a60025560026101000a60ff0a600355600260ff0a60ff0a60045560026101010a60ff0a60055560026101000a6101010a600655600260ff0a6101010a60075560026101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_20.json",
    "content": "{\n    \"expPowerOf256Of256_20\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_20Filler.json\",\n            \"sourceHash\": \"3e1e5001e4e59a393a85390f68cd05d35e46428201bde93b6f68ceb7ef9ec051\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60146101000a6101000a600055601460ff0a6101000a60015560146101010a6101000a60025560146101000a60ff0a600355601460ff0a60ff0a60045560146101010a60ff0a60055560146101000a6101010a600655601460ff0a6101010a60075560146101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2a2a\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60146101000a6101000a600055601460ff0a6101000a60015560146101010a6101000a60025560146101000a60ff0a600355601460ff0a60ff0a60045560146101010a60ff0a60055560146101000a6101010a600655601460ff0a6101010a60075560146101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x18879ec55c33085514ff7f000000000000000000000000000000000000000001\",\n                    \"0x04\": \"0x67e4797dc21f02ce4a7c52218c7dbea5d212e6c244e24f0ba4c08613c7ec00ff\",\n                    \"0x05\": \"0xa1ce1a085f258785846939cc1d2e8725ac94ad4dff8913234e00679fb41400ff\",\n                    \"0x06\": \"0xf000b68fb921f7aa6aff81000000000000000000000000000000000000000001\",\n                    \"0x07\": \"0xcce501857a1cb45473915a28082af950e0f78f7e2de68ce748adb661b3ec0101\",\n                    \"0x08\": \"0x3b2e28d274a16c08b58a23bad63bba6d7b09685769d1f68ca3873bedc8140101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60146101000a6101000a600055601460ff0a6101000a60015560146101010a6101000a60025560146101000a60ff0a600355601460ff0a60ff0a60045560146101010a60ff0a60055560146101000a6101010a600655601460ff0a6101010a60075560146101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_21.json",
    "content": "{\n    \"expPowerOf256Of256_21\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_21Filler.json\",\n            \"sourceHash\": \"ce52da9057e3fa7d2cd345a3397d93afefa12c7879817ff918ce958ab90f2595\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60156101000a6101000a600055601560ff0a6101000a60015560156101010a6101000a60025560156101000a60ff0a600355601560ff0a60ff0a60045560156101010a60ff0a60055560156101000a6101010a600655601560ff0a6101010a60075560156101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d29d0\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60156101000a6101000a600055601560ff0a6101000a60015560156101010a6101000a60025560156101000a60ff0a600355601560ff0a60ff0a60045560156101010a60ff0a60055560156101000a6101010a600655601560ff0a6101010a60075560156101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x879ec55c33085514ff7f00000000000000000000000000000000000000000001\",\n                    \"0x04\": \"0x7fd07055ff50cdfe4b4bd9a15133d72d3607d92eb7ac81bac93db7ff4c93feff\",\n                    \"0x05\": \"0x665ac5c769e87f61d5993abc26522fbfca2734d76a63216b2d550d29c79500ff\",\n                    \"0x06\": \"0xb68fb921f7aa6aff8100000000000000000000000000000000000000000001\",\n                    \"0x07\": \"0x1c93db67c9884bc694686d69a25a5d7ed089841d5ce147fdd7199ab00d95ff01\",\n                    \"0x08\": \"0x485053d8ff66be52036597520344fac87b6a305426a9e49221d3f934dc950101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60156101000a6101000a600055601560ff0a6101000a60015560156101010a6101000a60025560156101000a60ff0a600355601560ff0a60ff0a60045560156101010a60ff0a60055560156101000a6101010a600655601560ff0a6101010a60075560156101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_22.json",
    "content": "{\n    \"expPowerOf256Of256_22\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_22Filler.json\",\n            \"sourceHash\": \"b568d0b177c9f22d73b46e92e6fc973e292a6406e5c0fd774c4d62ffd1323a56\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60166101000a6101000a600055601660ff0a6101000a60015560166101010a6101000a60025560166101000a60ff0a600355601660ff0a60ff0a60045560166101010a60ff0a60055560166101000a6101010a600655601660ff0a6101010a60075560166101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2976\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60166101000a6101000a600055601660ff0a6101000a60015560166101010a6101000a60025560166101000a60ff0a600355601660ff0a60ff0a60045560166101010a60ff0a60055560166101000a6101010a600655601660ff0a6101010a60075560166101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x9ec55c33085514ff7f0000000000000000000000000000000000000000000001\",\n                    \"0x04\": \"0xec447e662ac08957d7e290a421dbf54c0aaf43aadc9cc465ad0b02f071ea00ff\",\n                    \"0x05\": \"0xdc9178d3bab470096f01477c859b5f4173986640b659426412a653465c1600ff\",\n                    \"0x06\": \"0xb68fb921f7aa6aff810000000000000000000000000000000000000000000001\",\n                    \"0x07\": \"0xdcf0a770777610503596ae0311af46c171151ed45107d7e7bb8f74bb5bea0101\",\n                    \"0x08\": \"0x4d65773387993928c95c861274232d3fb6f6b7fe1b22e4e61a30e71172160101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60166101000a6101000a600055601660ff0a6101000a60015560166101010a6101000a60025560166101000a60ff0a600355601660ff0a60ff0a60045560166101010a60ff0a60055560166101000a6101010a600655601660ff0a6101010a60075560166101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_23.json",
    "content": "{\n    \"expPowerOf256Of256_23\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_23Filler.json\",\n            \"sourceHash\": \"38af599c5f1710b1d7c98da78bf0c4426b7fd2c3ea8afe4272147706a93b231b\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60176101000a6101000a600055601760ff0a6101000a60015560176101010a6101000a60025560176101000a60ff0a600355601760ff0a60ff0a60045560176101010a60ff0a60055560176101000a6101010a600655601760ff0a6101010a60075560176101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d291c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60176101000a6101000a600055601760ff0a6101000a60015560176101010a6101000a60025560176101000a60ff0a600355601760ff0a60ff0a60045560176101010a60ff0a60055560176101000a6101010a600655601760ff0a6101010a60075560176101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0xc55c33085514ff7f000000000000000000000000000000000000000000000001\",\n                    \"0x04\": \"0x537ca0f03f974303005f1e6693b55b72315a166841732e42b8353724a495feff\",\n                    \"0x05\": \"0x86418797ec60058de6cca47dfdbee79923ac49d7801e01840041ca76719700ff\",\n                    \"0x06\": \"0x8fb921f7aa6aff81000000000000000000000000000000000000000000000001\",\n                    \"0x07\": \"0x56a55341ab8d4318f1cfb55d5f21e2ba35d7e070a72bac6b2b21baae5f97ff01\",\n                    \"0x08\": \"0x55ddd0ec77909de6d8311116cf520398e816f928b06fdd90ec239d0488970101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60176101000a6101000a600055601760ff0a6101000a60015560176101010a6101000a60025560176101000a60ff0a600355601760ff0a60ff0a60045560176101010a60ff0a60055560176101000a6101010a600655601760ff0a6101010a60075560176101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_24.json",
    "content": "{\n    \"expPowerOf256Of256_24\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_24Filler.json\",\n            \"sourceHash\": \"b2214b33d3fab1dfe04637edd51f67ec988e5bc2cbf134113adca7a36b73580b\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60186101000a6101000a600055601860ff0a6101000a60015560186101010a6101000a60025560186101000a60ff0a600355601860ff0a60ff0a60045560186101010a60ff0a60055560186101000a6101010a600655601860ff0a6101010a60075560186101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d28c2\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60186101000a6101000a600055601860ff0a6101000a60015560186101010a6101000a60025560186101000a60ff0a600355601860ff0a60ff0a60045560186101010a60ff0a60055560186101000a6101010a600655601860ff0a6101010a60075560186101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x5c33085514ff7f00000000000000000000000000000000000000000000000001\",\n                    \"0x04\": \"0xd542e526003539ead104274aff2d78332366e29d328c2161f0c120731fe800ff\",\n                    \"0x05\": \"0xc706cb25e8384ce9bb5c9cb48415238ba03e16c448e292c0a101843b081800ff\",\n                    \"0x06\": \"0xb921f7aa6aff8100000000000000000000000000000000000000000000000001\",\n                    \"0x07\": \"0x4ca55f89202c524cb0f1cb3195d13c8d94a9f7a05c59e1d4031577c707e80101\",\n                    \"0x08\": \"0x8c4b0574e9156b80035f3ecdcf1fe79d273ed7559747a4322bcd338f20180101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60186101000a6101000a600055601860ff0a6101000a60015560186101010a6101000a60025560186101000a60ff0a600355601860ff0a60ff0a60045560186101010a60ff0a60055560186101000a6101010a600655601860ff0a6101010a60075560186101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_25.json",
    "content": "{\n    \"expPowerOf256Of256_25\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_25Filler.json\",\n            \"sourceHash\": \"74d1ad702e512305c9b820a2f64cff06cf51504b5d46fd73aee35f186e64f053\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60196101000a6101000a600055601960ff0a6101000a60015560196101010a6101000a60025560196101000a60ff0a600355601960ff0a60ff0a60045560196101010a60ff0a60055560196101000a6101010a600655601960ff0a6101010a60075560196101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2868\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60196101000a6101000a600055601960ff0a6101000a60015560196101010a6101000a60025560196101000a60ff0a600355601960ff0a60ff0a60045560196101010a60ff0a60055560196101000a6101010a600655601960ff0a6101010a60075560196101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x33085514ff7f0000000000000000000000000000000000000000000000000001\",\n                    \"0x04\": \"0x7f510dd7198cac0a92ff7ea80451838c0dfa12114c41a0ef05907397f897feff\",\n                    \"0x05\": \"0x1275e752b6aee228ecba5e9b57ef1111deff3c651e2cfbf2cccd13151f9900ff\",\n                    \"0x06\": \"0x21f7aa6aff810000000000000000000000000000000000000000000000000001\",\n                    \"0x07\": \"0x6646340ad51a03bb710caf05756b685b33c7dad62ae68d369243700ead99ff01\",\n                    \"0x08\": \"0x29d80e8060ef2221929bb18215586c742686d6860e028ca0456b443238990101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60196101000a6101000a600055601960ff0a6101000a60015560196101010a6101000a60025560196101000a60ff0a600355601960ff0a60ff0a60045560196101010a60ff0a60055560196101000a6101010a600655601960ff0a6101010a60075560196101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_26.json",
    "content": "{\n    \"expPowerOf256Of256_26\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_26Filler.json\",\n            \"sourceHash\": \"f8cd2c9613fe495b1e4350181fb338743a9b059ec738b292702e62a997f0411f\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x601a6101000a6101000a600055601a60ff0a6101000a600155601a6101010a6101000a600255601a6101000a60ff0a600355601a60ff0a60ff0a600455601a6101010a60ff0a600555601a6101000a6101010a600655601a60ff0a6101010a600755601a6101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d280e\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601a6101000a6101000a600055601a60ff0a6101000a600155601a6101010a6101000a600255601a6101000a60ff0a600355601a60ff0a60ff0a600455601a6101010a60ff0a600555601a6101000a6101010a600655601a60ff0a6101010a600755601a6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x085514ff7f000000000000000000000000000000000000000000000000000001\",\n                    \"0x04\": \"0x1d164db738eb6893868b361ad2803f97be35764456e82a837667a693d1e600ff\",\n                    \"0x05\": \"0x8b92c24abebf376a5aab5ff4dfd3538a03d38a10bced2aae8e1a8a85b81a00ff\",\n                    \"0x06\": \"0xf7aa6aff81000000000000000000000000000000000000000000000000000001\",\n                    \"0x07\": \"0x6931bda98c70e860a1f6a5224940f1ec7e6734cd9456c95806384f7cb7e60101\",\n                    \"0x08\": \"0x3402a9db66492dfc2a220715e76243469462f24edc56903ba1d8e96ed21a0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601a6101000a6101000a600055601a60ff0a6101000a600155601a6101010a6101000a600255601a6101000a60ff0a600355601a60ff0a60ff0a600455601a6101010a60ff0a600555601a6101000a6101010a600655601a60ff0a6101010a600755601a6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_27.json",
    "content": "{\n    \"expPowerOf256Of256_27\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_27Filler.json\",\n            \"sourceHash\": \"58b69b876666593f06ee8e5fef2f9fc078908f419ce364fe9dedf5acffeea71e\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x601b6101000a6101000a600055601b60ff0a6101000a600155601b6101010a6101000a600255601b6101000a60ff0a600355601b60ff0a60ff0a600455601b6101010a60ff0a600555601b6101000a6101010a600655601b60ff0a6101010a600755601b6101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d27b4\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601b6101000a6101000a600055601b60ff0a6101000a600155601b6101010a6101000a600255601b6101000a60ff0a600355601b60ff0a60ff0a600455601b6101010a60ff0a600555601b6101000a6101010a600655601b60ff0a6101010a600755601b6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x5514ff7f00000000000000000000000000000000000000000000000000000001\",\n                    \"0x04\": \"0x178918ffbcb401d4efd2f7dfb4d01a897172267f0f491121ac52dd614899feff\",\n                    \"0x05\": \"0x38ecff71480ca0b422f2ed6f780d5fead2ae234a49104b10a86f7f0dd19b00ff\",\n                    \"0x06\": \"0xaa6aff8100000000000000000000000000000000000000000000000000000001\",\n                    \"0x07\": \"0xd02811cb5dc1d80567e810532b235b7672f5c78cd6e89bb511d5e2d8f79bff01\",\n                    \"0x08\": \"0x1b4e6404f474c18055d30bb8987672f59e97980d6f9de1764c0fbec5ec9b0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601b6101000a6101000a600055601b60ff0a6101000a600155601b6101010a6101000a600255601b6101000a60ff0a600355601b60ff0a60ff0a600455601b6101010a60ff0a600555601b6101000a6101010a600655601b60ff0a6101010a600755601b6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_28.json",
    "content": "{\n    \"expPowerOf256Of256_28\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_28Filler.json\",\n            \"sourceHash\": \"7c777e8ac6e44db49986159099879a393d4d1e24a134a942bc56e9a3f645f441\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x601c6101000a6101000a600055601c60ff0a6101000a600155601c6101010a6101000a600255601c6101000a60ff0a600355601c60ff0a60ff0a600455601c6101010a60ff0a600555601c6101000a6101010a600655601c60ff0a6101010a600755601c6101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d275a\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601c6101000a6101000a600055601c60ff0a6101000a600155601c6101010a6101000a600255601c6101000a60ff0a600355601c60ff0a60ff0a600455601c6101010a60ff0a600555601c6101000a6101010a600655601c60ff0a6101010a600755601c6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x14ff7f0000000000000000000000000000000000000000000000000000000001\",\n                    \"0x04\": \"0xffd368e44b3f85cb81ae394c9809ca9fa2db46a83d7880a912ab6d4a87e400ff\",\n                    \"0x05\": \"0x0981ad53c19b15a94bcf0bf20235dd0da9df25f46ae635029fe2062e6c1c00ff\",\n                    \"0x06\": \"0x6aff810000000000000000000000000000000000000000000000000000000001\",\n                    \"0x07\": \"0x19df06ffa28250867006726405fbc05d43dc2f9d2f025006db089bd46be40101\",\n                    \"0x08\": \"0x243fffe3a4f2982f45055c08f379648ab886da8027a7401117a8e0b8881c0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601c6101000a6101000a600055601c60ff0a6101000a600155601c6101010a6101000a600255601c6101000a60ff0a600355601c60ff0a60ff0a600455601c6101010a60ff0a600555601c6101000a6101010a600655601c60ff0a6101010a600755601c6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_29.json",
    "content": "{\n    \"expPowerOf256Of256_29\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_29Filler.json\",\n            \"sourceHash\": \"b0d3a0e97954254e535a7cba322485f664e2915eadb53a97e9294808bb5736e5\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x601d6101000a6101000a600055601d60ff0a6101000a600155601d6101010a6101000a600255601d6101000a60ff0a600355601d60ff0a60ff0a600455601d6101010a60ff0a600555601d6101000a6101010a600655601d60ff0a6101010a600755601d6101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2700\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601d6101000a6101000a600055601d60ff0a6101000a600155601d6101010a6101000a600255601d6101000a60ff0a600355601d60ff0a60ff0a600455601d6101010a60ff0a600555601d6101000a6101010a600655601d60ff0a6101010a600755601d6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0xff7f000000000000000000000000000000000000000000000000000000000001\",\n                    \"0x04\": \"0x41e065d46e0349cfe624c4e8a2034aea1f7edfff80e511cd8067d488949bfeff\",\n                    \"0x05\": \"0xa84162ca6675a22c4c79dfc4ea15f760db5a04dbf04246764199b668879d00ff\",\n                    \"0x06\": \"0xff81000000000000000000000000000000000000000000000000000000000001\",\n                    \"0x07\": \"0x1226984faa6b05ebdbd45d8477fa4fd5b55bfd5061de03c319282b153d9dff01\",\n                    \"0x08\": \"0x5cc9e6b0b749fd94541ad00364bdec2fca7816981ca3e38f485decc7a49d0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601d6101000a6101000a600055601d60ff0a6101000a600155601d6101010a6101000a600255601d6101000a60ff0a600355601d60ff0a60ff0a600455601d6101010a60ff0a600555601d6101000a6101010a600655601d60ff0a6101010a600755601d6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_3.json",
    "content": "{\n    \"expPowerOf256Of256_3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_3Filler.json\",\n            \"sourceHash\": \"53999523fa8817e9744f5212cb80074bff9d270fa6581d7d88ed73920d414ab2\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60036101000a6101000a600055600360ff0a6101000a60015560036101010a6101000a60025560036101000a60ff0a600355600360ff0a60ff0a60045560036101010a60ff0a60055560036101000a6101010a600655600360ff0a6101010a60075560036101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d3024\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036101000a6101000a600055600360ff0a6101000a60015560036101010a6101000a60025560036101000a60ff0a600355600360ff0a60ff0a60045560036101010a60ff0a60055560036101000a6101010a600655600360ff0a6101010a60075560036101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x109a00e1370d2d2922bf892e85becb54297354b2e5c75388d514ff7f00000001\",\n                    \"0x04\": \"0x54a792f15e9aba7e4ad9e716bc169eea3a6e2e9c49bf9b335874613c8081feff\",\n                    \"0x05\": \"0x5d24a14d8e5e039372cd0f6a0f31e9ed6b75adba9f16b1c5b3edd5ba818300ff\",\n                    \"0x06\": \"0x298e2f316b4ccded5ebf515998d9ec20df69404b04a441782a6aff8100000001\",\n                    \"0x07\": \"0x4335694e98f372183c62a2339fa4ad161e9b4c42240bdc9452abffd07783ff01\",\n                    \"0x08\": \"0xf0f0820797315acd063056bba76f6a9c3e281cdb5197a233967ca94684830101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036101000a6101000a600055600360ff0a6101000a60015560036101010a6101000a60025560036101000a60ff0a600355600360ff0a60ff0a60045560036101010a60ff0a60055560036101000a6101010a600655600360ff0a6101010a60075560036101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_30.json",
    "content": "{\n    \"expPowerOf256Of256_30\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_30Filler.json\",\n            \"sourceHash\": \"804f4e95e384d6edbff23e904b20f47e7fa056744a955a10e0a41c32a620f7a1\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x601e6101000a6101000a600055601e60ff0a6101000a600155601e6101010a6101000a600255601e6101000a60ff0a600355601e60ff0a60ff0a600455601e6101010a60ff0a600555601e6101000a6101010a600655601e60ff0a6101010a600755601e6101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d26a6\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601e6101000a6101000a600055601e60ff0a6101000a600155601e6101010a6101000a600255601e6101000a60ff0a600355601e60ff0a60ff0a600455601e6101010a60ff0a600555601e6101000a6101010a600655601e60ff0a6101010a600755601e6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x7f00000000000000000000000000000000000000000000000000000000000001\",\n                    \"0x04\": \"0xe9772778f50fa0a69cd10fa019ac56d72ac7a7d7af26c4ba28415c8f41e200ff\",\n                    \"0x05\": \"0x33f0385ef73feebdb952e5adb643dd0fa178fd9271578219ad50a73d241e00ff\",\n                    \"0x06\": \"0x8100000000000000000000000000000000000000000000000000000000000001\",\n                    \"0x07\": \"0xfd405cce8f73dffc04a6f0ff6ffc6bf7961876d09c5b4933a68f0cc623e20101\",\n                    \"0x08\": \"0xc5a8f4566fd2e96e4ce3a8b3ec0863e7b20bc3b2f3dc5261ba8a0174421e0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601e6101000a6101000a600055601e60ff0a6101000a600155601e6101010a6101000a600255601e6101000a60ff0a600355601e60ff0a60ff0a600455601e6101010a60ff0a600555601e6101000a6101010a600655601e60ff0a6101010a600755601e6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_31.json",
    "content": "{\n    \"expPowerOf256Of256_31\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_31Filler.json\",\n            \"sourceHash\": \"bae9acb496c84a8fcc457a184519f0b42a40f8c0bb9c606c32a4c0e6cc73bc5c\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x601f6101000a6101000a600055601f60ff0a6101000a600155601f6101010a6101000a600255601f6101000a60ff0a600355601f60ff0a60ff0a600455601f6101010a60ff0a600555601f6101000a6101010a600655601f60ff0a6101010a600755601f6101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d264c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601f6101000a6101000a600055601f60ff0a6101000a600155601f6101010a6101000a600255601f6101000a60ff0a600355601f60ff0a60ff0a600455601f6101010a60ff0a600555601f6101000a6101010a600655601f60ff0a6101010a600755601f6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x01\",\n                    \"0x04\": \"0xf9cb87f5b1ab58602f52a1e9d392e5675b86a59a53943a8d4ec2a915dc9dfeff\",\n                    \"0x05\": \"0x893d729a64e318860ec5047e70e598da163eb41e71e74b04dfd4712d419f00ff\",\n                    \"0x06\": \"0x01\",\n                    \"0x07\": \"0xee5f2839c1b4f6ca05e6fdb04e2fb49c0f860b3765c27dc781a150cb7f9fff01\",\n                    \"0x08\": \"0xb4c358e3c6bcddfb509ea487d733df0e1854f29c3b6bfd4a8caabe3f609f0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601f6101000a6101000a600055601f60ff0a6101000a600155601f6101010a6101000a600255601f6101000a60ff0a600355601f60ff0a60ff0a600455601f6101010a60ff0a600555601f6101000a6101010a600655601f60ff0a6101010a600755601f6101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_32.json",
    "content": "{\n    \"expPowerOf256Of256_32\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_32Filler.json\",\n            \"sourceHash\": \"f566ebbbcb84fc96179f87b08deeacd0d2819c3be9ffc463c64b98dc94d9eb70\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60206101000a6101000a600055602060ff0a6101000a60015560206101010a6101000a60025560206101000a60ff0a600355602060ff0a60ff0a60045560206101010a60ff0a60055560206101000a6101010a600655602060ff0a6101010a60075560206101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0cef56\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60206101000a6101000a600055602060ff0a6101000a60015560206101010a6101000a60025560206101000a60ff0a600355602060ff0a60ff0a60045560206101010a60ff0a60055560206101000a6101010a600655602060ff0a6101010a60075560206101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\",\n                    \"0x03\": \"0x01\",\n                    \"0x04\": \"0xb8247842bb5ce75c08d0c251669ed5870fa24a22952e5db3a7c66c59ffe000ff\",\n                    \"0x05\": \"0xee526e5a06f2a990b2bf6c951e5feabf0e07ee16877296e1be872db9e02000ff\",\n                    \"0x06\": \"0x01\",\n                    \"0x07\": \"0xeda7d024b6de40a9d3b966e71f10a4667edc5b71cab07aeabcac6249dfe00101\",\n                    \"0x08\": \"0x512ecfaeeb11205f0833e1054dcb1300488e0954be5af77a49e143aa00200101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60206101000a6101000a600055602060ff0a6101000a60015560206101010a6101000a60025560206101000a60ff0a600355602060ff0a60ff0a60045560206101010a60ff0a60055560206101000a6101010a600655602060ff0a6101010a60075560206101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_33.json",
    "content": "{\n    \"expPowerOf256Of256_33\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_33Filler.json\",\n            \"sourceHash\": \"62951920849f41acd9c64c96645f372cc099f52e21f802d21f04a76e47dcca8d\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60216101000a6101000a600055602160ff0a6101000a60015560216101010a6101000a60025560216101000a60ff0a600355602160ff0a60ff0a60045560216101010a60ff0a60055560216101000a6101010a600655602160ff0a6101010a60075560216101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0cef56\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60216101000a6101000a600055602160ff0a6101000a60015560216101010a6101000a60025560216101000a60ff0a600355602160ff0a60ff0a60045560216101010a60ff0a60055560216101000a6101010a600655602160ff0a6101010a60075560216101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\",\n                    \"0x03\": \"0x01\",\n                    \"0x04\": \"0x8dcb65b5494eba78cd6756a6f9851f6e26d0f2bb9ecd7e9abd7e9b11209ffeff\",\n                    \"0x05\": \"0x6694bb31b20cd625f3756897dae6d738f2e64467b5b6f10fa3e07763ffa100ff\",\n                    \"0x06\": \"0x01\",\n                    \"0x07\": \"0xe678999aeffd1f1f45081f64de7f80ab083dd7df04721ed64ee04c03bda1ff01\",\n                    \"0x08\": \"0x39b68fb9898dd7568abd178397251ce8226a25c1d305a4e79573333520a10101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60216101000a6101000a600055602160ff0a6101000a60015560216101010a6101000a60025560216101000a60ff0a600355602160ff0a60ff0a60045560216101010a60ff0a60055560216101000a6101010a600655602160ff0a6101010a60075560216101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_4.json",
    "content": "{\n    \"expPowerOf256Of256_4\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_4Filler.json\",\n            \"sourceHash\": \"9e89b6c7017914475e04d79e5d288d291131826bc9eed968aa011e9d948bf772\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60046101000a6101000a600055600460ff0a6101000a60015560046101010a6101000a60025560046101000a60ff0a600355600460ff0a60ff0a60045560046101010a60ff0a60055560046101000a6101010a600655600460ff0a6101010a60075560046101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2fca\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60046101000a6101000a600055600460ff0a6101000a60015560046101010a6101000a60025560046101000a60ff0a600355600460ff0a60ff0a60045560046101010a60ff0a60055560046101000a6101010a600655600460ff0a6101010a60075560046101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0xe6540ce46eaf70da9d644015a661e0e245b13f307cb3885514ff7f0000000001\",\n                    \"0x04\": \"0x6526b38b05a6325b80e1c84ab41dc934fd70f33f1bd0eab3d1f61a4707fc00ff\",\n                    \"0x05\": \"0xe959516cd27e5d8fd487b72db2989b3ec2ba9fb7ead41554526fe5a3040400ff\",\n                    \"0x06\": \"0xe7498a48c6ce2530bbe814ee3440c8c44fffab7ad8a277aa6aff810000000001\",\n                    \"0x07\": \"0x2dffa3e901e5a392d15b79f4193d2168147d2aa7c55870b46c3a905d03fc0101\",\n                    \"0x08\": \"0xe16ea721c96539edb4f7fb82de0dad8cccb1e7a6966a6777635f6fb908040101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60046101000a6101000a600055600460ff0a6101000a60015560046101010a6101000a60025560046101000a60ff0a600355600460ff0a60ff0a60045560046101010a60ff0a60055560046101000a6101010a600655600460ff0a6101010a60075560046101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_5.json",
    "content": "{\n    \"expPowerOf256Of256_5\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_5Filler.json\",\n            \"sourceHash\": \"d81389f12c21ff3e30ea2020d3dd5d086364da646e9fe273b4ad9f954f06ec60\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60056101000a6101000a600055600560ff0a6101000a60015560056101010a6101000a60025560056101000a60ff0a600355600560ff0a60ff0a60045560056101010a60ff0a60055560056101000a6101010a600655600560ff0a6101010a60075560056101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2f70\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056101000a6101000a600055600560ff0a6101000a60015560056101010a6101000a60025560056101000a60ff0a600355600560ff0a60ff0a60045560056101010a60ff0a60055560056101000a6101010a600655600560ff0a6101010a60075560056101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0xb581ac185aad71db2d177c286929c4c22809e5dcb3085514ff7f000000000001\",\n                    \"0x04\": \"0x75789eb2a64bc971389fbd11a1e6d7abbf95ad25e23fb9aa25e73a0bfc83feff\",\n                    \"0x05\": \"0xfc403fa42ceb6a0d0d3321bd9b2d8af25b1b667f87a04f496c78168d078500ff\",\n                    \"0x06\": \"0xcec5ec213b9cb5811f6ae00428fd7b6ef5a1af39a1f7aa6aff81000000000001\",\n                    \"0x07\": \"0x70ab32233202b98d382d17713fa0be391eaf74f85ba1740c9c3238c4ed85ff01\",\n                    \"0x08\": \"0xb622672a213faa79b32185ff93a7b27a8499e48f7b032cdb4d1a70300c850101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056101000a6101000a600055600560ff0a6101000a60015560056101010a6101000a60025560056101000a60ff0a600355600560ff0a60ff0a60045560056101010a60ff0a60055560056101000a6101010a600655600560ff0a6101010a60075560056101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_6.json",
    "content": "{\n    \"expPowerOf256Of256_6\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_6Filler.json\",\n            \"sourceHash\": \"d7294bb173d18f88acc0e8b342fe20037ce735b0eabab1ee878b6cccd909dd69\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60066101000a6101000a600055600660ff0a6101000a60015560066101010a6101000a60025560066101000a60ff0a600355600660ff0a60ff0a60045560066101010a60ff0a60055560066101000a6101010a600655600660ff0a6101010a60075560066101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2f16\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60066101000a6101000a600055600660ff0a6101000a60015560066101010a6101000a60025560066101000a60ff0a600355600660ff0a60ff0a60045560066101010a60ff0a60055560066101000a6101010a600655600660ff0a6101010a60075560066101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x1948059de1def03c4ec35fc22c2bb8f2bf45dc33085514ff7f00000000000001\",\n                    \"0x04\": \"0x41f818a8e24eb6d7bb7b193b4f2b5fdcf4bd0d453f2ac3499d8830d391fa00ff\",\n                    \"0x05\": \"0xede6fe4a943dfb5d967a2b85d6728759d40d2ef0ae4bc28bbb1867f98c0600ff\",\n                    \"0x06\": \"0x083c936cbaad5de592badc2e142fe4ebd6103921f7aa6aff8100000000000001\",\n                    \"0x07\": \"0x57385019fe4e0939ca3f35c37cadfaf52fba5b1cdfb02def3866e8068bfa0101\",\n                    \"0x08\": \"0x810ac878bd98428f6be8c6426ba9f9da09e3e33bf4fe10bfa3f8b12c92060101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60066101000a6101000a600055600660ff0a6101000a60015560066101010a6101000a60025560066101000a60ff0a600355600660ff0a60ff0a60045560066101010a60ff0a60055560066101000a6101010a600655600660ff0a6101010a60075560066101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_7.json",
    "content": "{\n    \"expPowerOf256Of256_7\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_7Filler.json\",\n            \"sourceHash\": \"5f0497543f5bbfea20d19f43c7129d149e737241704676e072b63afde805be9a\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60076101000a6101000a600055600760ff0a6101000a60015560076101010a6101000a60025560076101000a60ff0a600355600760ff0a60ff0a60045560076101010a60ff0a60055560076101000a6101010a600655600760ff0a6101010a60075560076101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2ebc\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60076101000a6101000a600055600760ff0a6101000a60015560076101010a6101000a60025560076101000a60ff0a600355600760ff0a60ff0a60045560076101010a60ff0a60055560076101000a6101010a600655600760ff0a6101010a60075560076101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x8bb02654111ad8c60ad8af132283a81f455c33085514ff7f0000000000000001\",\n                    \"0x04\": \"0xa8f75c129dbb8466d6703a2a0b8212131b3248d70e2478862ac40fe17485feff\",\n                    \"0x05\": \"0x5fd4d2de580383ee59f5e800ddb3f1717ceae03aede19d3dec5e5a69918700ff\",\n                    \"0x06\": \"0xc8624230b524b85d6340da48a5db20370fb921f7aa6aff810000000000000001\",\n                    \"0x07\": \"0x287b58a5a13cd7f454468ca616c181712f5ed25433a7d5a894b6ced35f87ff01\",\n                    \"0x08\": \"0x09930d11ac2804fa977bf951593c8dff8498779cc0cdc5812a4fba2f98870101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60076101000a6101000a600055600760ff0a6101000a60015560076101010a6101000a60025560076101000a60ff0a600355600760ff0a60ff0a60045560076101010a60ff0a60055560076101000a6101010a600655600760ff0a6101010a60075560076101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_8.json",
    "content": "{\n    \"expPowerOf256Of256_8\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_8Filler.json\",\n            \"sourceHash\": \"15792a145929161f4b5174b8ac68de0118939c8190a930f37d644d5b713b6710\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x05f5e100\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60086101000a6101000a600055600860ff0a6101000a60015560086101010a6101000a60025560086101000a60ff0a600355600860ff0a60ff0a60045560086101010a60ff0a60055560086101000a6101010a600655600860ff0a6101010a60075560086101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x989680\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9682a2\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60086101000a6101000a600055600860ff0a6101000a60015560086101010a6101000a60025560086101000a60ff0a600355600860ff0a60ff0a60045560086101010a60ff0a60055560086101000a6101010a600655600860ff0a6101010a60075560086101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x230041a0e7602d6e459609ed39081ec55c33085514ff7f000000000000000001\",\n                    \"0x04\": \"0xc407d8a413ef9079ead457ed686a05ac81039c0cae0a7f6afd01e8461ff800ff\",\n                    \"0x05\": \"0x67a397e0692385e4cd83853aabce220a94d449e885fa867e96d3ef5e180800ff\",\n                    \"0x06\": \"0x70add926e753655d6d0ebe9c0f81368fb921f7aa6aff81000000000000000001\",\n                    \"0x07\": \"0x0bdce80b8378e43f13d454b9d0a4c83cf311b8eaa45d5122cfd544a217f80101\",\n                    \"0x08\": \"0x629c25790e1488998877a9ecdf0fb69637e77d8a4bdc1b46270093ba20080101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60086101000a6101000a600055600860ff0a6101000a60015560086101010a6101000a60025560086101000a60ff0a600355600860ff0a60ff0a60045560086101010a60ff0a60055560086101000a6101010a600655600860ff0a6101010a60075560086101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256Of256_9.json",
    "content": "{\n    \"expPowerOf256Of256_9\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256Of256_9Filler.json\",\n            \"sourceHash\": \"212ea9362b564faaa5a671ac3903679ec022f19adddf2ba1efa75226fdfde37e\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60096101000a6101000a600055600960ff0a6101000a60015560096101010a6101000a60025560096101000a60ff0a600355600960ff0a60ff0a60045560096101010a60ff0a60055560096101000a6101010a600655600960ff0a6101010a60075560096101010a6101010a600855\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0d2e08\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60096101000a6101000a600055600960ff0a6101000a60015560096101010a6101000a60025560096101000a60ff0a600355600960ff0a60ff0a60045560096101010a60ff0a60055560096101000a6101010a600655600960ff0a6101010a60075560096101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x03\": \"0x53017d8eb210db2c8cd4a299079ec55c33085514ff7f00000000000000000001\",\n                    \"0x04\": \"0x48be09b6c6ae2aa660f1972125cecbb1038b5d236ecf766ba786e2c4e887feff\",\n                    \"0x05\": \"0x2e350d847ba73dc2099f83f532951c47269d9fd7e411b50bae00a9581f8900ff\",\n                    \"0x06\": \"0x013ab9e1f0df89a184b4d07080b68fb921f7aa6aff8100000000000000000001\",\n                    \"0x07\": \"0xf387ed41c1050f9da667f429a3e8fb30b61a55ede97d7b8acd797a03cd89ff01\",\n                    \"0x08\": \"0x525696c22bb3ce00fd2e3f6bbb9b4ea1046a5e31fcff2fedf8f8c74d28890101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60096101000a6101000a600055600960ff0a6101000a60015560096101010a6101000a60025560096101000a60ff0a600355600960ff0a60ff0a60045560096101010a60ff0a60055560096101000a6101010a600655600960ff0a6101010a60075560096101010a6101010a600855\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_1.json",
    "content": "{\n    \"expPowerOf256_1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_1Filler.json\",\n            \"sourceHash\": \"0d7062f87c376d5496399d09973fd1d17d4e5812c3b44c5a16f35243e382fd64\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60016101000a600055600160ff0a60015560016101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016101000a600055600160ff0a60015560016101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100\",\n                    \"0x01\": \"0xff\",\n                    \"0x02\": \"0x0101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016101000a600055600160ff0a60015560016101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_10.json",
    "content": "{\n    \"expPowerOf256_10\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_10Filler.json\",\n            \"sourceHash\": \"04051dd7b9d82fc286b3295f20d29f42f9e92cd282e588295c728f27f781d635\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600a6101000a600055600a60ff0a600155600a6101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600a6101000a600055600a60ff0a600155600a6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100000000000000000000\",\n                    \"0x01\": \"0xf62c88d104d1882cf601\",\n                    \"0x02\": \"0x010a2d78d2fcd2782d0a01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600a6101000a600055600a60ff0a600155600a6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_11.json",
    "content": "{\n    \"expPowerOf256_11\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_11Filler.json\",\n            \"sourceHash\": \"539fa78d77db2b2b4e5dadf17841ea9ccce92cee9e965e405ae3da8343d38383\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600b6101000a600055600b60ff0a600155600b6101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600b6101000a600055600b60ff0a600155600b6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x010000000000000000000000\",\n                    \"0x01\": \"0xf5365c4833ccb6a4c90aff\",\n                    \"0x02\": \"0x010b37a64bcfcf4aa5370b01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600b6101000a600055600b60ff0a600155600b6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_12.json",
    "content": "{\n    \"expPowerOf256_12\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_12Filler.json\",\n            \"sourceHash\": \"c837269f587b7fa487d63c649517f0c82e0ab3fbc87cf3209ee63214adb247fc\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600c6101000a600055600c60ff0a600155600c6101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600c6101000a600055600c60ff0a600155600c6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01000000000000000000000000\",\n                    \"0x01\": \"0xf44125ebeb98e9ee2441f401\",\n                    \"0x02\": \"0x010c42ddf21b9f19efdc420c01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600c6101000a600055600c60ff0a600155600c6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_13.json",
    "content": "{\n    \"expPowerOf256_13\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_13Filler.json\",\n            \"sourceHash\": \"164362da0450215255015d0d05abaa8b78e77646f27966337a8a878f16da6f43\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600d6101000a600055600d60ff0a600155600d6101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600d6101000a600055600d60ff0a600155600d6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100000000000000000000000000\",\n                    \"0x01\": \"0xf34ce4c5ffad5104361db20cff\",\n                    \"0x02\": \"0x010d4f20d00dbab909cc1e4e0d01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600d6101000a600055600d60ff0a600155600d6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_14.json",
    "content": "{\n    \"expPowerOf256_14\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_14Filler.json\",\n            \"sourceHash\": \"bb07d85208662a3236b75df0e004bf54abb982bb14e8134b13e666279a39f6a1\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600e6101000a600055600e60ff0a600155600e6101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600e6101000a600055600e60ff0a600155600e6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x010000000000000000000000000000\",\n                    \"0x01\": \"0xf25997e139ada3b331e7945af201\",\n                    \"0x02\": \"0x010e5c6ff0ddc873c2d5ea6c5b0e01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600e6101000a600055600e60ff0a600155600e6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_15.json",
    "content": "{\n    \"expPowerOf256_15\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_15Filler.json\",\n            \"sourceHash\": \"43d4318cd8989bb434be6f41f011dd397eb2b2c785070bedf9e4a333b279b5c7\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600f6101000a600055600f60ff0a600155600f6101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600f6101000a600055600f60ff0a600155600f6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01000000000000000000000000000000\",\n                    \"0x01\": \"0xf1673e495873f60f7eb5acc6970eff\",\n                    \"0x02\": \"0x010f6acc60cea63c3698c056c7690f01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600f6101000a600055600f60ff0a600155600f6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_16.json",
    "content": "{\n    \"expPowerOf256_16\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_16Filler.json\",\n            \"sourceHash\": \"66586a25e55376d52b4c15b22b116ffa26232b26978a9f16403d7e37560f8065\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60106101000a600055601060ff0a60015560106101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60106101000a600055601060ff0a60015560106101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100000000000000000000000000000000\",\n                    \"0x01\": \"0xf075d70b0f1b82196f36f719d077f001\",\n                    \"0x02\": \"0x01107a372d2f74e272cf59171e30781001\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60106101000a600055601060ff0a60015560106101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_17.json",
    "content": "{\n    \"expPowerOf256_17\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_17Filler.json\",\n            \"sourceHash\": \"5340e7363062468ab959ac92d014d03bd8e172fc6764fc7d2fe0200d437662da\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60116101000a600055601160ff0a60015560116101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60116101000a600055601160ff0a60015560116101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x010000000000000000000000000000000000\",\n                    \"0x01\": \"0xef856134040c669755c7c022b6a77810ff\",\n                    \"0x02\": \"0x01118ab1645ca45755422870354ea8881101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60116101000a600055601160ff0a60015560116101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_18.json",
    "content": "{\n    \"expPowerOf256_18\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_18Filler.json\",\n            \"sourceHash\": \"d2e13a0fdf747a1900296c97eb60b6ae888c47d96e776159454b321e2f0dc362\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60126101000a600055601260ff0a60015560126101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60126101000a600055601260ff0a60015560126101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01000000000000000000000000000000000000\",\n                    \"0x01\": \"0xee95dbd2d0085a30be71f86293f0d098ee01\",\n                    \"0x02\": \"0x01129c3c15c100fbac976a98a583f730991201\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60126101000a600055601260ff0a60015560126101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_19.json",
    "content": "{\n    \"expPowerOf256_19\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_19Filler.json\",\n            \"sourceHash\": \"37d0b9634c1b1523efd2a59cbba3a9bebf63696e36f07c786266b1da5b767667\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60136101000a600055601360ff0a60015560136101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60136101000a600055601360ff0a60015560136101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100000000000000000000000000000000000000\",\n                    \"0x01\": \"0xeda745f6fd3851d68db3866a315cdfc85512ff\",\n                    \"0x02\": \"0x0113aed851d6c1fca84402033e297b27c9ab1301\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60136101000a600055601360ff0a60015560136101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_2.json",
    "content": "{\n    \"expPowerOf256_2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_2Filler.json\",\n            \"sourceHash\": \"fc70a26e625c0d09ff09f1c38b004037cb6ac37d222ab8f7e5d63ffeecb548bf\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60026101000a600055600260ff0a60015560026101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026101000a600055600260ff0a60015560026101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x010000\",\n                    \"0x01\": \"0xfe01\",\n                    \"0x02\": \"0x010201\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026101000a600055600260ff0a60015560026101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_20.json",
    "content": "{\n    \"expPowerOf256_20\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_20Filler.json\",\n            \"sourceHash\": \"d895dace7075b6b234a3b6669055b84a074d38caf2c94740dd707ede5c4e52e6\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60146101000a600055601460ff0a60015560146101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60146101000a600055601460ff0a60015560146101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x010000000000000000000000000000000000000000\",\n                    \"0x01\": \"0xecb99eb1063b1984b725d2e3c72b82e88cbdec01\",\n                    \"0x02\": \"0x0114c2872a2898bea4ec46054167a4a2f174be1401\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60146101000a600055601460ff0a60015560146101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_21.json",
    "content": "{\n    \"expPowerOf256_21\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_21Filler.json\",\n            \"sourceHash\": \"85a12df1a4f899dbb79e93cd5ecebe67fdd00f6a01ecf7d2beb506e50917de31\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60156101000a600055601560ff0a60015560156101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60156101000a600055601560ff0a60015560156101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01000000000000000000000000000000000000000000\",\n                    \"0x01\": \"0xebcce5125534de6b326ead10e3645765a4312e14ff\",\n                    \"0x02\": \"0x0115d749b152c1576391324b46a90c47946632d21501\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60156101000a600055601560ff0a60015560156101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_22.json",
    "content": "{\n    \"expPowerOf256_22\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_22Filler.json\",\n            \"sourceHash\": \"d6c840b8fed448a5485f9902fbe548d3d0833253591b7523d2c8e7cee4b45d46\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60166101000a600055601660ff0a60015560166101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60166101000a600055601660ff0a60015560166101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100000000000000000000000000000000000000000000\",\n                    \"0x01\": \"0xeae1182d42dfa98cc73c3e63d280f30e3e8cfce6ea01\",\n                    \"0x02\": \"0x0116ed20fb041418baf4c37d91efb553dbfa9904e71601\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60166101000a600055601660ff0a60015560166101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_23.json",
    "content": "{\n    \"expPowerOf256_23\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_23Filler.json\",\n            \"sourceHash\": \"70639158e9a2e7705e8e651519caa294422d4c22c4ae5f7aa4208c99934f8750\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60176101000a600055601760ff0a60015560176101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60176101000a600055601760ff0a60015560176101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x010000000000000000000000000000000000000000000000\",\n                    \"0x01\": \"0xe9f63715159cc9e33a7502256eae721b304e6fea0316ff\",\n                    \"0x02\": \"0x0118040e1bff182cd3afb8410f81a5092fd6939debfd1701\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60176101000a600055601760ff0a60015560176101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_24.json",
    "content": "{\n    \"expPowerOf256_24\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_24Filler.json\",\n            \"sourceHash\": \"de159931cdc4d9e3b05bcd2450e0a3a68cefd8f7790f0e9b3e4bd20b00348372\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60186101000a600055601860ff0a60015560186101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60186101000a600055601860ff0a60015560186101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01000000000000000000000000000000000000000000000000\",\n                    \"0x01\": \"0xe90c40de00872d19573a8d23493fc3a9151e217a1913e801\",\n                    \"0x02\": \"0x01191c122a1b1745008367f9509126ae39066a3189e9141801\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60186101000a600055601860ff0a60015560186101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_25.json",
    "content": "{\n    \"expPowerOf256_25\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_25Filler.json\",\n            \"sourceHash\": \"2be606687455e2c91c144dee314eb4a9b58d6d8fb20cdc3a2a5e249d343bff20\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60196101000a600055601960ff0a60015560196101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60196101000a600055601960ff0a60015560196101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100000000000000000000000000000000000000000000000000\",\n                    \"0x01\": \"0xe823349d2286a5ec3de3529625f683e56c0903589efad418ff\",\n                    \"0x02\": \"0x011a352e3c45325c4583eb6149e1b7d4e73f709bbb72fd2c1901\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60196101000a600055601960ff0a60015560196101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_26.json",
    "content": "{\n    \"expPowerOf256_26\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_26Filler.json\",\n            \"sourceHash\": \"af71d938f6d58b1844196bd7efc232950357925dffae71ba917e3fae15fd590b\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x601a6101000a600055601a60ff0a600155601a6101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601a6101000a600055601a60ff0a600155601a6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x010000000000000000000000000000000000000000000000000000\",\n                    \"0x01\": \"0xe73b116885641f4651a56f438fd08d61869cfa55465bd944e601\",\n                    \"0x02\": \"0x011b4f636a81778ea1c96f4cab2b998cbc26b00c572e7029451a01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601a6101000a600055601a60ff0a600155601a6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_27.json",
    "content": "{\n    \"expPowerOf256_27\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_27Filler.json\",\n            \"sourceHash\": \"12b4fd8203f25dac8e6737c3bed9161e0a5750b398c2422c4e11ad654f0c3b36\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x601b6101000a600055601b60ff0a600155601b6101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601b6101000a600055601b60ff0a600155601b6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01000000000000000000000000000000000000000000000000000000\",\n                    \"0x01\": \"0xe653d6571cdebb270b53c9d44c40bcd425165d5af1157d6ba11aff\",\n                    \"0x02\": \"0x011c6ab2cdebf906306b38bbf7d6c52648e2d6bc63859e996e5f1b01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601b6101000a600055601b60ff0a600155601b6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_28.json",
    "content": "{\n    \"expPowerOf256_28\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_28Filler.json\",\n            \"sourceHash\": \"e17b86493cb24537086cf9add344b6ae59bf3ae5940aeb9ad44eeb4a746823ef\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x601c6101000a600055601c60ff0a600155601c6101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601c6101000a600055601c60ff0a600155601c6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100000000000000000000000000000000000000000000000000000000\",\n                    \"0x01\": \"0xe56d8280c5c1dc6be448760a77f47c1750f146fd962467ee3579e401\",\n                    \"0x02\": \"0x011d871d80b9e4ff369ba3f4b3ce9beb6f2bb9931fe9243807cd7a1c01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601c6101000a600055601c60ff0a600155601c6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_29.json",
    "content": "{\n    \"expPowerOf256_29\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_29Filler.json\",\n            \"sourceHash\": \"b90d51e859337fb3fcf2e09ca2206790304d7bbaf7c5752081dfa62ec20a00bb\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x601d6101000a600055601d60ff0a600155601d6101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601d6101000a600055601d60ff0a600155601d6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x010000000000000000000000000000000000000000000000000000000000\",\n                    \"0x01\": \"0xe48814fe44fc1a8f78642d946d7c879b39a055b6988e438647446a1cff\",\n                    \"0x02\": \"0x011ea4a49e3a9ee435d23f98a8826a875a9ae54cb3090d5c3fd547961d01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601d6101000a600055601d60ff0a600155601d6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_3.json",
    "content": "{\n    \"expPowerOf256_3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_3Filler.json\",\n            \"sourceHash\": \"6214682fab04f2582976d90de343ca30bf46ab6f7793ef052c9c0cd244c29c6e\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60036101000a600055600360ff0a60015560036101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036101000a600055600360ff0a60015560036101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01000000\",\n                    \"0x01\": \"0xfd02ff\",\n                    \"0x02\": \"0x01030301\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036101000a600055600360ff0a60015560036101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_30.json",
    "content": "{\n    \"expPowerOf256_30\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_30Filler.json\",\n            \"sourceHash\": \"68b204da901a1c2f2cf81688626dad9204b912276b7e4432974a8c0e256715ac\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x601e6101000a600055601e60ff0a600155601e6101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601e6101000a600055601e60ff0a600155601e6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01000000000000000000000000000000000000000000000000000000000000\",\n                    \"0x01\": \"0xe3a38ce946b71e74e8ebc966d90f0b139e66b560e1f5b542c0fd25b2e201\",\n                    \"0x02\": \"0x011fc34942d8d9831a0811d8412aecf1e1f58031ffbc16699c151cddb31e01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601e6101000a600055601e60ff0a600155601e6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_31.json",
    "content": "{\n    \"expPowerOf256_31\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_31Filler.json\",\n            \"sourceHash\": \"49e5149601ae2cfa0564b18d38bcc35b4fe703cac76882025a1b35a9cabef567\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x601f6101000a600055601f60ff0a600155601f6101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601f6101000a600055601f60ff0a600155601f6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100000000000000000000000000000000000000000000000000000000000000\",\n                    \"0x01\": \"0xe2bfe95c5d7067567402dd9d7235fc088ac84eab8113bf8d7e3c288d2f1eff\",\n                    \"0x02\": \"0x0120e30c8c1bb25c9d2219ea196c17ded3d775b231bbd28005b131fa90d11f01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601f6101000a600055601f60ff0a600155601f6101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_32.json",
    "content": "{\n    \"expPowerOf256_32\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_32Filler.json\",\n            \"sourceHash\": \"974decf621c77d7ff79be3bc89ae8deecb63c5766ea8fd5a83b2dfd3b1f2058c\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60206101000a600055602060ff0a60015560206101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0xd681\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60206101000a600055602060ff0a60015560206101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x01\": \"0xe1dd29730112f6ef1d8edabfd4c3c60c823d865cd592abcdf0bdec64a1efe001\",\n                    \"0x02\": \"0x2203ef98a7ce0ef9bf3c04038583f6b2ab4d27e3ed8e5285b6e32c8b61f02001\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60206101000a600055602060ff0a60015560206101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_33.json",
    "content": "{\n    \"expPowerOf256_33\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_33Filler.json\",\n            \"sourceHash\": \"2a7b68ea601c62fb6ae7603e4576332eb8e52655734329d0b56be10ce4d88d8f\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60216101000a600055602160ff0a60015560216101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0xd681\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60216101000a600055602160ff0a60015560216101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x01\": \"0xfb4c498e11e3f82e714be514ef024675bb48d678bd192222cd2e783d4df020ff\",\n                    \"0x02\": \"0x25f3884075dd08b8fb400789097aa95df8750bd17be0d83c9a0fb7ed52102101\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60216101000a600055602160ff0a60015560216101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_4.json",
    "content": "{\n    \"expPowerOf256_4\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_4Filler.json\",\n            \"sourceHash\": \"622075985c1d1107f37816ee8e9b24730902567916e00e2cc3b732f2dff0cbea\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60046101000a600055600460ff0a60015560046101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60046101000a600055600460ff0a60015560046101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100000000\",\n                    \"0x01\": \"0xfc05fc01\",\n                    \"0x02\": \"0x0104060401\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60046101000a600055600460ff0a60015560046101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_5.json",
    "content": "{\n    \"expPowerOf256_5\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_5Filler.json\",\n            \"sourceHash\": \"0deb85f9420b006b9e7cad328b4f1df2a820afac55d7ab1e0be81a67b9f4bf0c\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60056101000a600055600560ff0a60015560056101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056101000a600055600560ff0a60015560056101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x010000000000\",\n                    \"0x01\": \"0xfb09f604ff\",\n                    \"0x02\": \"0x01050a0a0501\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056101000a600055600560ff0a60015560056101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_6.json",
    "content": "{\n    \"expPowerOf256_6\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_6Filler.json\",\n            \"sourceHash\": \"fce500eb9c5fb197ee2d407f7a0e6f69ad4bb1905ce651982255241e9b5210fd\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60066101000a600055600660ff0a60015560066101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60066101000a600055600660ff0a60015560066101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01000000000000\",\n                    \"0x01\": \"0xfa0eec0efa01\",\n                    \"0x02\": \"0x01060f140f0601\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60066101000a600055600660ff0a60015560066101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_7.json",
    "content": "{\n    \"expPowerOf256_7\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_7Filler.json\",\n            \"sourceHash\": \"9f25116f93a9ebcf664ae3b302dcbc55d0c42a32ae52f837bff7057bc0adda16\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60076101000a600055600760ff0a60015560076101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60076101000a600055600760ff0a60015560076101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100000000000000\",\n                    \"0x01\": \"0xf914dd22eb06ff\",\n                    \"0x02\": \"0x0107152323150701\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60076101000a600055600760ff0a60015560076101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_8.json",
    "content": "{\n    \"expPowerOf256_8\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_8Filler.json\",\n            \"sourceHash\": \"6852bc5231c88e1d8dbd098c914b6e4496748429c62d9a3bac90c3a452bfbf12\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60086101000a600055600860ff0a60015560086101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60086101000a600055600860ff0a60015560086101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x010000000000000000\",\n                    \"0x01\": \"0xf81bc845c81bf801\",\n                    \"0x02\": \"0x01081c3846381c0801\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60086101000a600055600860ff0a60015560086101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf256_9.json",
    "content": "{\n    \"expPowerOf256_9\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf256_9Filler.json\",\n            \"sourceHash\": \"9daf0e960cb9e7ab3c3aaf8c587201eca7d809394fca60b0c301231d891d75d5\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60096101000a600055600960ff0a60015560096101010a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60096101000a600055600960ff0a60015560096101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01000000000000000000\",\n                    \"0x01\": \"0xf723ac7d8253dc08ff\",\n                    \"0x02\": \"0x010924547e7e54240901\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60096101000a600055600960ff0a60015560096101010a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_128.json",
    "content": "{\n    \"expPowerOf2_128\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf2_128Filler.json\",\n            \"sourceHash\": \"dac6d272b59f1cb03027b6e106b0b659a5ad6511e8cc121464dd73b220e512ff\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x608060020a600055607f60020a600155608160020a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x608060020a600055607f60020a600155608160020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100000000000000000000000000000000\",\n                    \"0x01\": \"0x80000000000000000000000000000000\",\n                    \"0x02\": \"0x0200000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x608060020a600055607f60020a600155608160020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_16.json",
    "content": "{\n    \"expPowerOf2_16\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf2_16Filler.json\",\n            \"sourceHash\": \"298553d61666a9d9042726a205f483b392fcf206135ff0c709abab221cbf07cb\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x601060020a600055600f60020a600155601160020a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601060020a600055600f60020a600155601160020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x010000\",\n                    \"0x01\": \"0x8000\",\n                    \"0x02\": \"0x020000\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x601060020a600055600f60020a600155601160020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_2.json",
    "content": "{\n    \"expPowerOf2_2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf2_2Filler.json\",\n            \"sourceHash\": \"a82b4186babe26c83c518bf8bbd99cd104af2f47bb39300eb40556aad07b5e12\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600260020a600055600160020a600155600360020a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600260020a600055600160020a600155600360020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x04\",\n                    \"0x01\": \"0x02\",\n                    \"0x02\": \"0x08\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600260020a600055600160020a600155600360020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_256.json",
    "content": "{\n    \"expPowerOf2_256\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf2_256Filler.json\",\n            \"sourceHash\": \"c188d36960623fbc68bd0024325dfd28df3964c6ef43d2e5322500c780389b05\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x61010060020a60005560ff60020a60015561010160020a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x011105\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x61010060020a60005560ff60020a60015561010160020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x01\": \"0x8000000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x61010060020a60005560ff60020a60015561010160020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_32.json",
    "content": "{\n    \"expPowerOf2_32\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf2_32Filler.json\",\n            \"sourceHash\": \"c6609e6780ee6df802de62d1dea9be23d63c4e9dcf9cccb789aea189af24ca4b\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x602060020a600055601f60020a600155602160020a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x602060020a600055601f60020a600155602160020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100000000\",\n                    \"0x01\": \"0x80000000\",\n                    \"0x02\": \"0x0200000000\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x602060020a600055601f60020a600155602160020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_4.json",
    "content": "{\n    \"expPowerOf2_4\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf2_4Filler.json\",\n            \"sourceHash\": \"824b5c5eb508090e972079c0ec4df08cb8a47ffaa01c430e27bd87d5fe5ff231\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600460020a600055600360020a600155600560020a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600460020a600055600360020a600155600560020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x10\",\n                    \"0x01\": \"0x08\",\n                    \"0x02\": \"0x20\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600460020a600055600360020a600155600560020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_64.json",
    "content": "{\n    \"expPowerOf2_64\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf2_64Filler.json\",\n            \"sourceHash\": \"54e3387f099e871b185cfc2774993f7c7a0e84043861114322ec501197877b00\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x604060020a600055603f60020a600155604160020a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x604060020a600055603f60020a600155604160020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x010000000000000000\",\n                    \"0x01\": \"0x8000000000000000\",\n                    \"0x02\": \"0x020000000000000000\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x604060020a600055603f60020a600155604160020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expPowerOf2_8.json",
    "content": "{\n    \"expPowerOf2_8\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expPowerOf2_8Filler.json\",\n            \"sourceHash\": \"7fe7ad308e3f9e180ceaa707ef7c0704b9824db69d5583b389118c7d008259a0\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600860020a600055600760020a600155600960020a600255\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9be9\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600860020a600055600760020a600155600960020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x0100\",\n                    \"0x01\": \"0x80\",\n                    \"0x02\": \"0x0200\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600860020a600055600760020a600155600960020a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expXY.json",
    "content": "{\n    \"expXY\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expXYFiller.json\",\n            \"sourceHash\": \"aa54a8124b5ab846684618ae6ca2a2b00b6b6f89ea8a92916d4c344252bc73b9\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6000356000556020356001556001546000540a600255\",\n            \"data\": \"0x0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000100000000000f\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0xd609\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000356000556020356001556001546000540a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x02\",\n                    \"0x01\": \"0x0100000000000f\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000356000556020356001556001546000540a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/expXY_success.json",
    "content": "{\n    \"expXY_success\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/expXY_successFiller.json\",\n            \"sourceHash\": \"2591b4069ce479a824e6de352cc0feb650dd6e68e6b5d91a6ceae7ac47a182fd\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6000356000556020356001556001546000540a600255\",\n            \"data\": \"0x0000000000000000000000000000000000000000000000000000000000000002000000000000000000000000000000000000000000000000000000000000000f\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x9bad\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000356000556020356001556001546000540a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x02\",\n                    \"0x01\": \"0x0f\",\n                    \"0x02\": \"0x8000\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000356000556020356001556001546000540a600255\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/fibbonacci_unrolled.json",
    "content": "{\n    \"fibbonacci_unrolled\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/fibbonacci_unrolledFiller.json\",\n            \"sourceHash\": \"f2efe4855621477d368126f2eb61a6c0e0a859482ba9ca35ae946c183095e687\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6001600181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810160005260206000f3\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0f4192\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x0000000000000000000000000000000000000000000000000000000000001055\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001600181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810160005260206000f3\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001600181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810181810160005260206000f3\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod0.json",
    "content": "{\n    \"mod0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mod0Filler.json\",\n            \"sourceHash\": \"3e7d577aa0433a1c8bb59b19b139d2f195f93802b29f1cfa25586a5be27d5a55\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6003600206600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013872\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600206600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x02\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600206600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod1.json",
    "content": "{\n    \"mod1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mod1Filler.json\",\n            \"sourceHash\": \"400ab04d809c783c91ed79620d859ad3cde7557f4e16b629d883118692b010db\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff06600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013872\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff06600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60027fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff06600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod2.json",
    "content": "{\n    \"mod2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mod2Filler.json\",\n            \"sourceHash\": \"a0a44f5d470eb9b698cbb6e47079ddf9869089a7d53d72c2ee4742bb605c45b5\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600006600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01730a\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600006600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600006600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod3.json",
    "content": "{\n    \"mod3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mod3Filler.json\",\n            \"sourceHash\": \"7488d5657da87f809a873eac653c93daab9bc57e606cd57c2a71071ba2ea2e3d\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6000600306600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01730a\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000600306600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000600306600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mod4.json",
    "content": "{\n    \"mod4\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mod4Filler.json\",\n            \"sourceHash\": \"7d48b4616d7370ab85fa3014c889388eb07a0e6e111c8bc66ffdb5075245af30\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6003600260000306600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600260000306600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x02\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600260000306600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/modByZero.json",
    "content": "{\n    \"modByZero\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/modByZeroFiller.json\",\n            \"sourceHash\": \"1ee861fa9935cce6f76e61719dd69f769ce07555784e64132bb11c83dc4ac82d\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6001600060030603600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001600060030603600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001600060030603600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul0.json",
    "content": "{\n    \"mul0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mul0Filler.json\",\n            \"sourceHash\": \"f10c71e7abc8fcf1c8275d4fab7995b1a099623699bec6b431b9b683adb13d19\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6003600202600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013872\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600202600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x06\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600202600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul1.json",
    "content": "{\n    \"mul1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mul1Filler.json\",\n            \"sourceHash\": \"18ac7009fa72c2a295b18398053e4a38b7513dcc78cf21dda7165277645b8a31\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013872\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul2.json",
    "content": "{\n    \"mul2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mul2Filler.json\",\n            \"sourceHash\": \"15d55a50802f3114002e61e7cc3ccf67965130efc05f401666744665bb0fd7e5\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6017600002600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01730a\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6017600002600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6017600002600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul3.json",
    "content": "{\n    \"mul3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mul3Filler.json\",\n            \"sourceHash\": \"833d319fb029a718db5a29c1f80b163aea968523c768b47346331102fc245d9a\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6001601702600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013872\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001601702600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x17\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001601702600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul4.json",
    "content": "{\n    \"mul4\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mul4Filler.json\",\n            \"sourceHash\": \"f2153621a98b81499e3d6692ee5ecb70305619ea9d216e33bfd4f30386c888cc\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f800000000000000000000000000000000000000000000000000000000000000002600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013872\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f800000000000000000000000000000000000000000000000000000000000000002600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x8000000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f800000000000000000000000000000000000000000000000000000000000000002600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul5.json",
    "content": "{\n    \"mul5\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mul5Filler.json\",\n            \"sourceHash\": \"d3beb055e4e2cd779d8e0a9809c8d64f0afd3f2c5709e96781120b46c7c79f63\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7f80000000000000000000000000000000000000000000000000000000000000007f800000000000000000000000000000000000000000000000000000000000000002600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01730a\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7f80000000000000000000000000000000000000000000000000000000000000007f800000000000000000000000000000000000000000000000000000000000000002600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7f80000000000000000000000000000000000000000000000000000000000000007f800000000000000000000000000000000000000000000000000000000000000002600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul6.json",
    "content": "{\n    \"mul6\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mul6Filler.json\",\n            \"sourceHash\": \"11d29defa64cdfbb8a43175b0e372cd909c8117d038214db7e55287fe8b8e4e1\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013872\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff02600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mul7.json",
    "content": "{\n    \"mul7\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mul7Filler.json\",\n            \"sourceHash\": \"19d2f9f0f01f9720e26192d56e917a98349ebca4838b88b445f0bc192d31fb37\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7001234567890abcdef0fedcba09876543217001234567890abcdef0fedcba09876543217001234567890abcdef0fedcba0987654321020260005260206000f3\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01867e\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x47d0817e4167b1eb4f9fc722b133ef9d7d9a6fb4c2c1c442d000107a5e419561\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7001234567890abcdef0fedcba09876543217001234567890abcdef0fedcba09876543217001234567890abcdef0fedcba0987654321020260005260206000f3\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7001234567890abcdef0fedcba09876543217001234567890abcdef0fedcba09876543217001234567890abcdef0fedcba0987654321020260005260206000f3\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod0.json",
    "content": "{\n    \"mulmod0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmod0Filler.json\",\n            \"sourceHash\": \"7a85365937f4a347082dcccf17277f2fabe096434e1463d033eca053177c26de\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60026002600109600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x017304\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026002600109600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026002600109600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1.json",
    "content": "{\n    \"mulmod1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmod1Filler.json\",\n            \"sourceHash\": \"6db56ceb11f53bd80b8f3531720133c250640c35c9ba822aba0d5ea2fb9c0bc6\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60036002600003600160000309600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0172f8\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036002600003600160000309600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036002600003600160000309600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow.json",
    "content": "{\n    \"mulmod1_overflow\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmod1_overflowFiller.json\",\n            \"sourceHash\": \"4c2a84a6695eac961ca4d3d9f493bd2b1f7294a9d182b3d6473156d242ce370f\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60056002600160000309600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x2710\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x136e\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056002600160000309600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60056002600160000309600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow2.json",
    "content": "{\n    \"mulmod1_overflow2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmod1_overflow2Filler.json\",\n            \"sourceHash\": \"17f238c5929305eeddf4df7e289bd41936bceafeccda7c1f3ad63df457cef8a4\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600560027f800000000000000000000000000000000000000000000000000000000000000009600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef40c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600560027f800000000000000000000000000000000000000000000000000000000000000009600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600560027f800000000000000000000000000000000000000000000000000000000000000009600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow3.json",
    "content": "{\n    \"mulmod1_overflow3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmod1_overflow3Filler.json\",\n            \"sourceHash\": \"07059fc8bbd6426ca73d3dbf7c27ee13cdfc6b7f011a4567fdf4c24db26a9289\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600560027f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef40c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600560027f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x04\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600560027f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff09600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod1_overflow4.json",
    "content": "{\n    \"mulmod1_overflow4\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmod1_overflow4Filler.json\",\n            \"sourceHash\": \"33cef2a558f1598c9506702942344efc563fb91d7afb8888c00313911aac3681\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600560027f800000000000000000000000000000000000000000000000000000000000000109600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef40c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600560027f800000000000000000000000000000000000000000000000000000000000000109600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x03\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600560027f800000000000000000000000000000000000000000000000000000000000000109600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod2.json",
    "content": "{\n    \"mulmod2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmod2Filler.json\",\n            \"sourceHash\": \"775f75c0de180ff2d75ebace50e0de592f0c2d6fe37834d7ddee534a11a74b95\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60036001600560000309600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013866\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036001600560000309600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x02\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036001600560000309600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod2_0.json",
    "content": "{\n    \"mulmod2_0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmod2_0Filler.json\",\n            \"sourceHash\": \"e0b5b4c3d337750afce688fd1052033093d205564d51c9b7ffd5d229431b87db\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60036001600560000309600360056000030714600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0172ea\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036001600560000309600360056000030714600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036001600560000309600360056000030714600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod2_1.json",
    "content": "{\n    \"mulmod2_1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmod2_1Filler.json\",\n            \"sourceHash\": \"06ca473c76f3d122323af9b62efe6fdc9cc0908e176db279806be103db96dbf2\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60036001600560000309600360056000030614600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013852\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036001600560000309600360056000030614600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036001600560000309600360056000030614600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod3.json",
    "content": "{\n    \"mulmod3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmod3Filler.json\",\n            \"sourceHash\": \"7cc844062b25211aa679f8cd221741f0ee4128d6a52d7d19d571e5916541f0a8\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60036000036001600509600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013866\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036000036001600509600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x05\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60036000036001600509600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod3_0.json",
    "content": "{\n    \"mulmod3_0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmod3_0Filler.json\",\n            \"sourceHash\": \"b3d3a4cdf02aa5cb2b41d91cea4a94ef1c69b7b17c27d18fa16f3555dab41f24\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60026003600003600160050914600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0172f8\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026003600003600160050914600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60026003600003600160050914600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmod4.json",
    "content": "{\n    \"mulmod4\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmod4Filler.json\",\n            \"sourceHash\": \"6182e58d7e616d18db75f5a0fa4577abf1c00b1d76a62f9d86b8f2a72e133d44\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6064601b60250960005360006001f3\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x018680\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6064601b60250960005360006001f3\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6064601b60250960005360006001f3\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero.json",
    "content": "{\n    \"mulmoddivByZero\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmoddivByZeroFiller.json\",\n            \"sourceHash\": \"8a022cd49b9135b3a23925324bda3d394dd7a930e80699d054897bb40dbd7a9b\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60006001600509600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x017304\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006001600509600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006001600509600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero1.json",
    "content": "{\n    \"mulmoddivByZero1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmoddivByZero1Filler.json\",\n            \"sourceHash\": \"cbcd5284164a3ec86b605bc3a42efb84f54710e7407b4b78d79a492d09ae8a7f\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60006001600009600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x017304\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006001600009600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006001600009600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero2.json",
    "content": "{\n    \"mulmoddivByZero2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmoddivByZero2Filler.json\",\n            \"sourceHash\": \"7f8bc67d37e359d6313f6e86a6569da126d12329f8bb93945b6902a9f03f51b5\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60006000600109600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x017304\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006000600109600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006000600109600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/mulmoddivByZero3.json",
    "content": "{\n    \"mulmoddivByZero3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/mulmoddivByZero3Filler.json\",\n            \"sourceHash\": \"7688b4d65f8ec53bf9153958e4e1513cff10bf7aeef85358c5460c93650c5b7e\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60006000600009600103600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013866\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006000600009600103600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60006000600009600103600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/not1.json",
    "content": "{\n    \"not1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/not1Filler.json\",\n            \"sourceHash\": \"1f61a917c75f86536e6a6d2244ef9fff5af15ae315eeca357fc50515d7998cc9\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6201e2406000526000511960005260206000f3\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0f421f\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe1dbf\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6201e2406000526000511960005260206000f3\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6201e2406000526000511960005260206000f3\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv0.json",
    "content": "{\n    \"sdiv0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv0Filler.json\",\n            \"sourceHash\": \"2c0d876988f16b3044bf06c02656608dd4bff9d1c543b5bf4bdbc719077b6df4\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv1.json",
    "content": "{\n    \"sdiv1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv1Filler.json\",\n            \"sourceHash\": \"4cb3f0d95c2be66db60cf7feb607cbe4e8626f770d5819b1687cea47f1d7ae51\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv2.json",
    "content": "{\n    \"sdiv2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv2Filler.json\",\n            \"sourceHash\": \"ae07c37c5d2bb2af34d6fdf03af2b989192e0b33c10537da65e85c957a007312\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6004600003600260000305600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0172fe\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6004600003600260000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6004600003600260000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv3.json",
    "content": "{\n    \"sdiv3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv3Filler.json\",\n            \"sourceHash\": \"8ee2402bfe21dabf91e921a32251808f8ad9f3a9739132155e283cfe4f0a0747\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6002600003600405600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6002600003600405600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6002600003600405600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv4.json",
    "content": "{\n    \"sdiv4\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv4Filler.json\",\n            \"sourceHash\": \"271280077cf5bee771ebcccae268a86ac603c990debe40a7f3b0f32324def426\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6004600003600505600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6004600003600505600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6004600003600505600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv5.json",
    "content": "{\n    \"sdiv5\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv5Filler.json\",\n            \"sourceHash\": \"36db7de83011fb20807d30a5be5dfd0ab8b48c4f5cbb426d81e5189cc04d0694\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000305600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013866\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x8000000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv6.json",
    "content": "{\n    \"sdiv6\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv6Filler.json\",\n            \"sourceHash\": \"a045b5379d9af7d8304b71f8c67876fcbf1710892858cec78a6bffb30d4e21e1\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60007f800000000000000000000000000000000000000000000000000000000000000060000305600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x017304\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60007f800000000000000000000000000000000000000000000000000000000000000060000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60007f800000000000000000000000000000000000000000000000000000000000000060000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv7.json",
    "content": "{\n    \"sdiv7\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv7Filler.json\",\n            \"sourceHash\": \"f4fe8c32af100ae3c2c8084e2b00306df9e38cf9313873ad810ecfa0461b7481\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6019600160000305600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x017304\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6019600160000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6019600160000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv8.json",
    "content": "{\n    \"sdiv8\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv8Filler.json\",\n            \"sourceHash\": \"78a291be48ce1144fbc0a8579c1a081a60f8b60b3ac5d6fedcc6293e18815caa\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6001600003600160000305600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013866\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001600003600160000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001600003600160000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv9.json",
    "content": "{\n    \"sdiv9\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv9Filler.json\",\n            \"sourceHash\": \"7a561f7a1e2f67ee73d4a80da566df5cffb62750cf3ba78b3ed05d4060c719c0\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6001600160000305600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001600160000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001600160000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdivByZero0.json",
    "content": "{\n    \"sdivByZero0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdivByZero0Filler.json\",\n            \"sourceHash\": \"96ed2f4a00af3d35ce604e7c80653ab3bd82068c016d055b05a5ac974b617c75\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6000600003600360000305600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0172fe\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000600003600360000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000600003600360000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdivByZero1.json",
    "content": "{\n    \"sdivByZero1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdivByZero1Filler.json\",\n            \"sourceHash\": \"b1da3a2bbeee8a06d2aed771b57930c7942ada63fc583943364cdc4f5944ba5a\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x017304\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdivByZero2.json",
    "content": "{\n    \"sdivByZero2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdivByZero2Filler.json\",\n            \"sourceHash\": \"1c8def1dce7b0cbede238934556897534a1307ed30815446ef651b5f42526a01\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600160007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf923bdff6000030501600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013866\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600160007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf923bdff6000030501600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600160007ffffffffffffffffffffffffffffffffffffffffffffffffffffffffcf923bdff6000030501600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_dejavu.json",
    "content": "{\n    \"sdiv_dejavu\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv_dejavuFiller.json\",\n            \"sourceHash\": \"a18742fdc18faf55d5d8473bdd7353855f15cbf0e5777fd844b887c56089c3c2\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600560096000030580600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x989680\",\n            \"gasPrice\": \"0x01\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x984849\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600560096000030580600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600560096000030580600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_i256min.json",
    "content": "{\n    \"sdiv_i256min\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv_i256minFiller.json\",\n            \"sourceHash\": \"7b034b640478e576766cf07ec531a2e797b450e51e5e28ad8e44671b735a3c2d\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60016000037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013866\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016000037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016000037f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_i256min2.json",
    "content": "{\n    \"sdiv_i256min2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv_i256min2Filler.json\",\n            \"sourceHash\": \"aea84dd4611287455f1e3edacab6c6f97dcbc2514fe8c5c03634934d7f675822\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000305600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013866\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x8000000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000305600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sdiv_i256min3.json",
    "content": "{\n    \"sdiv_i256min3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sdiv_i256min3Filler.json\",\n            \"sourceHash\": \"e3bddf0c7cb0c1ac947275072cc39085532b34dbe34213f5a69a6a45c4f89f3e\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x01\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0f2ea4\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6000037fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff05600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextendInvalidByteNumber.json",
    "content": "{\n    \"signextendInvalidByteNumber\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/signextendInvalidByteNumberFiller.json\",\n            \"sourceHash\": \"ae2ebe3461944c83320578ae60e2d5b58ac8c905a085f8208174c2c4a43582f1\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x62126af460500b600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef412\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x62126af460500b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x126af4\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x62126af460500b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_00.json",
    "content": "{\n    \"signextend_00\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/signextend_00Filler.json\",\n            \"sourceHash\": \"14c63e4a6badf000b6f489b33cbeebd1337d18f7118ae64c091cba0f2c71865c\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600060000b600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0f2eaa\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600060000b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600060000b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_0_BigByte.json",
    "content": "{\n    \"signextend_0_BigByte\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/signextend_0_BigByteFiller.json\",\n            \"sourceHash\": \"51826d588208ff7923d16a2d7237a034e5549d9b576c4f676fe1a70c02cf8fa1\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000b600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef412\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_AlmostBiggestByte.json",
    "content": "{\n    \"signextend_AlmostBiggestByte\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/signextend_AlmostBiggestByteFiller.json\",\n            \"sourceHash\": \"6b18abf5b443f69a5db8c96342dd485f1a667a69b8dbabf0a562c25dad996b76\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0b600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef412\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe0b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BigByteBigByte.json",
    "content": "{\n    \"signextend_BigByteBigByte\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/signextend_BigByteBigByteFiller.json\",\n            \"sourceHash\": \"8e48087be94e847f3d64c7ac1b8ac041d85d63bae9aa6144ef668d5749f50d1a\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0b600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef412\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BigBytePlus1_2.json",
    "content": "{\n    \"signextend_BigBytePlus1_2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/signextend_BigBytePlus1_2Filler.json\",\n            \"sourceHash\": \"0c4455484bad24f9a15f343c3082f14a6b13c61c67ffc2b79b00ba7edccfbf55\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60ff68f000000000000000010b600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef412\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60ff68f000000000000000010b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60ff68f000000000000000010b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BigByte_0.json",
    "content": "{\n    \"signextend_BigByte_0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/signextend_BigByte_0Filler.json\",\n            \"sourceHash\": \"3f541ab10aecc9a1f44cde8811de0aaae5a39b202a82ee3e11488a4320eb4af5\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0b600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0f2eaa\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BitIsNotSet.json",
    "content": "{\n    \"signextend_BitIsNotSet\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/signextend_BitIsNotSetFiller.json\",\n            \"sourceHash\": \"c9d69758b60dd1e44dd8eeabf7df4c0cc7a7276decdd717842036afcf5116b97\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x62122f6a60000b600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef412\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x62122f6a60000b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x6a\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x62122f6a60000b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BitIsNotSetInHigherByte.json",
    "content": "{\n    \"signextend_BitIsNotSetInHigherByte\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/signextend_BitIsNotSetInHigherByteFiller.json\",\n            \"sourceHash\": \"82d0345b35ff950ddc99d62e74ec1dd1ad97cfad97fea03ef678758d68af7f9f\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x62126af460010b600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef412\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x62126af460010b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x6af4\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x62126af460010b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_BitIsSetInHigherByte.json",
    "content": "{\n    \"signextend_BitIsSetInHigherByte\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/signextend_BitIsSetInHigherByteFiller.json\",\n            \"sourceHash\": \"b5dc9bb4906717453c5d4140f135bfe98b0fe8695e970ef24a29ab71df0bda1c\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6212faf460010b600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef412\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6212faf460010b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffaf4\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6212faf460010b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_Overflow_dj42.json",
    "content": "{\n    \"signextend_Overflow_dj42\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/signextend_Overflow_dj42Filler.json\",\n            \"sourceHash\": \"f7bdd84657605dd676ce51acf2d3eefc1fd0ccbec5221713a047cb40d1a65b35\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6005565b005b61800080680100000000000000010b6180011160035763badf000d601155\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0f4212\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6005565b005b61800080680100000000000000010b6180011160035763badf000d601155\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6005565b005b61800080680100000000000000010b6180011160035763badf000d601155\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_bigBytePlus1.json",
    "content": "{\n    \"signextend_bigBytePlus1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/signextend_bigBytePlus1Filler.json\",\n            \"sourceHash\": \"d0db106dfe0e5b3805ac0dd9944caba9033cc9d42300277db9178888de3da5ab\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x66f000000000000161ffff0b600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef412\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x66f000000000000161ffff0b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xf0000000000001\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x66f000000000000161ffff0b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/signextend_bitIsSet.json",
    "content": "{\n    \"signextend_bitIsSet\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/signextend_bitIsSetFiller.json\",\n            \"sourceHash\": \"14f83c5f56b0fcc7c2b5483ab05230a989cd554a607dd7b84cb099a89cc897af\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x989680\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x62122ff460000b600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0f4240\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0ef412\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x62122ff460000b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff4\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x62122ff460000b600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod0.json",
    "content": "{\n    \"smod0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/smod0Filler.json\",\n            \"sourceHash\": \"5090832871af25c7ceaf944f409eb0e94d1800eebd6b87e0cac8315067184fcb\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6003600003600560000307600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013866\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600003600560000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600003600560000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod1.json",
    "content": "{\n    \"smod1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/smod1Filler.json\",\n            \"sourceHash\": \"a57ed4a85de8b2939c039da5fee98f4fc354fa223ae092f3e495105ddce5c56b\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6003600003600507600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600003600507600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x02\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600003600507600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod2.json",
    "content": "{\n    \"smod2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/smod2Filler.json\",\n            \"sourceHash\": \"d5a496413d292ae0096943667462f92b52d3010e36ea0c846d723390e83658d3\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6003600560000307600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600560000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600560000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod3.json",
    "content": "{\n    \"smod3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/smod3Filler.json\",\n            \"sourceHash\": \"e4d49fb43415af8b0bf060644c44d62006e9b6ed9b6e8fd0c7b45f037f013796\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260000307600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x017304\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600260000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod4.json",
    "content": "{\n    \"smod4\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/smod4Filler.json\",\n            \"sourceHash\": \"7908421af47faaa7b9522476f8d51d570900688619861b975ab02f6cefc0d1e3\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6000600260000307600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x017304\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000600260000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6000600260000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod5.json",
    "content": "{\n    \"smod5\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/smod5Filler.json\",\n            \"sourceHash\": \"07eb8321e49b92d57ae65e0a70e469a242c14ecdcff8e825edf6708a46377cd2\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x2710\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x1374\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod6.json",
    "content": "{\n    \"smod6\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/smod6Filler.json\",\n            \"sourceHash\": \"fe56c5ac0debfe243c96c9d5aa90ac5c720a92ac095dbd6223568d209db8df07\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x01386c\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod7.json",
    "content": "{\n    \"smod7\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/smod7Filler.json\",\n            \"sourceHash\": \"06d6c999f902ae33810fa7c57315c91e2224dbf6bccb27fc3ab67da27ab1d259\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x2710\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x1374\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7f7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod8_byZero.json",
    "content": "{\n    \"smod8_byZero\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/smod8_byZeroFiller.json\",\n            \"sourceHash\": \"b2d99792bf12eee7d74ed10f87a20da79d761bebcdbfd850dac15bfc7af03548\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600d600060c86000030703600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013866\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600d600060c86000030703600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff3\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600d600060c86000030703600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod_i256min1.json",
    "content": "{\n    \"smod_i256min1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/smod_i256min1Filler.json\",\n            \"sourceHash\": \"49dc44af825b3bf752ffe7c8794b3bc7bcebc76e23d7a5346f499da42e4f8223\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000307600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0172fe\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60016000037f800000000000000000000000000000000000000000000000000000000000000060000307600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/smod_i256min2.json",
    "content": "{\n    \"smod_i256min2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/smod_i256min2Filler.json\",\n            \"sourceHash\": \"cc7209a5759f3315b98364bcb6ef30bebb16b685ed36afadcbab35a1200acdb2\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x600160016000037f80000000000000000000000000000000000000000000000000000000000000006000030703600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013860\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600160016000037f80000000000000000000000000000000000000000000000000000000000000006000030703600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x600160016000037f80000000000000000000000000000000000000000000000000000000000000006000030703600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/stop.json",
    "content": "{\n    \"stop\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/stopFiller.json\",\n            \"sourceHash\": \"bc6050bff0814e1c855ff9aef2c44c284d23f536bf88ecbc3186f9aa66c946bb\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x00\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x0186a0\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x00\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x00\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub0.json",
    "content": "{\n    \"sub0\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sub0Filler.json\",\n            \"sourceHash\": \"80d4bc7245d1e0ae45c6556aaa6efcd2fc50635477aeb551119ddcc76c895177\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6001601703600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013874\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001601703600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x16\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6001601703600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub1.json",
    "content": "{\n    \"sub1\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sub1Filler.json\",\n            \"sourceHash\": \"63ac31d5c57f74ac93f4586ea3043afcec3ebacbe9cae42f38bc2eadb43a42ad\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6003600203600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013874\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600203600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6003600203600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub2.json",
    "content": "{\n    \"sub2\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sub2Filler.json\",\n            \"sourceHash\": \"9b0965f57e67ef44cdb6e1429c539328c9ad65ce3327e3f8734a885c0bfd7b59\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x6017600003600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013874\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6017600003600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe9\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x6017600003600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub3.json",
    "content": "{\n    \"sub3\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sub3Filler.json\",\n            \"sourceHash\": \"8fb91e839aacf910ef69140a7b0580422298414d336741213d858b8fc351c080\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600003600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013874\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600003600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0x01\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600003600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmArithmeticTest/sub4.json",
    "content": "{\n    \"sub4\": {\n        \"_info\": {\n            \"comment\": \"\",\n            \"filledwith\": \"testeth 1.4.0.dev0-56+commit.71414ae3\",\n            \"lllcversion\": \"Version: 0.4.25-develop.2018.5.30+commit.0a1a8bfb.Linux.g++\",\n            \"source\": \"src/VMTestsFiller/vmArithmeticTest/sub4Filler.json\",\n            \"sourceHash\": \"417b791bbf2fa854dee2bc03e91e41257df0dd49affcf219824265c2d100d4c9\"\n        },\n        \"callcreates\": [],\n        \"env\": {\n            \"currentCoinbase\": \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\": \"0x0100\",\n            \"currentGasLimit\": \"0x0f4240\",\n            \"currentNumber\": \"0x00\",\n            \"currentTimestamp\": \"0x01\"\n        },\n        \"exec\": {\n            \"address\": \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"code\": \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03600055\",\n            \"data\": \"0x\",\n            \"gas\": \"0x0186a0\",\n            \"gasPrice\": \"0x5af3107a4000\",\n            \"origin\": \"0xcd1722f2947def4cf144679da39c4c32bdc35681\",\n            \"value\": \"0x0de0b6b3a7640000\"\n        },\n        \"gas\": \"0x013874\",\n        \"logs\": \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\": \"0x\",\n        \"post\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {\n                    \"0x00\": \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\": {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\": {\n                \"balance\": \"0x0de0b6b3a7640000\",\n                \"code\": \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff03600055\",\n                \"nonce\": \"0x00\",\n                \"storage\": {}\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and0.json",
    "content": "{\n    \"and0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/and0Filler.json\",\n            \"sourceHash\" : \"751e5c75a0cb1826f0a0d355bdf3f27982c52bd4b7b28cfbac953528fe2c6b8a\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6002600216600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6002600216600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6002600216600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and1.json",
    "content": "{\n    \"and1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/and1Filler.json\",\n            \"sourceHash\" : \"cc1f598dde43f243ed3b79d6876def08bd96e0f532b29dceb744f696867d9148\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001600216600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01730c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6001600216600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6001600216600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and2.json",
    "content": "{\n    \"and2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/and2Filler.json\",\n            \"sourceHash\" : \"c406f9725926f6cc70844468f19b89588e6762067a031cc07b99348ac267e742\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001600316600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6001600316600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6001600316600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and3.json",
    "content": "{\n    \"and3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/and3Filler.json\",\n            \"sourceHash\" : \"2e7027e2c4da993dee53d9c1549115c977112ba350b4371946ab2d06ad450e63\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff16600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and4.json",
    "content": "{\n    \"and4\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/and4Filler.json\",\n            \"sourceHash\" : \"aae5ac146ebfbba6d13ad1b8194d91eb8dea6d4769c45a38576a443ad94ab2cd\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee16600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee16600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee16600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/and5.json",
    "content": "{\n    \"and5\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/and5Filler.json\",\n            \"sourceHash\" : \"76a55675eeeb3cbe72d56adb48b158ceb4ce445420788df61486a7c63e09cd6b\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee16600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee16600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xeeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee16600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte0.json",
    "content": "{\n    \"byte0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/byte0Filler.json\",\n            \"sourceHash\" : \"6764ebba17fa4d9be8f1abfb1d2fd0fe50528a43081a79a1f4fdeb8168fdb465\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6780402010080402016000601f031a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016000601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016000601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte1.json",
    "content": "{\n    \"byte1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/byte1Filler.json\",\n            \"sourceHash\" : \"622c7aedaefd48e66eff987415f47ab610b595b1f85c5dfafb09616e0bbdfd75\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6780402010080402016001601f031a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016001601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016001601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte10.json",
    "content": "{\n    \"byte10\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/byte10Filler.json\",\n            \"sourceHash\" : \"1c00cff0fd72755c87f59585d40a1edf5d63b1386f3ddbc23fd95b03e8f9c9f7\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6780402010080402017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01730c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff1a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte11.json",
    "content": "{\n    \"byte11\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/byte11Filler.json\",\n            \"sourceHash\" : \"e649fc5b9e0fbbc092ea449680e3055126543b929ba7147b9c967ee35e695a2e\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x67804020100804020160001a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01730c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x67804020100804020160001a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x67804020100804020160001a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte2.json",
    "content": "{\n    \"byte2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/byte2Filler.json\",\n            \"sourceHash\" : \"0367f73e6a3a5257c7c35f7ebdddb42888be0f0d7534b2687e20c286df02c90e\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6780402010080402016002601f031a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016002601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016002601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte3.json",
    "content": "{\n    \"byte3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/byte3Filler.json\",\n            \"sourceHash\" : \"5b001879a3cdd7c7e4a1cc6ef0e0101db4931274676fa2083c52b7bbb95403de\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6780402010080402016003601f031a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016003601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x08\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016003601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte4.json",
    "content": "{\n    \"byte4\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/byte4Filler.json\",\n            \"sourceHash\" : \"d79870f477b475d6f878076b20631d89ce8831da937252cf6657d935f0ad3482\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6780402010080402016004601f031a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016004601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x10\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016004601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte5.json",
    "content": "{\n    \"byte5\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/byte5Filler.json\",\n            \"sourceHash\" : \"9242b77cc4a07275c886c83d252350713ac84a914cc7b5069f7fdd21e887b6c0\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6780402010080402016005601f031a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016005601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x20\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016005601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte6.json",
    "content": "{\n    \"byte6\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/byte6Filler.json\",\n            \"sourceHash\" : \"702f95bfde16820fa666d510e6c48af4b06c824d6464d5ba344fe76696b8e526\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6780402010080402016006601f031a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016006601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x40\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016006601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte7.json",
    "content": "{\n    \"byte7\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/byte7Filler.json\",\n            \"sourceHash\" : \"5f8261cfc1a852245ad1606af64a6e1cca7ad5d0082eef8d32c68ae6d92eb2ba\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6780402010080402016007601f031a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016007601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x80\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016007601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte8.json",
    "content": "{\n    \"byte8\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/byte8Filler.json\",\n            \"sourceHash\" : \"505fcf8b5851e3c9689ab5e1ef238abf45379045f0c21ac44ee6e1a8e51c9f9a\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x678040201008040201601f601f031a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x017306\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x678040201008040201601f601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x678040201008040201601f601f031a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/byte9.json",
    "content": "{\n    \"byte9\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/byte9Filler.json\",\n            \"sourceHash\" : \"b4c4eb8a9dd91e27de3645370f434e4f617deb1f5c425286374537552e3ab7f3\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6780402010080402016020601f051a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x017304\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016020601f051a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6780402010080402016020601f051a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/eq0.json",
    "content": "{\n    \"eq0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/eq0Filler.json\",\n            \"sourceHash\" : \"19b881bd7fb221954f30f51297eb529bb212bc9c8cf0d69c7f98f9f51985817e\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6003600003600560000314600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x017300\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6003600003600560000314600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6003600003600560000314600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/eq1.json",
    "content": "{\n    \"eq1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/eq1Filler.json\",\n            \"sourceHash\" : \"fc840a1a4938e2e95f1554bf8457ce0b0309bab97b81a41b4c8a8c6c92e22814\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6000600014600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6000600014600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6000600014600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/eq2.json",
    "content": "{\n    \"eq2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/eq2Filler.json\",\n            \"sourceHash\" : \"8240a3a93dc6c7720f3eb4b9d4657c8f13275f68c13ed4150d9725dada431480\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff14600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt0.json",
    "content": "{\n    \"gt0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/gt0Filler.json\",\n            \"sourceHash\" : \"dd0a3d85d6ff2212eeb3200d247a57bfb1cc778850904069b4473d005f044a80\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6000600260000311600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6000600260000311600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6000600260000311600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt1.json",
    "content": "{\n    \"gt1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/gt1Filler.json\",\n            \"sourceHash\" : \"2d0cc48b6bacc0f8676ad35ef31ccec94c6d9e6485715c894bcc09f145c513cc\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6002600003600011600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x017306\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6002600003600011600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6002600003600011600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt2.json",
    "content": "{\n    \"gt2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/gt2Filler.json\",\n            \"sourceHash\" : \"5353ce8dad79cfc681d5df6bc90931ea174bf2c0692aa6bd4ac3dfc4b15105cf\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff11600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/gt3.json",
    "content": "{\n    \"gt3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/gt3Filler.json\",\n            \"sourceHash\" : \"a2135f3cc275562615d53ef7e0b42284789cf52871f599c9ba581fcf90157914\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600011600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01730c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600011600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600011600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/iszeo2.json",
    "content": "{\n    \"iszeo2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/iszeo2Filler.json\",\n            \"sourceHash\" : \"abf5b709846b428ec72f7011c84753cef326b6a91ff947a5b803bf2908c335e8\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600260000315600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x017309\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x600260000315600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x600260000315600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/iszero0.json",
    "content": "{\n    \"iszero0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/iszero0Filler.json\",\n            \"sourceHash\" : \"0535ce2a70ccc8c78f99dd11be51043663ad7bf946daa2e24bd5c76ee1df769e\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff15600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01730f\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff15600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff15600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/iszero1.json",
    "content": "{\n    \"iszero1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/iszero1Filler.json\",\n            \"sourceHash\" : \"3c42208e8bba63c702a33e754f3401999219454a52e165d33e56ccb406b0b2dc\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600015600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013877\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x600015600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x600015600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt0.json",
    "content": "{\n    \"lt0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/lt0Filler.json\",\n            \"sourceHash\" : \"8c4640067abed7206324348cb90d1d499c1e6f8f7ec5b3bdd6ea8c62ce7fc8b2\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6000600260000310600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x8ac7230489e80000\"\n        },\n        \"gas\" : \"0x017306\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6000600260000310600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6000600260000310600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt1.json",
    "content": "{\n    \"lt1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/lt1Filler.json\",\n            \"sourceHash\" : \"3ddb48b8cc6dc67dc7c7f4f804db8ad2739565020f06fbd3c9636a454049ae86\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6002600003600010600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x8ac7230489e80000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x8ac7230489e80000\",\n                \"code\" : \"0x6002600003600010600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x8ac7230489e80000\",\n                \"code\" : \"0x6002600003600010600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt2.json",
    "content": "{\n    \"lt2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/lt2Filler.json\",\n            \"sourceHash\" : \"1fe431426fd45116ab7fd624909b52c1dd905887d087b5cdcdbef664c1d1bfa2\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x8ac7230489e80000\"\n        },\n        \"gas\" : \"0x01730c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x8ac7230489e80000\",\n                \"code\" : \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x8ac7230489e80000\",\n                \"code\" : \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff10600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/lt3.json",
    "content": "{\n    \"lt3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/lt3Filler.json\",\n            \"sourceHash\" : \"79ab580a8f6e442539c2aeaa1fdfca3d0d12d3e85d8bc124db331f19de4bd9fa\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600010600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600010600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600010600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not0.json",
    "content": "{\n    \"not0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/not0Filler.json\",\n            \"sourceHash\" : \"80140479a2b011050f7ed80dfba95f9c00440635a371693d6f8a7b1e3e21ef44\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600019600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013877\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x600019600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x600019600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not1.json",
    "content": "{\n    \"not1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/not1Filler.json\",\n            \"sourceHash\" : \"61f2abd58fadf0341f0d0743279d10fb152cf42b78ed8ce2a6c8a749c9274332\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600219600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013877\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x600219600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffd\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x600219600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not2.json",
    "content": "{\n    \"not2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/not2Filler.json\",\n            \"sourceHash\" : \"ef8e55a7bab388cf9472c4d331aeb4ca059675b73fa647dac1ca0b2524cf91b1\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01730f\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff19600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not3.json",
    "content": "{\n    \"not3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/not3Filler.json\",\n            \"sourceHash\" : \"bd3ee9eaf6195c4cdcd8f9620da701fd0cfff77824ef02e6f65743d7a0433d21\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600260000319600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013871\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x600260000319600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x600260000319600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not4.json",
    "content": "{\n    \"not4\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/not4Filler.json\",\n            \"sourceHash\" : \"f4a5202e1416c1b53b6b4150f295f9a008c8904171c04d0eacb419364cb64de6\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000319600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013871\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000319600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffe\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff60000319600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/not5.json",
    "content": "{\n    \"not5\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/not5Filler.json\",\n            \"sourceHash\" : \"e8c79e98f719d804dc6c480f771278ade666e1a97af54043a6f7b9260d0a17d9\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600060000319600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013871\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x600060000319600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x600060000319600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or0.json",
    "content": "{\n    \"or0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/or0Filler.json\",\n            \"sourceHash\" : \"60d30a058afaca0a4b0433cb750a882fcb964babe2675d590bf875003bbcd663\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6002600217600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6002600217600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6002600217600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or1.json",
    "content": "{\n    \"or1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/or1Filler.json\",\n            \"sourceHash\" : \"2b15c764efc21f1210ab5ff1ebbc41c279eb184ea5970f83fa814aec8b1b0292\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001600217600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6001600217600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x03\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6001600217600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or2.json",
    "content": "{\n    \"or2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/or2Filler.json\",\n            \"sourceHash\" : \"ab771b280d2f0bfc691b93a7767de24ec2f71a43b8247979b22dfa49a521af15\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001600317600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6001600317600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x03\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6001600317600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or3.json",
    "content": "{\n    \"or3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/or3Filler.json\",\n            \"sourceHash\" : \"4f201fc156a840f69212d6f16e5c3648386df255dd52461555458d04b6413ce1\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff17600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or4.json",
    "content": "{\n    \"or4\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/or4Filler.json\",\n            \"sourceHash\" : \"0e0592c288d6510637595f966ec63289bf101dd48839b10f6fdce743cf3012ad\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee17600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee17600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee17600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/or5.json",
    "content": "{\n    \"or5\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/or5Filler.json\",\n            \"sourceHash\" : \"0f852bc89f9f883b43f277652d411439032eb3e1c38c316e2ef0a0c20bf6f7ad\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee17600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee17600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee17600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt0.json",
    "content": "{\n    \"sgt0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/sgt0Filler.json\",\n            \"sourceHash\" : \"74429fc4319b59fa4f7df388ca07a947def51d79695c7bac6c38d2c4bbbcbdfa\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6000600260000313600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x017306\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6000600260000313600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6000600260000313600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt1.json",
    "content": "{\n    \"sgt1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/sgt1Filler.json\",\n            \"sourceHash\" : \"3e4a2036e947ad6771ac9194d6f1f58872d1b2865e23b926d63b1294d031e8bd\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6002600003600013600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6002600003600013600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6002600003600013600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt2.json",
    "content": "{\n    \"sgt2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/sgt2Filler.json\",\n            \"sourceHash\" : \"fc4192183cf3a5794822bdab685ac3bc20ac5d9b49cd03b9f98be2260e8e18bb\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff13600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01730c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff13600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff13600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt3.json",
    "content": "{\n    \"sgt3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/sgt3Filler.json\",\n            \"sourceHash\" : \"e918a6569299b5e0917ec90d3c2bb2828ff490400e2ffbc29e03147743c2e17f\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600013600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600013600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600013600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/sgt4.json",
    "content": "{\n    \"sgt4\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/sgt4Filler.json\",\n            \"sourceHash\" : \"623b92335dbc7baa5925ad95d7ff90160ab49dee7c7a76de9e1795c651987514\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6003600003600560000313600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x017300\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6003600003600560000313600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6003600003600560000313600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt0.json",
    "content": "{\n    \"slt0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/slt0Filler.json\",\n            \"sourceHash\" : \"f510a0b92d9f98666b853cb682b86d4016408a4305ec11ee83627a432b9b75cf\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6000600260000312600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6000600260000312600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6000600260000312600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt1.json",
    "content": "{\n    \"slt1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/slt1Filler.json\",\n            \"sourceHash\" : \"f428e4e49d4c5f0820c9952b8583209cd93677f6328bd8bff26d55f0f6a1c792\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6002600003600012600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x017306\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6002600003600012600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6002600003600012600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt2.json",
    "content": "{\n    \"slt2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/slt2Filler.json\",\n            \"sourceHash\" : \"094c13e4222baaa5a888b8246ca586ad40d2bfe12abb3566b92d82f018722a8f\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff12600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff12600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff12600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt3.json",
    "content": "{\n    \"slt3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/slt3Filler.json\",\n            \"sourceHash\" : \"70c376b7f2b96131b36bc2b6cae47b71ed9da0586ff154db88eecccc08528d2e\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600012600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01730c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600012600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600012600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/slt4.json",
    "content": "{\n    \"slt4\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/slt4Filler.json\",\n            \"sourceHash\" : \"d3a476ad08a0873b4910f4aee5dd8857b4aa4e708e1a13e66836d6483a109702\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6003600003600560000312600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013868\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6003600003600560000312600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6003600003600560000312600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor0.json",
    "content": "{\n    \"xor0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/xor0Filler.json\",\n            \"sourceHash\" : \"50cd2de5dcf00384df0dbaaeec9be0f9029b9134bf7ea41ccc7acc94afef3974\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6002600218600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01730c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6002600218600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6002600218600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor1.json",
    "content": "{\n    \"xor1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/xor1Filler.json\",\n            \"sourceHash\" : \"f046ebf7e2d78d47eb651513e53bfc77b24044f1c5f6d985a0001123901b2243\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001600218600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6001600218600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x03\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6001600218600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor2.json",
    "content": "{\n    \"xor2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/xor2Filler.json\",\n            \"sourceHash\" : \"736386ced72b004a11c09de088a600a13ded13af4403b3142f7b62587f0ff99d\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001600318600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6001600318600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x6001600318600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor3.json",
    "content": "{\n    \"xor3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/xor3Filler.json\",\n            \"sourceHash\" : \"ee07af05a441f80e1c4256a31057ba009a4dcc5640f4c920c7ca527554c918de\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xfedcba9876543210fedcba9876543210fedcba9876543210fedcba9876543210\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7f0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff18600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor4.json",
    "content": "{\n    \"xor4\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/xor4Filler.json\",\n            \"sourceHash\" : \"a1b253998968b3a29e9deb1019e0b1acd7e164c1a1dd9d930f300ecdd4c032a1\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee18600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee18600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x1111111111111111111111111111111111111111111111111111111111111111\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee18600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmBitwiseLogicOperation/xor5.json",
    "content": "{\n    \"xor5\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmBitwiseLogicOperation/xor5Filler.json\",\n            \"sourceHash\" : \"6305730bcb3953b7c28476aeca3e1e6a95c93e56b0094e4145ea6816b9edea1a\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee18600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee18600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x1111111111111111111111111111101111111111111111111111111111111111\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xd3c21bcecceda1000000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7feeeeeeeeeeeeeeeeeeeeeeeeeeeeefeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee18600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/address0.json",
    "content": "{\n    \"address0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/address0Filler.json\",\n            \"sourceHash\" : \"37a0fc3337fde7233f427195a290be689e01aa752a8394b0ae56306fd97d3624\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x30600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699db\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x30600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x30600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/address1.json",
    "content": "{\n    \"address1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/address1Filler.json\",\n            \"sourceHash\" : \"2f317db88316ea284d36c3031d82818be81d6cf63d1bba9437dd22705282fe27\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"caller\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"code\" : \"0x30600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699db\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x30600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x30600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy0.json",
    "content": "{\n    \"calldatacopy0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy0Filler.json\",\n            \"sourceHash\" : \"761871556943693860bdddd26da931c7c3f5a6c8ab95f680aa9d5854135dacd0\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60026001600037600051600055\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699c5\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60026001600037600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x3456000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60026001600037600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy0_return.json",
    "content": "{\n    \"calldatacopy0_return\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy0_returnFiller.json\",\n            \"sourceHash\" : \"4f9c0f3aff470ea35ad2fd5a81a593742f875409dbc51200199dd0f2baab261d\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60026001600037600051600055596000f3\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699c0\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x3456000000000000000000000000000000000000000000000000000000000000\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x60026001600037600051600055596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x3456000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x60026001600037600051600055596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy1.json",
    "content": "{\n    \"calldatacopy1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy1Filler.json\",\n            \"sourceHash\" : \"65659a844a3d4458eb82347f1ef56c3657abdb06f7166b033329db7c2c8cdb78\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016001600037600051600055\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699c5\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016001600037600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x3400000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016001600037600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy1_return.json",
    "content": "{\n    \"calldatacopy1_return\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy1_returnFiller.json\",\n            \"sourceHash\" : \"671deccb615f7d6e58bc195d11ad4fde489a6a07581f9e32e029e6cf42dba991\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016001600037600051600055596000f3\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699c0\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x3400000000000000000000000000000000000000000000000000000000000000\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x60016001600037600051600055596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x3400000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x60016001600037600051600055596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy2.json",
    "content": "{\n    \"calldatacopy2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy2Filler.json\",\n            \"sourceHash\" : \"3acb5771658d79d6ff4e17b69cfeea9bcc5e51ab11afb0c511b4d7be801e71d4\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60006001600037600051600055\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x174876d460\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60006001600037600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60006001600037600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy2_return.json",
    "content": "{\n    \"calldatacopy2_return\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy2_returnFiller.json\",\n            \"sourceHash\" : \"4268c07197871b5b5c14bcda3f746a2bb787c8dba2d987bf3c1fb0bc1fc4db4c\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60006001600037600051600055596000f3\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x174876d45b\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x60006001600037600051600055596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x60006001600037600051600055596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopyUnderFlowerror.json",
    "content": "{\n    \"calldatacopyUnderFlowerror\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopyUnderFlowFiller.json\",\n            \"sourceHash\" : \"55ea90b15f19bf8f4838c35234d202eab4473284e5895af23b885368f34200a1\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001600237\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001600237\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopyZeroMemExpansion.json",
    "content": "{\n    \"calldatacopyZeroMemExpansion\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopyZeroMemExpansionFiller.json\",\n            \"sourceHash\" : \"99d8509de4a25c88abd0647c68310552c67f395a92f4e6a8e67cc3707af076c5\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60006000600037600051600055\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x174876d460\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60006000600037600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60006000600037600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopyZeroMemExpansion_return.json",
    "content": "{\n    \"calldatacopyZeroMemExpansion_return\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopyZeroMemExpansion_returnFiller.json\",\n            \"sourceHash\" : \"b00f6239c55457bfec8870ad2ffaa42b2b53228c4f610eba391b8ce561dc9d4f\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60006000600037600051600055596000f3\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x174876d45b\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x60006000600037600051600055596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x60006000600037600051600055596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh.json",
    "content": "{\n    \"calldatacopy_DataIndexTooHigh\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy_DataIndexTooHighFiller.json\",\n            \"sourceHash\" : \"72c5c7337895354e6d12b41ef4f144db87f945068a1a20134168f7e63f61a0d7\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x174876d433\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh2.json",
    "content": "{\n    \"calldatacopy_DataIndexTooHigh2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh2Filler.json\",\n            \"sourceHash\" : \"bf92d18c0d12f1e9d48a5cf116ece7559ad36d67383a8b25792b4b6003180304\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x174876d45d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh2_return.json",
    "content": "{\n    \"calldatacopy_DataIndexTooHigh2_return\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh2_returnFiller.json\",\n            \"sourceHash\" : \"990882750573f3f5938a3f2cd66b0f41c842538f70d70045e179d246b8a076e0\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055596000f3\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x174876d458\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x60097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x60097ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh_return.json",
    "content": "{\n    \"calldatacopy_DataIndexTooHigh_return\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy_DataIndexTooHigh_returnFiller.json\",\n            \"sourceHash\" : \"640a52c64dfe9f43c6c5bb1aa4fc2a95839f352533e95fabe5493ff142b210c7\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055596000f3\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x174876d42e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x60ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x60ff7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600037600051600055596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatacopy_sec.json",
    "content": "{\n    \"calldatacopy_sec\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatacopy_secFiller.json\",\n            \"sourceHash\" : \"9c7568cda862ed10722f83b99c948af03cb38ae4042d45fa55aae12cca979f88\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6005565b005b6042601f536101036000601f3760005180606014600357640badc0ffee60ff55\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x1748769964\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x6005565b005b6042601f536101036000601f3760005180606014600357640badc0ffee60ff55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0xff\" : \"0x0badc0ffee\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x6005565b005b6042601f536101036000601f3760005180606014600357640badc0ffee60ff55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload0.json",
    "content": "{\n    \"calldataload0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldataload0Filler.json\",\n            \"sourceHash\" : \"3bfae7447ad076b4da51568b72acb70e9bd946fbf68a79705015c4600d9d99de\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600035600055\",\n            \"data\" : \"0x2560\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699d7\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600035600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x2560000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600035600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload1.json",
    "content": "{\n    \"calldataload1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldataload1Filler.json\",\n            \"sourceHash\" : \"3cda66b7abff563a2178c736c6ff9235784bbc4083083c1880268c1f32281606\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600135600055\",\n            \"data\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff23\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699d7\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600135600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff23\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600135600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload2.json",
    "content": "{\n    \"calldataload2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldataload2Filler.json\",\n            \"sourceHash\" : \"0274681bf0559ab144aa2273cd566d1b32bcc58843ca142e8c6e6fd567196882\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600535600055\",\n            \"data\" : \"0x123456789abcdef00000000000000000000000000000000000000000000000000024\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699d7\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600535600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xbcdef00000000000000000000000000000000000000000000000000024000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600535600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataloadSizeTooHigh.json",
    "content": "{\n    \"calldataloadSizeTooHigh\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldataloadSizeTooHighFiller.json\",\n            \"sourceHash\" : \"0a556d7e2b38d3ac82c12938237c81673868011512d36133443339bc000d56c5\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa35600055\",\n            \"data\" : \"0x123456789abcdef00000000000000000000000000000000000000000000000000024\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x174876d46f\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa35600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa35600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataloadSizeTooHighPartial.json",
    "content": "{\n    \"calldataloadSizeTooHighPartial\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldataloadSizeTooHighPartialFiller.json\",\n            \"sourceHash\" : \"8090196f324f686f77a7d362987f8697cfc7b6b3bd86d702a212d790ec12ef0f\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600a35600055\",\n            \"data\" : \"0x123456789abcdef00000000000000000000000000000000000000000000024\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699d7\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a35600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x240000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a35600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldataload_BigOffset.json",
    "content": "{\n    \"calldataload_BigOffset\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldataload_BigOffsetFiller.json\",\n            \"sourceHash\" : \"e118bc308ccdd052ea601f5cfa51d32fc907952cb1cd16e673bff87f8c9fe203\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7f420000000000000000000000000000000000000000000000000000000000000035600055\",\n            \"data\" : \"0x4200000000000000000000000000000000000000000000000000000000000000\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x174876d46f\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f420000000000000000000000000000000000000000000000000000000000000035600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f420000000000000000000000000000000000000000000000000000000000000035600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatasize0.json",
    "content": "{\n    \"calldatasize0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatasize0Filler.json\",\n            \"sourceHash\" : \"e638e627686d20765a98fa8cfab03c642bdf33216a5869e742994072c8fd051e\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x36600055\",\n            \"data\" : \"0x2560\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699db\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x36600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x36600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatasize1.json",
    "content": "{\n    \"calldatasize1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatasize1Filler.json\",\n            \"sourceHash\" : \"7db2dda9d80c7eac5ae82d3e2573e7f9b47ad6cb0c5545824e2500e85ec1cc3c\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x36600055\",\n            \"data\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff23\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699db\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x36600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x21\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x36600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/calldatasize2.json",
    "content": "{\n    \"calldatasize2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/calldatasize2Filler.json\",\n            \"sourceHash\" : \"cbd842b7c2ff77d176d3d7b5f200e908c22e47ee9a7d0f5294be85c917119f1e\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x36600055\",\n            \"data\" : \"0x230000000000000000000000000000000000000000000000000000000000000023\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699db\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x36600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x21\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x36600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/caller.json",
    "content": "{\n    \"caller\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/callerFiller.json\",\n            \"sourceHash\" : \"79214a9fde65ef8c878dbf8e03a06a75483536d289ad19e56b95fdef57b1da3d\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x33600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699db\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x33600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x33600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/callvalue.json",
    "content": "{\n    \"callvalue\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/callvalueFiller.json\",\n            \"sourceHash\" : \"4eabc176dc48df11702d9ddf6e8501c62035436adb16aa7cd79769ab273d583a\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x34600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699db\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x34600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x0de0b6b3a7640000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x34600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codecopy0.json",
    "content": "{\n    \"codecopy0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/codecopy0Filler.json\",\n            \"sourceHash\" : \"9354634ed14a9667c8c883c3a4eceaae263bcd3d4fe47683aa0f38f45fe877e9\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60056000600039600051600055\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699c5\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60056000600039600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x6005600060000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60056000600039600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codecopyZeroMemExpansion.json",
    "content": "{\n    \"codecopyZeroMemExpansion\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/codecopyZeroMemExpansionFiller.json\",\n            \"sourceHash\" : \"41a8841a95018c2d228db91d29d0b75992f9a166e4207362e79d17229974ddfd\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60006000600039600051600055\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x174876d460\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60006000600039600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60006000600039600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codecopy_DataIndexTooHigh.json",
    "content": "{\n    \"codecopy_DataIndexTooHigh\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/codecopy_DataIndexTooHighFiller.json\",\n            \"sourceHash\" : \"f6fac567f89aaca85c34c5a88b98870d1f7e2509b26ec566232c5d107741c6f4\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60087ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600039600051600055\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x174876d45d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60087ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600039600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60087ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa600039600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/codesize.json",
    "content": "{\n    \"codesize\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/codesizeFiller.json\",\n            \"sourceHash\" : \"632259bbd9962abfa58ec3b9e7b80a8f3babcdb47592bbc511fa5e4c0bc3ce3f\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x38600055\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699db\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x38600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x38600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/gasprice.json",
    "content": "{\n    \"gasprice\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/gaspriceFiller.json\",\n            \"sourceHash\" : \"b94e3c994e54e24b85ef80fc16f53827cd26ef01fa4a96908a20e646f57d1e48\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x3a600055\",\n            \"data\" : \"0x1234567890abcdef01234567890abcdef0\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x075bcd15\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699db\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x3a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x075bcd15\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x3a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmEnvironmentalInfo/origin.json",
    "content": "{\n    \"origin\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmEnvironmentalInfo/originFiller.json\",\n            \"sourceHash\" : \"4d51cb9ee576e04b08a74a6a4ba3f10284ee1f735dd068abd7a0e551324f45be\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x32600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699db\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x32600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x32600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_AfterJumpdest.json",
    "content": "{\n    \"BlockNumberDynamicJump0_AfterJumpdest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump0_AfterJumpdestFiller.json\",\n            \"sourceHash\" : \"edd08521b4a9bc311f2ba99d15c867d9a98da1e9665d9b173ff85621e170e896\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600843015660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600843015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_AfterJumpdest3.json",
    "content": "{\n    \"BlockNumberDynamicJump0_AfterJumpdest3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump0_AfterJumpdest3Filler.json\",\n            \"sourceHash\" : \"1e86dccd54bd74436a1bbfe11302b675761fc6138ebd1461231acd29ee97b0f0\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600b60085043015660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600b60085043015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_foreverOutOfGas.json",
    "content": "{\n    \"BlockNumberDynamicJump0_foreverOutOfGas\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump0_foreverOutOfGasFiller.json\",\n            \"sourceHash\" : \"0900beba73811b8aafaefadcff3a7cd9954ccb5e4986b9cf03ca44881efd4e9c\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x5b600060000156\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x5b600060000156\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_jumpdest0.json",
    "content": "{\n    \"BlockNumberDynamicJump0_jumpdest0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump0_jumpdest0Filler.json\",\n            \"sourceHash\" : \"80bfa0a5db107e6f083dccdd3091e35add39a4eaac4a8757de8a3e4008c5d646\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600743015660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013869\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600743015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x02\" : \"0x23\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600743015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_jumpdest2.json",
    "content": "{\n    \"BlockNumberDynamicJump0_jumpdest2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump0_jumpdest2Filler.json\",\n            \"sourceHash\" : \"e86a87e0b5cde7d47f1e5dc295600ecc60b7344b3fb4ad64609d6b87fae642f8\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600a60085043015660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013864\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600a60085043015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x02\" : \"0x23\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600a60085043015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump0_withoutJumpdest.json",
    "content": "{\n    \"BlockNumberDynamicJump0_withoutJumpdest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump0_withoutJumpdestFiller.json\",\n            \"sourceHash\" : \"6f1fc4a9e5dff3e5d3071c576aba5b2ee1f30d7dcace92e6c6d230cfd415efd7\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x602360074301566001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x602360074301566001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJump1.json",
    "content": "{\n    \"BlockNumberDynamicJump1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJump1Filler.json\",\n            \"sourceHash\" : \"88e43b5985cc4dfbcbc8476c570157e6e7bc0ee0cb3609e9e9f3dd9aa2a3a528\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x620fffff620fffff01430156\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x620fffff620fffff01430156\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpInsidePushWithJumpDest.json",
    "content": "{\n    \"BlockNumberDynamicJumpInsidePushWithJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpInsidePushWithJumpDestFiller.json\",\n            \"sourceHash\" : \"ca0f21a5f52a8d4f2d6e1eed650f68d5f8f40e567cf17984aacc228adfa578ab\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6004430156655b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6004430156655b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpInsidePushWithoutJumpDest.json",
    "content": "{\n    \"BlockNumberDynamicJumpInsidePushWithoutJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpInsidePushWithoutJumpDestFiller.json\",\n            \"sourceHash\" : \"183a4ce2d0f208630db92539aaf4e38fc3025b44a2842e19e39e956465449fe5\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600543015661eeff\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600543015661eeff\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpi0.json",
    "content": "{\n    \"BlockNumberDynamicJumpi0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpi0Filler.json\",\n            \"sourceHash\" : \"620bba922f5a1732f512d726a26e71b09d3837018a66a9aacb581b212a4f4b13\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600160094301576001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600160094301576001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpi1.json",
    "content": "{\n    \"BlockNumberDynamicJumpi1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpi1Filler.json\",\n            \"sourceHash\" : \"91d6fe3848fbdafff10b7bd503d560f2c614d6b53ed16b51821d3026f4a3a544\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600060094301576001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013862\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600060094301576001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x02\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600060094301576001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpi1_jumpdest.json",
    "content": "{\n    \"BlockNumberDynamicJumpi1_jumpdest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpi1_jumpdestFiller.json\",\n            \"sourceHash\" : \"420810639c740487f7b8d18b29f28dcfb7d762b1aa4aa9b9f8b91928da66a539\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60236001600a43015760015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60236001600a43015760015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpiAfterStop.json",
    "content": "{\n    \"BlockNumberDynamicJumpiAfterStop\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpiAfterStopFiller.json\",\n            \"sourceHash\" : \"7331cec587701bf695329ad94c7e62963827209faffac3b24eb59341ccb1a925\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600160084301570060015b6002600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013864\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600160084301570060015b6002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600160084301570060015b6002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpiOutsideBoundary.json",
    "content": "{\n    \"BlockNumberDynamicJumpiOutsideBoundary\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpiOutsideBoundaryFiller.json\",\n            \"sourceHash\" : \"db80ec0400be086e2a316a91ee7a5f87db06ff6a5b0ad27a50ba692049a54b1c\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04301576002600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04301576002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpifInsidePushWithJumpDest.json",
    "content": "{\n    \"BlockNumberDynamicJumpifInsidePushWithJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpifInsidePushWithJumpDestFiller.json\",\n            \"sourceHash\" : \"4b52bc3a45a966d0032eb01b3fdb8a225af48fa4f5a017b5dff3d4d88d710337\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016006430157655b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016006430157655b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/BlockNumberDynamicJumpifInsidePushWithoutJumpDest.json",
    "content": "{\n    \"BlockNumberDynamicJumpifInsidePushWithoutJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/BlockNumberDynamicJumpifInsidePushWithoutJumpDestFiller.json\",\n            \"sourceHash\" : \"3fccd0c56ebfd40dea69fec03d009967a80ddf93e9a68af81efd2d1645e27fcb\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001600743015761eeff\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001600743015761eeff\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DyanmicJump0_outOfBoundary.json",
    "content": "{\n    \"DyanmicJump0_outOfBoundary\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DyanmicJump0_outOfBoundaryFiller.json\",\n            \"sourceHash\" : \"a2ae635e97f7381a5af1ea432d210faf19f4f84e8e0e6874bd48005674bfea92\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600760005401566001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600760005401566001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_AfterJumpdest.json",
    "content": "{\n    \"DynamicJump0_AfterJumpdest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJump0_AfterJumpdestFiller.json\",\n            \"sourceHash\" : \"605f607251cd4a7c73bd7c814edcada6a9008fcd2896af2caf371beb31db196b\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x602360086003015660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x602360086003015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_AfterJumpdest3.json",
    "content": "{\n    \"DynamicJump0_AfterJumpdest3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJump0_AfterJumpdest3Filler.json\",\n            \"sourceHash\" : \"b7367314ce66b1a937c05550ac901971b5850d2a0ef03acf1feb4d6c9f38925d\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600b6008506003015660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600b6008506003015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_foreverOutOfGas.json",
    "content": "{\n    \"DynamicJump0_foreverOutOfGas\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJump0_foreverOutOfGasFiller.json\",\n            \"sourceHash\" : \"68b687a344b0f44d7459e095f05f6b302ee3f5d15b3c3e7765d5642fb1f46689\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x5b600060000156\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x5b600060000156\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_jumpdest0.json",
    "content": "{\n    \"DynamicJump0_jumpdest0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJump0_jumpdest0Filler.json\",\n            \"sourceHash\" : \"3ab9d036e3e345909b19022f4c3b80d081d214eb5c79b8e94e0f2c660ab01ec7\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x602360076003015660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013868\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x602360076003015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x02\" : \"0x23\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x602360076003015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_jumpdest2.json",
    "content": "{\n    \"DynamicJump0_jumpdest2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJump0_jumpdest2Filler.json\",\n            \"sourceHash\" : \"a7e9d9f046151930ef4b51b8dacce5304ce74c3f5ead80f1e52f783b1a704378\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600a6008506003015660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013863\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600a6008506003015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x02\" : \"0x23\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600a6008506003015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump0_withoutJumpdest.json",
    "content": "{\n    \"DynamicJump0_withoutJumpdest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJump0_withoutJumpdestFiller.json\",\n            \"sourceHash\" : \"84c524e0cafc2ddcebdef720e46a23d10061f4a35bb06bfe7bdfe444990593a6\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60236007600301566001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60236007600301566001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump1.json",
    "content": "{\n    \"DynamicJump1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJump1Filler.json\",\n            \"sourceHash\" : \"2369bac56afc1e0946f608c52027fbc88faf3844cdc2fa46954a0916221b8432\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x620fffff620fffff0160030156\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x620fffff620fffff0160030156\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpAfterStop.json",
    "content": "{\n    \"DynamicJumpAfterStop\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpAfterStopFiller.json\",\n            \"sourceHash\" : \"5ba8a9cb65319cdc8e574e0eb59695b55158e6d723945bac3b96573a576a86a8\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6008600101560060015b6002600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013868\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6008600101560060015b6002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6008600101560060015b6002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpInsidePushWithJumpDest.json",
    "content": "{\n    \"DynamicJumpInsidePushWithJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpInsidePushWithJumpDestFiller.json\",\n            \"sourceHash\" : \"3f3586292e12e696029f38f833fe8c7cea86a0e7cda83c0cbe783aa2c3b22b0c\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600460030156655b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600460030156655b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpInsidePushWithoutJumpDest.json",
    "content": "{\n    \"DynamicJumpInsidePushWithoutJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpInsidePushWithoutJumpDestFiller.json\",\n            \"sourceHash\" : \"4e320bace2f65884d59f95dbbba6e4f9aea39e243bffd309be9bb6c5a3c1bedb\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60056003015661eeff\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60056003015661eeff\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpJD_DependsOnJumps0.json",
    "content": "{\n    \"DynamicJumpJD_DependsOnJumps0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpJD_DependsOnJumps0Filler.json\",\n            \"sourceHash\" : \"e96143bec9697fb0d565026f5fcc5ed70833bf89eb8c63aa87e0155b4e61d8f4\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x01\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6009436006575b566001\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6009436006575b566001\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpJD_DependsOnJumps1.json",
    "content": "{\n    \"DynamicJumpJD_DependsOnJumps1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpJD_DependsOnJumps1Filler.json\",\n            \"sourceHash\" : \"853f3f35881b9db63508e68d34cf87a1a3697fdc969821c0659462242d859c2b\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x01\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600a436006575b5660015b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01385e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a436006575b5660015b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x01\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a436006575b5660015b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest0.json",
    "content": "{\n    \"DynamicJumpPathologicalTest0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpPathologicalTest0Filler.json\",\n            \"sourceHash\" : \"6862ac2a8fad0b3c043493fcd9c9a7e8a549c9f3ef34019ac0d7bcfd096a8040\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x04\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x435660615b4343025660615b60615b5b5b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01385d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x435660615b4343025660615b60615b5b5b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x01\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x435660615b4343025660615b60615b5b5b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest1.json",
    "content": "{\n    \"DynamicJumpPathologicalTest1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpPathologicalTest1Filler.json\",\n            \"sourceHash\" : \"dfbad553b0e28f37f6a5d72740e2ae6bf17ce1b19c62caf2cc2a99c0d1d84e05\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x04\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x435660615b4343025660615b60615b605b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x435660615b4343025660615b60615b605b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest2.json",
    "content": "{\n    \"DynamicJumpPathologicalTest2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpPathologicalTest2Filler.json\",\n            \"sourceHash\" : \"957bc609a0322452da86a59c96e7eea17c5463dcd7bad6ed97b57c6460a90b80\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x04\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x435631615b60615b60615b606001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x435631615b60615b60615b606001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpPathologicalTest3.json",
    "content": "{\n    \"DynamicJumpPathologicalTest3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpPathologicalTest3Filler.json\",\n            \"sourceHash\" : \"a906b3dcb41da1cdacb67bdf49111ecd2bdaab0e3584dbd3993ef0f0555766f6\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x07\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x435631615b60615b60615b606001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x435631615b60615b60615b606001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpStartWithJumpDest.json",
    "content": "{\n    \"DynamicJumpStartWithJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpStartWithJumpDestFiller.json\",\n            \"sourceHash\" : \"4fb19acd65703dce630cb655f52e98d2de72d8a790d53b895d0e7bce603d4166\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x5b586000555960115758600052596000575b58600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x011126\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x5b586000555960115758600052596000575b58600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x12\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x5b586000555960115758600052596000575b58600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_value1.json",
    "content": "{\n    \"DynamicJump_value1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJump_value1Filler.json\",\n            \"sourceHash\" : \"20503c4d21019e3d9d87b95365a0d0417fb7e163265f938d6e3f685377a2c5da\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x08\"\n        },\n        \"gas\" : \"0x01867a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_value2.json",
    "content": "{\n    \"DynamicJump_value2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJump_value2Filler.json\",\n            \"sourceHash\" : \"00631169ba52dbbd3d7ac8529dd960c6b297226c0f177ee3e0ef8bd202b4b1ff\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x12\"\n        },\n        \"gas\" : \"0x01867c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_value3.json",
    "content": "{\n    \"DynamicJump_value3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJump_value3Filler.json\",\n            \"sourceHash\" : \"a1477eeb656e1f4d09c07f020a088cc099f6661fce88f137754b1d45550d7218\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x1b\"\n        },\n        \"gas\" : \"0x01867e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016002600334565b5050600052596000f35b50600052596000f35b600052596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJump_valueUnderflow.json",
    "content": "{\n    \"DynamicJump_valueUnderflow\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJump_valueUnderflowFiller.json\",\n            \"sourceHash\" : \"37f012edfeaa13e4819617af0e8dc2fd71d738a2463b1f61bfd86de0ef980f1b\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016002600334565b5050600052596000f35b50600052596000f35b505050600052596000f3\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x1b\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016002600334565b5050600052596000f35b50600052596000f35b505050600052596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpi0.json",
    "content": "{\n    \"DynamicJumpi0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpi0Filler.json\",\n            \"sourceHash\" : \"394cae3e06d120cc1a5df5e14cfae3598d62e1fefa06dce4055c6ff59c367b63\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x602360016009600301576001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x602360016009600301576001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpi1.json",
    "content": "{\n    \"DynamicJumpi1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpi1Filler.json\",\n            \"sourceHash\" : \"31d323d1c24dd2c2ea5a4e18fd0765bfa1be189add7e395b2679bf5a98e492ab\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x602360006009600301576001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013861\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x602360006009600301576001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x02\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x602360006009600301576001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpi1_jumpdest.json",
    "content": "{\n    \"DynamicJumpi1_jumpdest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpi1_jumpdestFiller.json\",\n            \"sourceHash\" : \"fb4060a7f68c0f3ad9643dcfc93fa90ea0fe6123e65499ae65f400e22db20bcc\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60236001600a6003015760015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60236001600a6003015760015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpiAfterStop.json",
    "content": "{\n    \"DynamicJumpiAfterStop\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpiAfterStopFiller.json\",\n            \"sourceHash\" : \"d61d45e9d5ea3e13d2a8a33965c9c620207156e0b4baf2dfed9a0288c7e8053b\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016008600301570060015b6002600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013863\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016008600301570060015b6002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016008600301570060015b6002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpiOutsideBoundary.json",
    "content": "{\n    \"DynamicJumpiOutsideBoundary\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpiOutsideBoundaryFiller.json\",\n            \"sourceHash\" : \"d550aa41047204857f27b7a80a1309520f3e59b41a87ef3e40492032706e5a88\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0600301576002600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0600301576002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpifInsidePushWithJumpDest.json",
    "content": "{\n    \"DynamicJumpifInsidePushWithJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpifInsidePushWithJumpDestFiller.json\",\n            \"sourceHash\" : \"05f764377385769e93afe47dbc0293921c211b4e68afce30f18cba4bb5955420\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001600660030157655b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001600660030157655b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/DynamicJumpifInsidePushWithoutJumpDest.json",
    "content": "{\n    \"DynamicJumpifInsidePushWithoutJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/DynamicJumpifInsidePushWithoutJumpDestFiller.json\",\n            \"sourceHash\" : \"cadedb13e141e3b7bf1f0763cc831dace3ff150fc623e81fb00e798168d01188\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600160076003015761eeff\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600160076003015761eeff\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_AfterJumpdest.json",
    "content": "{\n    \"JDfromStorageDynamicJump0_AfterJumpdest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump0_AfterJumpdestFiller.json\",\n            \"sourceHash\" : \"06126bb58e44948750e412ea81a3140fcc72b63acec0090939706f3ceb403ae8\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60236008600054015660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60236008600054015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_AfterJumpdest3.json",
    "content": "{\n    \"JDfromStorageDynamicJump0_AfterJumpdest3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump0_AfterJumpdest3Filler.json\",\n            \"sourceHash\" : \"52880726a50d86ffdaea78e4a5d3293643688543eea049172fbf51e564f28f5b\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600b600850600054015660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600b600850600054015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_foreverOutOfGas.json",
    "content": "{\n    \"JDfromStorageDynamicJump0_foreverOutOfGas\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump0_foreverOutOfGasFiller.json\",\n            \"sourceHash\" : \"a3046ce1b7f78c109aa36c29db004850ad5b3b4129d9085849b7af04b719826c\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x5b600060000156\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x5b600060000156\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_jumpdest0.json",
    "content": "{\n    \"JDfromStorageDynamicJump0_jumpdest0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump0_jumpdest0Filler.json\",\n            \"sourceHash\" : \"2f836ba88951147677580e5de7d8d40b0ca72938894aa351096945d7962c8f62\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60236007600054015660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013836\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60236007600054015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\",\n                    \"0x02\" : \"0x23\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60236007600054015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_jumpdest2.json",
    "content": "{\n    \"JDfromStorageDynamicJump0_jumpdest2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump0_jumpdest2Filler.json\",\n            \"sourceHash\" : \"efe088c5366793bcb3339225486608b15750524274baf8d5f9f592c0d5e327f2\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600a600850600054015660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013831\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600a600850600054015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\",\n                    \"0x02\" : \"0x23\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600a600850600054015660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump0_withoutJumpdest.json",
    "content": "{\n    \"JDfromStorageDynamicJump0_withoutJumpdest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump0_withoutJumpdestFiller.json\",\n            \"sourceHash\" : \"696ced07844f15bee009a7c294048b5bf531923787279c19bf1c3150a46bf0ff\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600760005401566001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600760005401566001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJump1.json",
    "content": "{\n    \"JDfromStorageDynamicJump1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJump1Filler.json\",\n            \"sourceHash\" : \"bf061c0eb83d11c310f7ec309e56c3629f715727b41cc0e0772991060404cfc9\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x620fffff620fffff016000540156\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x620fffff620fffff016000540156\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpInsidePushWithJumpDest.json",
    "content": "{\n    \"JDfromStorageDynamicJumpInsidePushWithJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpInsidePushWithJumpDestFiller.json\",\n            \"sourceHash\" : \"561a67bc9db1011fb26151b03adcc53b2f4f55e03292c1e98e3361250c87d38a\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60046000540156655b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60046000540156655b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpInsidePushWithoutJumpDest.json",
    "content": "{\n    \"JDfromStorageDynamicJumpInsidePushWithoutJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpInsidePushWithoutJumpDestFiller.json\",\n            \"sourceHash\" : \"53a491adcc7da05748ad36809954552784007b884cd960e05ebb07a2ddd0452b\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6005600054015661eeff\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6005600054015661eeff\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpi0.json",
    "content": "{\n    \"JDfromStorageDynamicJumpi0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpi0Filler.json\",\n            \"sourceHash\" : \"14e786db1b2df2c2a40be1a80c61baec311572eb481a3afd1b31fb95a3ad937d\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60236001600960005401576001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60236001600960005401576001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpi1.json",
    "content": "{\n    \"JDfromStorageDynamicJumpi1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpi1Filler.json\",\n            \"sourceHash\" : \"f90389bdfe2c1600f16db3b5ff8289b55a9f3d2c56dd18403c4e636440a98a9d\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60236000600960005401576001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01382f\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60236000600960005401576001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\",\n                    \"0x02\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60236000600960005401576001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpi1_jumpdest.json",
    "content": "{\n    \"JDfromStorageDynamicJumpi1_jumpdest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpi1_jumpdestFiller.json\",\n            \"sourceHash\" : \"cc7eadaee4927a2753204e40d7028ae1ed3e1ef4c9a2e8a79460a3e07f5bcafe\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60236001600a600054015760015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60236001600a600054015760015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpiAfterStop.json",
    "content": "{\n    \"JDfromStorageDynamicJumpiAfterStop\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpiAfterStopFiller.json\",\n            \"sourceHash\" : \"80d903064c1050cf1a2e527b8938e610e77822d55c83cf4a07e18586baa0bec1\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001600860005401570060015b6002600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013831\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001600860005401570060015b6002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\",\n                    \"0x03\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001600860005401570060015b6002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpiOutsideBoundary.json",
    "content": "{\n    \"JDfromStorageDynamicJumpiOutsideBoundary\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpiOutsideBoundaryFiller.json\",\n            \"sourceHash\" : \"3c7f35eb2fe3c2ed05679b25f89e81e50fa959c8a665cf4545552f75a3b7140b\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff060005401576002600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60017ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff060005401576002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpifInsidePushWithJumpDest.json",
    "content": "{\n    \"JDfromStorageDynamicJumpifInsidePushWithJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpifInsidePushWithJumpDestFiller.json\",\n            \"sourceHash\" : \"f15ca2a706c969bb0f9f4b7101efd666eebae5520f893a586a7a529b0dc7d4d8\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600160066000540157655b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600160066000540157655b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/JDfromStorageDynamicJumpifInsidePushWithoutJumpDest.json",
    "content": "{\n    \"JDfromStorageDynamicJumpifInsidePushWithoutJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/JDfromStorageDynamicJumpifInsidePushWithoutJumpDestFiller.json\",\n            \"sourceHash\" : \"561fed985eda1bbc4448ad363f6fa69a1d1b503d9d7e0017bcd49aaaf916f333\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x02\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016007600054015761eeff\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016007600054015761eeff\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x04\"\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/bad_indirect_jump1.json",
    "content": "{\n    \"bad_indirect_jump1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/bad_indirect_jump1Filler.json\",\n            \"sourceHash\" : \"15744a7158d6982822dc8a0c272c329f8dfdf93810e8f2f3f468a56db9bd2d90\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x601b602502565b\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x601b602502565b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/bad_indirect_jump2.json",
    "content": "{\n    \"bad_indirect_jump2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/bad_indirect_jump2Filler.json\",\n            \"sourceHash\" : \"6dd2730ab6f27b43eead1633f104f5d60d6a98fa7c81d5a8ba0d2f6434706813\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016003600302576000600056\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016003600302576000600056\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/byte1.json",
    "content": "{\n    \"byte1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/byte1Filler.json\",\n            \"sourceHash\" : \"4bbf3058007fbacf83926bd908a1f886cb4403aa10a95030f2da18e1ad68707b\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7f112233445566778899001122334455667788990011223344556677889900aabb60001a7f112233445566778899001122334455667788990011223344556677889900aabb60011a7f112233445566778899001122334455667788990011223344556677889900aabb60021a7f112233445566778899001122334455667788990011223344556677889900aabb60031a7f112233445566778899001122334455667788990011223344556677889900aabb60041a7f112233445566778899001122334455667788990011223344556677889900aabb60051a7f112233445566778899001122334455667788990011223344556677889900aabb60061a7f112233445566778899001122334455667788990011223344556677889900aabb60071a7f112233445566778899001122334455667788990011223344556677889900aabb60081a7f112233445566778899001122334455667788990011223344556677889900aabb60091a7f112233445566778899001122334455667788990011223344556677889900aabb600a1a7f112233445566778899001122334455667788990011223344556677889900aabb600b1a7f112233445566778899001122334455667788990011223344556677889900aabb600c1a7f112233445566778899001122334455667788990011223344556677889900aabb600d1a7f112233445566778899001122334455667788990011223344556677889900aabb600e1a7f112233445566778899001122334455667788990011223344556677889900aabb600f1a7f112233445566778899001122334455667788990011223344556677889900aabb60101a7f112233445566778899001122334455667788990011223344556677889900aabb60111a7f112233445566778899001122334455667788990011223344556677889900aabb60121a7f112233445566778899001122334455667788990011223344556677889900aabb60131a7f112233445566778899001122334455667788990011223344556677889900aabb60141a7f112233445566778899001122334455667788990011223344556677889900aabb60151a7f112233445566778899001122334455667788990011223344556677889900aabb60161a7f112233445566778899001122334455667788990011223344556677889900aabb60171a7f112233445566778899001122334455667788990011223344556677889900aabb60181a7f112233445566778899001122334455667788990011223344556677889900aabb60191a7f112233445566778899001122334455667788990011223344556677889900aabb601a1a7f112233445566778899001122334455667788990011223344556677889900aabb601b1a7f112233445566778899001122334455667788990011223344556677889900aabb601c1a7f112233445566778899001122334455667788990011223344556677889900aabb601d1a7f112233445566778899001122334455667788990011223344556677889900aabb601e1a7f112233445566778899001122334455667788990011223344556677889900aabb601f1a7f112233445566778899001122334455667788990011223344556677889900aabb60201a7f112233445566778899001122334455667788990011223344556677889900aabb6107de1a6000600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x0171e0\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f112233445566778899001122334455667788990011223344556677889900aabb60001a7f112233445566778899001122334455667788990011223344556677889900aabb60011a7f112233445566778899001122334455667788990011223344556677889900aabb60021a7f112233445566778899001122334455667788990011223344556677889900aabb60031a7f112233445566778899001122334455667788990011223344556677889900aabb60041a7f112233445566778899001122334455667788990011223344556677889900aabb60051a7f112233445566778899001122334455667788990011223344556677889900aabb60061a7f112233445566778899001122334455667788990011223344556677889900aabb60071a7f112233445566778899001122334455667788990011223344556677889900aabb60081a7f112233445566778899001122334455667788990011223344556677889900aabb60091a7f112233445566778899001122334455667788990011223344556677889900aabb600a1a7f112233445566778899001122334455667788990011223344556677889900aabb600b1a7f112233445566778899001122334455667788990011223344556677889900aabb600c1a7f112233445566778899001122334455667788990011223344556677889900aabb600d1a7f112233445566778899001122334455667788990011223344556677889900aabb600e1a7f112233445566778899001122334455667788990011223344556677889900aabb600f1a7f112233445566778899001122334455667788990011223344556677889900aabb60101a7f112233445566778899001122334455667788990011223344556677889900aabb60111a7f112233445566778899001122334455667788990011223344556677889900aabb60121a7f112233445566778899001122334455667788990011223344556677889900aabb60131a7f112233445566778899001122334455667788990011223344556677889900aabb60141a7f112233445566778899001122334455667788990011223344556677889900aabb60151a7f112233445566778899001122334455667788990011223344556677889900aabb60161a7f112233445566778899001122334455667788990011223344556677889900aabb60171a7f112233445566778899001122334455667788990011223344556677889900aabb60181a7f112233445566778899001122334455667788990011223344556677889900aabb60191a7f112233445566778899001122334455667788990011223344556677889900aabb601a1a7f112233445566778899001122334455667788990011223344556677889900aabb601b1a7f112233445566778899001122334455667788990011223344556677889900aabb601c1a7f112233445566778899001122334455667788990011223344556677889900aabb601d1a7f112233445566778899001122334455667788990011223344556677889900aabb601e1a7f112233445566778899001122334455667788990011223344556677889900aabb601f1a7f112233445566778899001122334455667788990011223344556677889900aabb60201a7f112233445566778899001122334455667788990011223344556677889900aabb6107de1a6000600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f112233445566778899001122334455667788990011223344556677889900aabb60001a7f112233445566778899001122334455667788990011223344556677889900aabb60011a7f112233445566778899001122334455667788990011223344556677889900aabb60021a7f112233445566778899001122334455667788990011223344556677889900aabb60031a7f112233445566778899001122334455667788990011223344556677889900aabb60041a7f112233445566778899001122334455667788990011223344556677889900aabb60051a7f112233445566778899001122334455667788990011223344556677889900aabb60061a7f112233445566778899001122334455667788990011223344556677889900aabb60071a7f112233445566778899001122334455667788990011223344556677889900aabb60081a7f112233445566778899001122334455667788990011223344556677889900aabb60091a7f112233445566778899001122334455667788990011223344556677889900aabb600a1a7f112233445566778899001122334455667788990011223344556677889900aabb600b1a7f112233445566778899001122334455667788990011223344556677889900aabb600c1a7f112233445566778899001122334455667788990011223344556677889900aabb600d1a7f112233445566778899001122334455667788990011223344556677889900aabb600e1a7f112233445566778899001122334455667788990011223344556677889900aabb600f1a7f112233445566778899001122334455667788990011223344556677889900aabb60101a7f112233445566778899001122334455667788990011223344556677889900aabb60111a7f112233445566778899001122334455667788990011223344556677889900aabb60121a7f112233445566778899001122334455667788990011223344556677889900aabb60131a7f112233445566778899001122334455667788990011223344556677889900aabb60141a7f112233445566778899001122334455667788990011223344556677889900aabb60151a7f112233445566778899001122334455667788990011223344556677889900aabb60161a7f112233445566778899001122334455667788990011223344556677889900aabb60171a7f112233445566778899001122334455667788990011223344556677889900aabb60181a7f112233445566778899001122334455667788990011223344556677889900aabb60191a7f112233445566778899001122334455667788990011223344556677889900aabb601a1a7f112233445566778899001122334455667788990011223344556677889900aabb601b1a7f112233445566778899001122334455667788990011223344556677889900aabb601c1a7f112233445566778899001122334455667788990011223344556677889900aabb601d1a7f112233445566778899001122334455667788990011223344556677889900aabb601e1a7f112233445566778899001122334455667788990011223344556677889900aabb601f1a7f112233445566778899001122334455667788990011223344556677889900aabb60201a7f112233445566778899001122334455667788990011223344556677889900aabb6107de1a6000600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/calldatacopyMemExp.json",
    "content": "{\n    \"calldatacopyMemExp\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/calldatacopyMemExpFiller.json\",\n            \"sourceHash\" : \"fcf33988ecf7e66eae80382111d1128eb302e201be169ca20b306eac49231142\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x01f4153d80\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60ff60ff630fffffff630fffffff37\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x01f4153d80\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60ff630fffffff630fffffff37\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/codecopyMemExp.json",
    "content": "{\n    \"codecopyMemExp\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/codecopyMemExpFiller.json\",\n            \"sourceHash\" : \"baf738ce30cb457d16aa2f71f866ce00ddb998371757f2c6a30a5d1ca3a9e135\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x01f4153d80\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60ff60ff630fffffff630fffffff39\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x01f4153d80\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60ff630fffffff630fffffff39\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/deadCode_1.json",
    "content": "{\n    \"deadCode_1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/deadCode_1Filler.json\",\n            \"sourceHash\" : \"110e1eaddae6dda0225d4f4b430da33494473d9ec10d765e7a5324d3e1ab26c8\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001600053596000f300000000000000005b00\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01868f\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x0100000000000000000000000000000000000000000000000000000000000000\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001600053596000f300000000000000005b00\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001600053596000f300000000000000005b00\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/dupAt51becameMload.json",
    "content": "{\n    \"dupAt51becameMload\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/dupAt51becameMloadFiller.json\",\n            \"sourceHash\" : \"28d2da26fb721ff16c42b1d398e7410f85560c3373bcc0a424ee1d025bf25ba6\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600260035155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013871\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600260035155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600260035155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/for_loop1.json",
    "content": "{\n    \"for_loop1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/for_loop1Filler.json\",\n            \"sourceHash\" : \"5e12e078316618a30275a5c133a960d17d242cc3726855a805c112193d39a59e\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600a6080525b6000608051111560265760a0516080510160a0526001608051036080526005565b\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x018351\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a6080525b6000608051111560265760a0516080510160a0526001608051036080526005565b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a6080525b6000608051111560265760a0516080510160a0526001608051036080526005565b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/for_loop2.json",
    "content": "{\n    \"for_loop2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/for_loop2Filler.json\",\n            \"sourceHash\" : \"2764d5106d8f416d7f03ab65334b580f66eff1a74fa4c3fc4b2488dbb621d3c1\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60006080525b600a608051101560265760a0516080510160a0526001608051016080526005565b\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x018351\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60006080525b600a608051101560265760a0516080510160a0526001608051016080526005565b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60006080525b600a608051101560265760a0516080510160a0526001608051016080526005565b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/gas0.json",
    "content": "{\n    \"gas0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/gas0Filler.json\",\n            \"sourceHash\" : \"344499133ac967decfa379dd507e6df8c81e13b014db2676d943cdd2ed3c09c6\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x64ffffffffff60005261eeee605a525a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01385d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x64ffffffffff60005261eeee605a525a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x018680\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x64ffffffffff60005261eeee605a525a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/gas1.json",
    "content": "{\n    \"gas1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/gas1Filler.json\",\n            \"sourceHash\" : \"158673d626e8f5b04cbad00e6bcf8bce2a081b61bf98ca0ad11b78e52921444a\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x5a600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387b\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x5a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x01869e\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x5a600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/gasOverFlow.json",
    "content": "{\n    \"gasOverFlow\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/gasOverFlowFiller.json\",\n            \"sourceHash\" : \"01dd61c063b45f54e62e912f6711a3c04bcaba16f40890da37774adedcf5d201\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60035b600190038060025768010000000000000016565b63badf000d60115500\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60035b600190038060025768010000000000000016565b63badf000d60115500\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump1.json",
    "content": "{\n    \"indirect_jump1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/indirect_jump1Filler.json\",\n            \"sourceHash\" : \"33d6b4fa4d999fa02f0b584e925eef1e0b1f55bfe6bd8ba3bd0339ab20739a34\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600460030156005b6001600052596000f3\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01867d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600460030156005b6001600052596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600460030156005b6001600052596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump2.json",
    "content": "{\n    \"indirect_jump2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/indirect_jump2Filler.json\",\n            \"sourceHash\" : \"74d76db6a1761e44af7dea37c2ed941aac2add09cff11950033033cbe6f83248\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600860060156005b6001600052005b6002600052596000f3\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01867d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x0000000000000000000000000000000000000000000000000000000000000002\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600860060156005b6001600052005b6002600052596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600860060156005b6001600052005b6002600052596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump3.json",
    "content": "{\n    \"indirect_jump3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/indirect_jump3Filler.json\",\n            \"sourceHash\" : \"1ca405a29132ed02b16a4e4f1d869eb73904f23759d971c3a7e287260fa13f7b\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001600460050157005b6001600052596000f3\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x018678\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x0000000000000000000000000000000000000000000000000000000000000001\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001600460050157005b6001600052596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001600460050157005b6001600052596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/indirect_jump4.json",
    "content": "{\n    \"indirect_jump4\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/indirect_jump4Filler.json\",\n            \"sourceHash\" : \"bec771ce98d114d7dacd0f1f33426b85e6092d65bfd73945ea07831737a0d310\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60006007600501576001600052005b\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01867e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60006007600501576001600052005b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60006007600501576001600052005b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_AfterJumpdest.json",
    "content": "{\n    \"jump0_AfterJumpdest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jump0_AfterJumpdestFiller.json\",\n            \"sourceHash\" : \"8e933f0185d188f6eeb002d4ac8dace70a34a196e4c59932957eaac4cef27849\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x602360085660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x602360085660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_AfterJumpdest3.json",
    "content": "{\n    \"jump0_AfterJumpdest3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jump0_AfterJumpdest3Filler.json\",\n            \"sourceHash\" : \"dc15eff9141416358f3f9960ef23b930d70b7cb8d3e13d7d5b6832954605d062\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600b6008505660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600b6008505660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_foreverOutOfGas.json",
    "content": "{\n    \"jump0_foreverOutOfGas\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jump0_foreverOutOfGasFiller.json\",\n            \"sourceHash\" : \"06656a40346ccda59a2d1852d9bb59447d34fb9eb80706e378c5a067e337a080\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x5b600056\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x5b600056\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_jumpdest0.json",
    "content": "{\n    \"jump0_jumpdest0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jump0_jumpdest0Filler.json\",\n            \"sourceHash\" : \"4bf0cfbeda98acdd577972c6a7abcd20f60ab1b48328ce3f804e3cefa7c77bdb\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x602360075660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x602360075660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x02\" : \"0x23\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x602360075660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_jumpdest2.json",
    "content": "{\n    \"jump0_jumpdest2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jump0_jumpdest2Filler.json\",\n            \"sourceHash\" : \"3aba479e0b0de29b2fac29ac62deb3e37d9fff0a79ed3a1953a7afa7e19b17da\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6023600a6008505660015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013869\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600a6008505660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x02\" : \"0x23\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6023600a6008505660015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_outOfBoundary.json",
    "content": "{\n    \"jump0_outOfBoundary\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jump0_outOfBoundaryFiller.json\",\n            \"sourceHash\" : \"9442ba4b2e4625b3ba5d7a3c43a5c1bcbb0f71fb8977d9cb291a58f956e5d014\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60236007566001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60236007566001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump0_withoutJumpdest.json",
    "content": "{\n    \"jump0_withoutJumpdest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jump0_withoutJumpdestFiller.json\",\n            \"sourceHash\" : \"4023b9b32fabb7baeb154e319422cc24e852c858eb124713508a241df86f3969\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60236007566001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60236007566001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jump1.json",
    "content": "{\n    \"jump1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jump1Filler.json\",\n            \"sourceHash\" : \"c86900065dc3ca2743c247f2c7f305795833184ab64acf0c6911a899533ab628\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x620fffff620fffff0156\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x620fffff620fffff0156\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpAfterStop.json",
    "content": "{\n    \"jumpAfterStop\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpAfterStopFiller.json\",\n            \"sourceHash\" : \"1527b83fd9a930436902b171302c40812a33a035bf148e5c40f362e811b1ad54\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6006560060015b6002600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6006560060015b6002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6006560060015b6002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpDynamicJumpSameDest.json",
    "content": "{\n    \"jumpDynamicJumpSameDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpDynamicJumpSameDestFiller.json\",\n            \"sourceHash\" : \"c1d46387eefa48a995ad56844ced0803c7e2441369d569c7669933b1ebecc2c8\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6002600401565b600360005260206000f3600656\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01867c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x0000000000000000000000000000000000000000000000000000000000000003\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6002600401565b600360005260206000f3600656\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6002600401565b600360005260206000f3600656\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpHigh.json",
    "content": "{\n    \"jumpHigh\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpHighFiller.json\",\n            \"sourceHash\" : \"a7725bef6c1ff691ae5ad3b73c3b44a6d16f9c9b1c0e57671d7ff59fe9ac9800\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x630fffffff565b5b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x630fffffff565b5b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpInsidePushWithJumpDest.json",
    "content": "{\n    \"jumpInsidePushWithJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpInsidePushWithJumpDestFiller.json\",\n            \"sourceHash\" : \"d200f4e72a16a6960609912d97797b467afb3a98c1eef6f9eed2006c4111a7f3\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600456655b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600456655b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpInsidePushWithoutJumpDest.json",
    "content": "{\n    \"jumpInsidePushWithoutJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpInsidePushWithoutJumpDestFiller.json\",\n            \"sourceHash\" : \"451d199b9c77c3a3297bb20ba2a01c238e984283e3690b22c9614121c878d8ec\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60055661eeff\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60055661eeff\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpOntoJump.json",
    "content": "{\n    \"jumpOntoJump\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpOntoJumpFiller.json\",\n            \"sourceHash\" : \"b7af74ccb70e4242810a2f47181f0c95ee1b9558385cff3a33896f29c7775d7e\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x565b600056\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x565b600056\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpTo1InstructionafterJump.json",
    "content": "{\n    \"jumpTo1InstructionafterJump\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpTo1InstructionafterJumpFiller.json\",\n            \"sourceHash\" : \"88eb8cc46a28df3e813fc9d859aaa7c10bd7246272ed7af7c7e119e18e7c6592\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6003565b6001600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x2710\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x6003565b6001600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpTo1InstructionafterJump_jumpdestFirstInstruction.json",
    "content": "{\n    \"jumpTo1InstructionafterJump_jumpdestFirstInstruction\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpTo1InstructionafterJump_jumpdestFirstInstructionFiller.json\",\n            \"sourceHash\" : \"1e05b7560aba357248c8fdddd62e9b8dfb943cc2c3bb9569c5d44c2322899ff4\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x5b6003565b6001600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x2710\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x5b6003565b6001600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpTo1InstructionafterJump_noJumpDest.json",
    "content": "{\n    \"jumpTo1InstructionafterJump_noJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpTo1InstructionafterJump_noJumpDestFiller.json\",\n            \"sourceHash\" : \"91502d2804896fda92630c93005fc5c0e26591bac75b7fff576409271f81cdb6\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6003566001600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x2710\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x6003566001600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpToUint64maxPlus1.json",
    "content": "{\n    \"jumpToUint64maxPlus1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpToUint64maxPlus1Filler.json\",\n            \"sourceHash\" : \"17b7f86769171233d32af7b23fc33ba8e71f03a64f0625aadfe65a696dff36a6\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6801000000000000000b565b5b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6801000000000000000b565b5b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpToUintmaxPlus1.json",
    "content": "{\n    \"jumpToUintmaxPlus1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpToUintmaxPlus1Filler.json\",\n            \"sourceHash\" : \"6897e3a469257a7905bf719e9ae36ac49f830eab122209a9c2e89c879cdaa2d7\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x640100000007565b5b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x640100000007565b5b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpdestBigList.json",
    "content": "{\n    \"jumpdestBigList\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpdestBigListFiller.json\",\n            \"sourceHash\" : \"6e4f2dfe68bb0ae1bdce8e6385b098b9984176b12f76273d1a1f7e34f46d85db\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6009565b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x05f5e100\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x05f5e0a1\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6009565b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6009565b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b5b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi0.json",
    "content": "{\n    \"jumpi0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpi0Filler.json\",\n            \"sourceHash\" : \"86fb0cc0becb3234b287df55e90da9a860eff30714976e3395b25ee2e2b47c48\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x602360016009576001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x602360016009576001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi1.json",
    "content": "{\n    \"jumpi1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpi1Filler.json\",\n            \"sourceHash\" : \"27f04b183d459deb05bc15b1281b0e300307950da1968f669bd8cbec2b200044\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x602360006009576001600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013867\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x602360006009576001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x02\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x602360006009576001600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi1_jumpdest.json",
    "content": "{\n    \"jumpi1_jumpdest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpi1_jumpdestFiller.json\",\n            \"sourceHash\" : \"ad83573b03f45ffbef8bfcea78a8cb61b1c793b36475000cf9222dea41696717\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60236001600a5760015b600255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60236001600a5760015b600255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiAfterStop.json",
    "content": "{\n    \"jumpiAfterStop\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpiAfterStopFiller.json\",\n            \"sourceHash\" : \"ec2d355d1d27a71fadd654c9a7b8a7b90bc68dce10416448f803d452ef1d474d\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016008570060015b6002600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013869\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016008570060015b6002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016008570060015b6002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiOutsideBoundary.json",
    "content": "{\n    \"jumpiOutsideBoundary\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpiOutsideBoundaryFiller.json\",\n            \"sourceHash\" : \"7d536d76f1c00c063b374bdcd155229427e5fe4867ae5ac41d42516c88ebff0d\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff576002600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff576002600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiToUint64maxPlus1.json",
    "content": "{\n    \"jumpiToUint64maxPlus1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpiToUint64maxPlus1Filler.json\",\n            \"sourceHash\" : \"43b7965f24cac2b1b88fb4781bccd2cbcdcc1569812c2c9e28ebded71ebd172e\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016801000000000000000d575b5b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60016801000000000000000d575b5b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpiToUintmaxPlus1.json",
    "content": "{\n    \"jumpiToUintmaxPlus1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpiToUintmaxPlus1Filler.json\",\n            \"sourceHash\" : \"58d51b8cb46082033f726f1bca929fb1713048436d52029e31f5bfcaaaded691\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001640100000009575b5b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001640100000009575b5b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpi_at_the_end.json",
    "content": "{\n    \"jumpi_at_the_end\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpi_at_the_endFiller.json\",\n            \"sourceHash\" : \"db58f5762f6dccaf9a4daa5053fe18bc36fc597c379acbbb8dc7d41897e0fd1b\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x989680\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600a6000525b6000516001900380600052600557\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x03e8\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x0260\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a6000525b6000516001900380600052600557\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a6000525b6000516001900380600052600557\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpifInsidePushWithJumpDest.json",
    "content": "{\n    \"jumpifInsidePushWithJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpifInsidePushWithJumpDestFiller.json\",\n            \"sourceHash\" : \"790a546e29160af651f091890cd367d79d28b345f43847fa5d19b6a0dab087e9\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001600657655b6001600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001600657655b6001600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/jumpifInsidePushWithoutJumpDest.json",
    "content": "{\n    \"jumpifInsidePushWithoutJumpDest\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/jumpifInsidePushWithoutJumpDestFiller.json\",\n            \"sourceHash\" : \"c69048c65f19388408ec0027e2c9372b393d057d91c9e0eff2ea96f8bb59f66b\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600160075761eeff\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600160075761eeff\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/kv1.json",
    "content": "{\n    \"kv1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/kv1Filler.json\",\n            \"sourceHash\" : \"e9c18f1395a9a5e541d26c02b68f69e413953c380102c17d783cc18b5092bbf2\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x33604555602d80600f6000396000f3604554331415602c575b366080511015602b576020608051013560805135556040608051016080526009565b5b\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01385d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x604554331415602c575b366080511015602b576020608051013560805135556040608051016080526009565b5b\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x33604555602d80600f6000396000f3604554331415602c575b366080511015602b576020608051013560805135556040608051016080526009565b5b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x45\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x33604555602d80600f6000396000f3604554331415602c575b366080511015602b576020608051013560805135556040608051016080526009565b5b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/log1MemExp.json",
    "content": "{\n    \"log1MemExp\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/log1MemExpFiller.json\",\n            \"sourceHash\" : \"241dbcb0d33d25f1db0b51b65c38c4e3ef2f5b52c799264979423508e3fcf934\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x01f4153d80\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60ff60ff630fffffffa1\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x01f4153d80\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60ff630fffffffa1\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/loop_stacklimit_1020.json",
    "content": "{\n    \"loop_stacklimit_1020\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/loop_stacklimit_1020Filler.json\",\n            \"sourceHash\" : \"e3a67d3fc9f35b9e0db39be074d9160030b23790e568d0387f9d8f7e4190e40a\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6000345b60019003906001018180600357600052600152600059f3\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x03fc\"\n        },\n        \"gas\" : \"0xef1c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6000345b60019003906001018180600357600052600152600059f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6000345b60019003906001018180600357600052600152600059f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/loop_stacklimit_1021.json",
    "content": "{\n    \"loop_stacklimit_1021\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/loop_stacklimit_1021Filler.json\",\n            \"sourceHash\" : \"c1bb4f6ff68cafca82606ffe4fbed88358dc3b19be5e69714e96478d8571c0fc\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6000345b60019003906001018180600357600052600152600059f3\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x03fd\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6000345b60019003906001018180600357600052600152600059f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/memory1.json",
    "content": "{\n    \"memory1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/memory1Filler.json\",\n            \"sourceHash\" : \"4962a1d10a8792cd1ad8a08ac500002adec8cc965fd1fb4d1c45cb3e558a9de6\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600260005360036001536000516001510160025260406000f3\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01866d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x02030503000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600260005360036001536000516001510160025260406000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600260005360036001536000516001510160025260406000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadError0.json",
    "content": "{\n    \"mloadError0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/mloadError0Filler.json\",\n            \"sourceHash\" : \"27a14368a9e5b964986445d0436e67f685ab0171ea0359b9a112fdc07d98bf53\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600051600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01730c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600051600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadError1.json",
    "content": "{\n    \"mloadError1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/mloadError1Filler.json\",\n            \"sourceHash\" : \"f5841cfbab0e35ad5727493bc7b6e0cd075735640637e817001de707085c2608\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6017600152600051600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x017300\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6017600152600051600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6017600152600051600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadMemExp.json",
    "content": "{\n    \"mloadMemExp\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/mloadMemExpFiller.json\",\n            \"sourceHash\" : \"b12ca5b81a2d597d774f63fd3e6301a3808c7090e1b5ee00ea980c846ddadf32\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x01f4153d80\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x630fffffff51\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x800570\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x630fffffff51\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mloadOutOfGasError2.json",
    "content": "{\n    \"mloadOutOfGasError2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/mloadOutOfGasError2Filler.json\",\n            \"sourceHash\" : \"8df8c3070849692634e4e7af44885da9c5d41df0717fd6d337aa7d5bfed56d52\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6272482551600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6272482551600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize0.json",
    "content": "{\n    \"msize0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/msize0Filler.json\",\n            \"sourceHash\" : \"41daa7a08f4c4f0380b60446927c8a3d3f077fdd63de63ab8736353cf7c92d86\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60ff60005259600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386f\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60005259600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x20\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60005259600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize1.json",
    "content": "{\n    \"msize1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/msize1Filler.json\",\n            \"sourceHash\" : \"1bc7a7187b3aa498df95faec7fa0258d950df3afb6205db0f9e2997ffb7ec512\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x64ffffffffff60005259600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386f\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x64ffffffffff60005259600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x20\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x64ffffffffff60005259600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize2.json",
    "content": "{\n    \"msize2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/msize2Filler.json\",\n            \"sourceHash\" : \"7a68500c2697ce7d4e5140214c087b3f152770295239abebdae1f81695167994\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x64ffffffffff60005261eeee60205259600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013863\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x64ffffffffff60005261eeee60205259600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x40\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x64ffffffffff60005261eeee60205259600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/msize3.json",
    "content": "{\n    \"msize3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/msize3Filler.json\",\n            \"sourceHash\" : \"e5a676b6ba865c05ea6cf933a2805cb286a664d1bee6544604cc96fdd79f1be4\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x64ffffffffff60005261eeee605a5259600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01385d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x64ffffffffff60005261eeee605a5259600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x80\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x64ffffffffff60005261eeee605a5259600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore0.json",
    "content": "{\n    \"mstore0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/mstore0Filler.json\",\n            \"sourceHash\" : \"78e3311be5943f4a7995e11b3fe7e41fa432fae150d687201c617c70ae40f6d7\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600152600151600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013868\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600152600151600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x01\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600152600151600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore1.json",
    "content": "{\n    \"mstore1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/mstore1Filler.json\",\n            \"sourceHash\" : \"424433d76d1f8d1622fa9796c232dbd9f31ddc1231efae876f6494ee7d1ccab2\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600201600152600151600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013862\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600201600152600151600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x01\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600201600152600151600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8MemExp.json",
    "content": "{\n    \"mstore8MemExp\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/mstore8MemExpFiller.json\",\n            \"sourceHash\" : \"df32f3b06a7e748f5fdd93a878f7687f4f28864f8a5956d8e3a4fff7463b47f0\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x01f4153d80\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60f1630fffffff53\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x800570\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60f1630fffffff53\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8WordToBigError.json",
    "content": "{\n    \"mstore8WordToBigError\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/mstore8WordToBigErrorFiller.json\",\n            \"sourceHash\" : \"e7f6dfe7bcd73d4ee7ec71238711bd20d21eafc11b4b5e6c54ed69b2daf3c8bd\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600153600151600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013868\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600153600151600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x01\" : \"0xff00000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600153600151600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8_0.json",
    "content": "{\n    \"mstore8_0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/mstore8_0Filler.json\",\n            \"sourceHash\" : \"0a5e67d6603b41a69f94c4d3dcc06da69c17c841ba0cdc8e15a5203e89d217a7\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600153600151600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013868\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600153600151600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x01\" : \"0xff00000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600153600151600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore8_1.json",
    "content": "{\n    \"mstore8_1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/mstore8_1Filler.json\",\n            \"sourceHash\" : \"85ba59a62f13c9f29b37207e79bf61c2bfb361b6b703ac5ec0f82801edd6cdec\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60ff60015360ee600253600051600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013862\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60015360ee600253600051600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x01\" : \"0xffee0000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60015360ee600253600051600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstoreMemExp.json",
    "content": "{\n    \"mstoreMemExp\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/mstoreMemExpFiller.json\",\n            \"sourceHash\" : \"eb43769a562c8a34bcb776fd312cc723bf2e8f4e64c75d7d3e36451760d9fd44\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x01f4153d80\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60f1630fffffff52\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x01f4153d80\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60f1630fffffff52\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstoreWordToBigError.json",
    "content": "{\n    \"mstoreWordToBigError\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/mstoreWordToBigErrorFiller.json\",\n            \"sourceHash\" : \"25c31b75a7912e1384ff3347dc511c5d1b384e6f40cfb0dffaa65176abcc1613\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x01f4153d80\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600152600151600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013868\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600152600151600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x01\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600152600151600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/mstore_mload0.json",
    "content": "{\n    \"mstore_mload0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/mstore_mload0Filler.json\",\n            \"sourceHash\" : \"f3bd75c796896dcdbf77a7b2af45f3299ebe20db7e30d22031edc990bffb0416\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6017600052600051600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386b\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6017600052600051600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x01\" : \"0x17\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6017600052600051600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pc0.json",
    "content": "{\n    \"pc0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/pc0Filler.json\",\n            \"sourceHash\" : \"824c240179768ed6999ca7357c185b25d2368e5526cde066fa103caa26fe8dea\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x58600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x017313\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x58600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x58600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pc1.json",
    "content": "{\n    \"pc1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/pc1Filler.json\",\n            \"sourceHash\" : \"5e897dc9ac93e7c8c0502f846914c81cacb26796ab75d517dd862fc1f193256c\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60ff60005558600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x0124ed\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60005558600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x05\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60005558600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pop0.json",
    "content": "{\n    \"pop0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/pop0Filler.json\",\n            \"sourceHash\" : \"46af5c256e1cdc6525f63332c78c39e0583ad9afe06e29a1a2cad8efcc801fd4\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6002600360045055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013875\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6002600360045055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6002600360045055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/pop1.json",
    "content": "{\n    \"pop1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/pop1Filler.json\",\n            \"sourceHash\" : \"f87d71b88a272f122f6ea9dbd4680f8b4bf659a1b2bae4634398e6ecdcc9f487\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x5060026003600455\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x5060026003600455\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/return1.json",
    "content": "{\n    \"return1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/return1Filler.json\",\n            \"sourceHash\" : \"fe0798e0775da11e784482b44b51322ad70f4deaa8ce8643841257d3abee2e1f\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001620f4240f3\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001620f4240f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/return2.json",
    "content": "{\n    \"return2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/return2Filler.json\",\n            \"sourceHash\" : \"dbf688e0c2f5f4907b91cf9d71f3dc94ccbdcd3153ece4d2017e0367c0f0ef66\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6001608052600060805111601b57600160005260206000f3602b565b602760005260206000f360026080525b\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01865f\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x0000000000000000000000000000000000000000000000000000000000000027\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001608052600060805111601b57600160005260206000f3602b565b602760005260206000f360026080525b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6001608052600060805111601b57600160005260206000f3602b565b602760005260206000f360026080525b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sha3MemExp.json",
    "content": "{\n    \"sha3MemExp\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/sha3MemExpFiller.json\",\n            \"sourceHash\" : \"6672d6b321654fc8397f1a89903d0fb859013f50a4483c33e7b14b08ba490886\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x01f4153d80\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60ff630fffffff20\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x01f4153d80\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff630fffffff20\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_load_0.json",
    "content": "{\n    \"sstore_load_0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/sstore_load_0Filler.json\",\n            \"sourceHash\" : \"371f51e169fa8f7740cef83f469ff5f02034d301d027b0267cd999c9ea5ca633\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60ff60005560ee600a55600054601455\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x9bfc\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60005560ee600a55600054601455\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xff\",\n                    \"0x0a\" : \"0xee\",\n                    \"0x14\" : \"0xff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60005560ee600a55600054601455\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_load_1.json",
    "content": "{\n    \"sstore_load_1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/sstore_load_1Filler.json\",\n            \"sourceHash\" : \"28c5c7cfbcf28dd967743a82487d71c5d17eca75a90f019d227970c0ff927155\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60ff60005560ee600a55606454601455\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0xd694\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60005560ee600a55606454601455\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xff\",\n                    \"0x0a\" : \"0xee\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60005560ee600a55606454601455\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_load_2.json",
    "content": "{\n    \"sstore_load_2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/sstore_load_2Filler.json\",\n            \"sourceHash\" : \"6eeaf23d94ef3fc20edf8997eea5636ef20031039916c445404cfbe6ed8fbd42\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60ff60005560ee60015560dd600255600154600a55600254601455\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff60005560ee60015560dd600255600154600a55600254601455\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/sstore_underflow.json",
    "content": "{\n    \"sstore_underflow\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/sstore_underflowFiller.json\",\n            \"sourceHash\" : \"805b307827e4870e9e3bf9655a71a4ca5c327223280c4c3125522d053732de4b\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/stack_loop.json",
    "content": "{\n    \"stack_loop\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/stack_loopFiller.json\",\n            \"sourceHash\" : \"10cdba5fde4ef3d4d21af05732cf685986623a9055ef0d62dfb00f2a415e9264\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60015b6001810380600257600053600153600253600353600453600553600653600753600853600953596000f3\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60015b6001810380600257600053600153600253600353600453600553600653600753600853600953596000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/stackjump1.json",
    "content": "{\n    \"stackjump1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/stackjump1Filler.json\",\n            \"sourceHash\" : \"21d7234c731f6e2e771b45ce8ba46f258fcfee3c1c1f9060d5246302ef5f151e\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6004600660096014565b600a03600052596000f35b60005201600956\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x018662\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6004600660096014565b600a03600052596000f35b60005201600956\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6004600660096014565b600a03600052596000f35b60005201600956\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/swapAt52becameMstore.json",
    "content": "{\n    \"swapAt52becameMstore\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/swapAt52becameMstoreFiller.json\",\n            \"sourceHash\" : \"b014aac7021775f56b763921bf12a663ca35c4aa230888cd7908edfa705b1413\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600260035255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600260035255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmIOandFlowOperations/when.json",
    "content": "{\n    \"when\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmIOandFlowOperations/whenFiller.json\",\n            \"sourceHash\" : \"18527242394f1a6921ffb94f5938e5c13a8dc892cb123edf424d17c32be5140d\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600060011115600e57600d6080525b\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01866e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600060011115600e57600d6080525b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600060011115600e57600d6080525b\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup1.json",
    "content": "{\n    \"dup1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup1Filler.json\",\n            \"sourceHash\" : \"889d5de15fe358e75ea0112d96f91b7f0611e50107afd44e49591dfdf4d1404a\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff80600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013877\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff80600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff80600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup10.json",
    "content": "{\n    \"dup10\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup10Filler.json\",\n            \"sourceHash\" : \"23bdbc11963ca2b25f37833790df2c18f7e8eafb140aeae46da7aa559b155c08\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600a60096008600760066005600460036002600189600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01385c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a60096008600760066005600460036002600189600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x0a\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a60096008600760066005600460036002600189600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup11.json",
    "content": "{\n    \"dup11\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup11Filler.json\",\n            \"sourceHash\" : \"19bd1559d38698b81939d34f57fd6d0cc67f859abd68cef0aa92d5bfab4988a9\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600b600a6009600860076006600560046003600260018a600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013859\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600b600a6009600860076006600560046003600260018a600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x0b\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600b600a6009600860076006600560046003600260018a600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup12.json",
    "content": "{\n    \"dup12\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup12Filler.json\",\n            \"sourceHash\" : \"da44468576186e257a5702a707b1473294a2462f0f658a766844ecb54a3695aa\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600c600b600a6009600860076006600560046003600260018b600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013856\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600c600b600a6009600860076006600560046003600260018b600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x0c\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600c600b600a6009600860076006600560046003600260018b600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup13.json",
    "content": "{\n    \"dup13\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup13Filler.json\",\n            \"sourceHash\" : \"f3c75ee821b71e2914b48355154b77941be4b3b5a181dea5233d79b3bf40fcc1\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600d600c600b600a6009600860076006600560046003600260018c600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013853\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600d600c600b600a6009600860076006600560046003600260018c600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x0d\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600d600c600b600a6009600860076006600560046003600260018c600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup14.json",
    "content": "{\n    \"dup14\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup14Filler.json\",\n            \"sourceHash\" : \"a37f4ccb2c77bb918267d494a88dcb88531ea34447b2d16aff8f4ae3860182f3\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600e600d600c600b600a6009600860076006600560046003600260018d600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013850\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600e600d600c600b600a6009600860076006600560046003600260018d600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x0e\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600e600d600c600b600a6009600860076006600560046003600260018d600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup15.json",
    "content": "{\n    \"dup15\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup15Filler.json\",\n            \"sourceHash\" : \"0ac65194062a3e7bc2459472d9c4864695ec91177b5344a134c2da8ed44b0369\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600f600e600d600c600b600a6009600860076006600560046003600260018e600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01384d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600f600e600d600c600b600a6009600860076006600560046003600260018e600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x0f\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600f600e600d600c600b600a6009600860076006600560046003600260018e600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup16.json",
    "content": "{\n    \"dup16\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup16Filler.json\",\n            \"sourceHash\" : \"2b4c0d14cb78c59f0ab214cc935fe94741426dbd20418c1c06dd063ea0caa2d5\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6010600f600e600d600c600b600a6009600860076006600560046003600260018f600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01384a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6010600f600e600d600c600b600a6009600860076006600560046003600260018f600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x10\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6010600f600e600d600c600b600a6009600860076006600560046003600260018f600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup2.json",
    "content": "{\n    \"dup2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup2Filler.json\",\n            \"sourceHash\" : \"12b1431dcf55f1141d0e407117f92914fa9a25ae5485ad89e06bef6b688b1a94\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6002600181600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6002600181600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x02\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6002600181600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup2error.json",
    "content": "{\n    \"dup2error\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup2errorFiller.json\",\n            \"sourceHash\" : \"39d43572d1117048ea0ef48812b09faca67b3978451dd4da80d2df3d758fb102\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff81600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff81600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup3.json",
    "content": "{\n    \"dup3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup3Filler.json\",\n            \"sourceHash\" : \"09c9fbeef4cef9883c23f3444738ad2b4751e00b5753aa9c1b9f224ae365a53f\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60036002600182600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013871\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60036002600182600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x03\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60036002600182600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup4.json",
    "content": "{\n    \"dup4\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup4Filler.json\",\n            \"sourceHash\" : \"acb8190d34fe9b884acd7d69397e6434d2fd07227d7e6736eb6ae7f5bb172401\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600460036002600183600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600460036002600183600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x04\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600460036002600183600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup5.json",
    "content": "{\n    \"dup5\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup5Filler.json\",\n            \"sourceHash\" : \"4fcfefb995a2ebbd90e18181ff5939c6db3e630bda508f94cc1a55fb7b8b43bc\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6005600460036002600184600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386b\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6005600460036002600184600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x05\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6005600460036002600184600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup6.json",
    "content": "{\n    \"dup6\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup6Filler.json\",\n            \"sourceHash\" : \"9cc5d01fd36294ca6f658eb77a10d597d30ef8b6ed1b9cee39719fcaf639b757\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60066005600460036002600185600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013868\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60066005600460036002600185600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x06\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60066005600460036002600185600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup7.json",
    "content": "{\n    \"dup7\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup7Filler.json\",\n            \"sourceHash\" : \"28fe0e04a338072067f4bd7ea8c75f1dd010613fb5255ca54411fa8c3e215476\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600760066005600460036002600186600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013865\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600760066005600460036002600186600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x07\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600760066005600460036002600186600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup8.json",
    "content": "{\n    \"dup8\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup8Filler.json\",\n            \"sourceHash\" : \"0fcca677e0e2f103dd67ab566f8d0382403fb41f1cec87c741d57199163bc819\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6008600760066005600460036002600187600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013862\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6008600760066005600460036002600187600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x08\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6008600760066005600460036002600187600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/dup9.json",
    "content": "{\n    \"dup9\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/dup9Filler.json\",\n            \"sourceHash\" : \"f5af3ef5323e2e3792ba1f470a26ed99975e436cf47ef414f28cb8fc510ca1a7\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60096008600760066005600460036002600188600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01385f\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60096008600760066005600460036002600188600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x09\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60096008600760066005600460036002600188600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push1.json",
    "content": "{\n    \"push1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push1Filler.json\",\n            \"sourceHash\" : \"8171c34388587f0c7ae7a41b825eef42d10738f6fb953c11c1d6ef9c2a6f5129\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60ff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0xff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60ff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push10.json",
    "content": "{\n    \"push10\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push10Filler.json\",\n            \"sourceHash\" : \"0d3011bde292b2ca6a6266ba693e55e0edbe5682bc20216e970fcb3d2fe881c3\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6966778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6966778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x66778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6966778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push11.json",
    "content": "{\n    \"push11\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push11Filler.json\",\n            \"sourceHash\" : \"c18904bda959ad278ce35ec57ba4b78a539f35bc14f843ac9774c9f0004f59ce\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6a5566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6a5566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x5566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6a5566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push12.json",
    "content": "{\n    \"push12\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push12Filler.json\",\n            \"sourceHash\" : \"60fa6626a3b28b48318b49eb9fdf256c6a25d9dac4959b9bea89a98050c4469a\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6b445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6b445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6b445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push13.json",
    "content": "{\n    \"push13\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push13Filler.json\",\n            \"sourceHash\" : \"343d540d55a46e9f3857c7a0919a69108c7924b9c690db204c2868d5ae50a460\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6c33445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6c33445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x33445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6c33445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push14.json",
    "content": "{\n    \"push14\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push14Filler.json\",\n            \"sourceHash\" : \"0ba241772c95e7ce39b9cc1dc5ea2d2f7ee75a96ce82bd17bfea425ca32a4d4a\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6d2233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6d2233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x2233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6d2233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push15.json",
    "content": "{\n    \"push15\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push15Filler.json\",\n            \"sourceHash\" : \"29617368ed760520f7807ed629abe751dada5a3e9fc72602b50ed1f48278ce52\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6e112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6e112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6e112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push16.json",
    "content": "{\n    \"push16\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push16Filler.json\",\n            \"sourceHash\" : \"5c54e00d05640819402aa7120a2b9d12ff42edd5a049b32adaf44e768fe9efc2\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6f10112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6f10112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x10112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6f10112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push17.json",
    "content": "{\n    \"push17\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push17Filler.json\",\n            \"sourceHash\" : \"0b82cf50a2dd3f921f0316cd2be4749ad1c7b7804a7057743103317674fc1c80\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x70ff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x70ff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0xff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x70ff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push18.json",
    "content": "{\n    \"push18\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push18Filler.json\",\n            \"sourceHash\" : \"80e81d41694d284faac2ade3e819de6103aa03a169166fa8d8c5e43944b7ad50\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x71eeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x71eeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0xeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x71eeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push19.json",
    "content": "{\n    \"push19\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push19Filler.json\",\n            \"sourceHash\" : \"395bb54c39e164688f3a8706e288302b4aa1ce898faf9af85298651b815c78d5\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x72ddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x72ddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0xddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x72ddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push1_missingStack.json",
    "content": "{\n    \"push1_missingStack\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push1_missingStackFiller.json\",\n            \"sourceHash\" : \"8648b58b98abaa9416a15974256a81f45ab7d3692b5798c30dae0bd377ffd5c0\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01869d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push2.json",
    "content": "{\n    \"push2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push2Filler.json\",\n            \"sourceHash\" : \"da86ae7ca1372a231b1c1fd8f060e3e993e00448951af08348ca65fa11aab298\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x61eeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x61eeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0xeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x61eeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push20.json",
    "content": "{\n    \"push20\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push20Filler.json\",\n            \"sourceHash\" : \"c3f370223d38ff6230aad16a24a32a2c02622d8f6f32a6cef36f37ff3efd5f3e\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x73ccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x73ccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0xccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x73ccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push21.json",
    "content": "{\n    \"push21\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push21Filler.json\",\n            \"sourceHash\" : \"0abf08a8156e9009d9000e3cd4ff34a0a59f752cf83398435e375b8cac971ece\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x74bbccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x74bbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0xbbccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x74bbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push22.json",
    "content": "{\n    \"push22\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push22Filler.json\",\n            \"sourceHash\" : \"e4086c43a883aba2edaa929e238d346bdfbb26807ec8cbc846584b2b9efe3015\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x75aabbccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x75aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0xaabbccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x75aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push23.json",
    "content": "{\n    \"push23\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push23Filler.json\",\n            \"sourceHash\" : \"c9c1a082ed275dceb0b1d5e66dc9e02bf983c8066aa2f703409131550ce818f3\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7699aabbccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7699aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x99aabbccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7699aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push24.json",
    "content": "{\n    \"push24\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push24Filler.json\",\n            \"sourceHash\" : \"5b4d98c3f4c67c360b2aae0d300c947470dafa9ce2545891725387310fe0c2b6\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x8899aabbccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push25.json",
    "content": "{\n    \"push25\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push25Filler.json\",\n            \"sourceHash\" : \"78b2fb30a16bb58147d99ef1f6fdba16fe5f403cb52aea760eb6d5a813f478cb\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x78778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x78778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x778899aabbccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x78778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push26.json",
    "content": "{\n    \"push26\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push26Filler.json\",\n            \"sourceHash\" : \"b29629f6a45374bd27c145ad45c4e9dd63aee283f706bf35ccb98cb57d8f4615\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7966778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7966778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x66778899aabbccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7966778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push27.json",
    "content": "{\n    \"push27\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push27Filler.json\",\n            \"sourceHash\" : \"33e85a89072e1d3b1b84e66fbe5b42a77509d046a6edb8a75e66caf16d7b8c8a\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7a5566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7a5566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x5566778899aabbccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7a5566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push28.json",
    "content": "{\n    \"push28\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push28Filler.json\",\n            \"sourceHash\" : \"e5ce3ec9a80d778187ca40662e6c4b406a70bb9dcf472f807f270b163c31be50\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7b445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7b445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x445566778899aabbccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7b445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push29.json",
    "content": "{\n    \"push29\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push29Filler.json\",\n            \"sourceHash\" : \"1ef57214acc4761163e6aebfecd7934a10f2c37e7ad0f0ffcec4896c11986861\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7c33445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7c33445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x33445566778899aabbccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7c33445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push3.json",
    "content": "{\n    \"push3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push3Filler.json\",\n            \"sourceHash\" : \"20a168ac86bdd2d3db0921329d4f82421261f0b9d91342d49f079cdc4f07b519\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x62ddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x62ddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0xddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x62ddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push30.json",
    "content": "{\n    \"push30\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push30Filler.json\",\n            \"sourceHash\" : \"a50547b1b97d5b147e6ff053f126c0741759f6f8f2f8e242d4b97068923f0b1e\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7d2233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7d2233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x2233445566778899aabbccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7d2233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push31.json",
    "content": "{\n    \"push31\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push31Filler.json\",\n            \"sourceHash\" : \"2200ea0b0c9cd7781b9647a0082848bc70691fadb5bbc0e6286c39b83191e4fe\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7e112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7e112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x112233445566778899aabbccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7e112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32.json",
    "content": "{\n    \"push32\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push32Filler.json\",\n            \"sourceHash\" : \"c43c12c1b4e0a444bf3811410b4d0f830096d44fda3c08a4d62337a585505b81\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32AndSuicide.json",
    "content": "{\n    \"push32AndSuicide\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push32AndSuicideFiller.json\",\n            \"sourceHash\" : \"af183885a76f539a582fdea8b5e208af8bb8a7eeee650fc577c7bbe08e7dd573\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fff10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01869d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0xbbccddeeff00112233445566778899aabbccddee\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fff10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32FillUpInputWithZerosAtTheEnd.json",
    "content": "{\n    \"push32FillUpInputWithZerosAtTheEnd\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push32FillUpInputWithZerosAtTheEndFiller.json\",\n            \"sourceHash\" : \"d9030acc29449af0afca2ae316049618bd5341cbb9199229cf7d32d1e8a69cae\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fff10112233445566778899aabbccddeeff00112233445566778899aabbccdd\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01869d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fff10112233445566778899aabbccddeeff00112233445566778899aabbccdd\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fff10112233445566778899aabbccddeeff00112233445566778899aabbccdd\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32Undefined.json",
    "content": "{\n    \"push32Undefined\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push32UndefinedFiller.json\",\n            \"sourceHash\" : \"4785045efbe6fd8cda777fbefd472c6a59f5ff2e9ec58857da3630eba0301880\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7f010203600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01869d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f010203600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f010203600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32Undefined2.json",
    "content": "{\n    \"push32Undefined2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push32Undefined2Filler.json\",\n            \"sourceHash\" : \"82f94221f2d543097751ecc6b8a89b5b52041ebd868d2059bf7e684eed45e4f2\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7f0102030000000000000000000000000000000000000000000000000000000000600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f0102030000000000000000000000000000000000000000000000000000000000600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x0102030000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f0102030000000000000000000000000000000000000000000000000000000000600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push32Undefined3.json",
    "content": "{\n    \"push32Undefined3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push32Undefined3Filler.json\",\n            \"sourceHash\" : \"530f8de32e0ad870380534ff33c3ca7b86401391b64d1c33affa28021a531233\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7f\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01869d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push33.json",
    "content": "{\n    \"push33\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push33Filler.json\",\n            \"sourceHash\" : \"ea8cc586ff9dfaac550e6e2709d2ab87f36589938fb684462db713390b9e57eb\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60656107d26204a0c763026921f4640bc5588eb165372d0f1dca6e661ba1d901961c71670c55f7bc23038e3868056bc75e2d630fffff69021e19e0c9bab24000016a085d1c6e8050f0ea1c71bd6b0688be36543f3c36e638e37a6c03d41f73d55d0d482ae55555376dc76810d0fe03c91964d31c71c6f46e615dd0360c07d931663b14e38e38b16f2da3f99955a3adcf27ebb1caaaaaaa6e7014ccba6a8bb1ed35bd86bf065c71c71c2b7109491c5d4781b79c9009de6bfb8e38e38de8720414a0f6fdec81304d4c563e740bffffffffa573118427b3b4a05bc8a8a4de8459868000000000017406eb15e7331e727940d4ac54b7cdca1c71c71c71bd750567a91c9fefc96ebaa626a22f98c5e638e38e38e37a76032abd16c5b68006e15d5aa307e383f4e55555555555377701a6427bdc4f0d58eab5f48a3ec67f64e21c71c71c71c6f478080dd0a0c9b9ff2c2a0c740b06853a0a980ee38e38e38e38b17903c679cb5e8f2f9cb3b5d6652b0e7334f746faaaaaaaaaaaaa6e7a01b873815917ebb2bf3b890a1af495d6235bae3c71c71c71c71c2b7b07ae4cca96e1a55dfa49c85ad3c3e60e426b92fb8e38e38e38e38de87c036018bf074e292bcc7d6c8bea0f9699443046178bffffffffffffffa57d0e7d34c64a9c85d4460dbbca87196b61618a4bd2168000000000000000017e05b901f48a5b994d6572502bc4ea43140486666416aa1c71c71c71c71c71bd7f047889870c178fc477414ea231d70467a388fffe31b4e638e38e38e38e38e37a\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x20\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60656107d26204a0c763026921f4640bc5588eb165372d0f1dca6e661ba1d901961c71670c55f7bc23038e3868056bc75e2d630fffff69021e19e0c9bab24000016a085d1c6e8050f0ea1c71bd6b0688be36543f3c36e638e37a6c03d41f73d55d0d482ae55555376dc76810d0fe03c91964d31c71c6f46e615dd0360c07d931663b14e38e38b16f2da3f99955a3adcf27ebb1caaaaaaa6e7014ccba6a8bb1ed35bd86bf065c71c71c2b7109491c5d4781b79c9009de6bfb8e38e38de8720414a0f6fdec81304d4c563e740bffffffffa573118427b3b4a05bc8a8a4de8459868000000000017406eb15e7331e727940d4ac54b7cdca1c71c71c71bd750567a91c9fefc96ebaa626a22f98c5e638e38e38e37a76032abd16c5b68006e15d5aa307e383f4e55555555555377701a6427bdc4f0d58eab5f48a3ec67f64e21c71c71c71c6f478080dd0a0c9b9ff2c2a0c740b06853a0a980ee38e38e38e38b17903c679cb5e8f2f9cb3b5d6652b0e7334f746faaaaaaaaaaaaa6e7a01b873815917ebb2bf3b890a1af495d6235bae3c71c71c71c71c2b7b07ae4cca96e1a55dfa49c85ad3c3e60e426b92fb8e38e38e38e38de87c036018bf074e292bcc7d6c8bea0f9699443046178bffffffffffffffa57d0e7d34c64a9c85d4460dbbca87196b61618a4bd2168000000000000000017e05b901f48a5b994d6572502bc4ea43140486666416aa1c71c71c71c71c71bd7f047889870c178fc477414ea231d70467a388fffe31b4e638e38e38e38e38e37a\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push4.json",
    "content": "{\n    \"push4\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push4Filler.json\",\n            \"sourceHash\" : \"5a3832a8b7f6e3a6c995c246489601cebfde0a3b04378909ded6427608cf6f75\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x63ccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x63ccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0xccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x63ccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push5.json",
    "content": "{\n    \"push5\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push5Filler.json\",\n            \"sourceHash\" : \"f2293a566cf50f05c0e44a6026d1cdb43b252f6a2ebbab995fcf5370e7950419\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x64bbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x64bbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0xbbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x64bbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push6.json",
    "content": "{\n    \"push6\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push6Filler.json\",\n            \"sourceHash\" : \"ce3dba7bfdc96d65e81e5861ce747a9ea16ca2ea702f770ef4e1ca8be634dc46\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x65aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x65aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0xaabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x65aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push7.json",
    "content": "{\n    \"push7\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push7Filler.json\",\n            \"sourceHash\" : \"c89c898f0e46b4eeb7856bfc2e7825a94d2d30c6a564047fc46506607bf9f0b2\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6699aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6699aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x99aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6699aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push8.json",
    "content": "{\n    \"push8\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push8Filler.json\",\n            \"sourceHash\" : \"25eb3adbc75d5ea4259d81c0fdce4047a33407f0a09c142217699bd5cb391f61\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x678899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x678899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x8899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x678899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/push9.json",
    "content": "{\n    \"push9\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/push9Filler.json\",\n            \"sourceHash\" : \"c2a9a74283bbf2502f661e2834bbde716e044893d73b382c37201ab70c98a56b\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x68778899aabbccddeeff600355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01387a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x68778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x778899aabbccddeeff\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x68778899aabbccddeeff600355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap1.json",
    "content": "{\n    \"swap1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap1Filler.json\",\n            \"sourceHash\" : \"573b3b4cbf04b6f052a4578898713e320d9141607d40f043270e54e67ad5822c\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013877\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff\" : \"0x03\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap10.json",
    "content": "{\n    \"swap10\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap10Filler.json\",\n            \"sourceHash\" : \"27210b84bae9ed1b441071ca34af233dbaf3e8b82f9fba0222775b29bd5760eb\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600a60096008600760066005600460036002600160039955\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01385c\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a60096008600760066005600460036002600160039955\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x0a\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a60096008600760066005600460036002600160039955\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap11.json",
    "content": "{\n    \"swap11\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap11Filler.json\",\n            \"sourceHash\" : \"701ff096656063385777a56582f56ab24c54976934d14b7c5dd5bd7f3b85be23\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600b600a60096008600760066005600460036002600160039a55\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013859\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600b600a60096008600760066005600460036002600160039a55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x0b\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600b600a60096008600760066005600460036002600160039a55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap12.json",
    "content": "{\n    \"swap12\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap12Filler.json\",\n            \"sourceHash\" : \"c29bc2645f826a7aa91f3e1086bc1962d76c5cbb34ddc8e816b26a45d413d3ab\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600c600b600a60096008600760066005600460036002600160039b55\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013856\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600c600b600a60096008600760066005600460036002600160039b55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x0c\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600c600b600a60096008600760066005600460036002600160039b55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap13.json",
    "content": "{\n    \"swap13\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap13Filler.json\",\n            \"sourceHash\" : \"7ac35225656e1a5eeea3fdc46501a8ba14175c8736f7eda814cac12357e6cab2\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600d600c600b600a60096008600760066005600460036002600160039c55\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013853\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600d600c600b600a60096008600760066005600460036002600160039c55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x0d\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600d600c600b600a60096008600760066005600460036002600160039c55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap14.json",
    "content": "{\n    \"swap14\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap14Filler.json\",\n            \"sourceHash\" : \"5df386c790b19a45d07bbf67f06ecf00a9edd97883f421f84c459388c74f8add\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600e600d600c600b600a60096008600760066005600460036002600160039d55\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013850\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600e600d600c600b600a60096008600760066005600460036002600160039d55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x0e\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600e600d600c600b600a60096008600760066005600460036002600160039d55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap15.json",
    "content": "{\n    \"swap15\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap15Filler.json\",\n            \"sourceHash\" : \"6f6977d7e7f4b57787f5577b7d2179e8f4d3882293dcea6e868f1da471d3749f\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600f600e600d600c600b600a60096008600760066005600460036002600160039e55\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01384d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600f600e600d600c600b600a60096008600760066005600460036002600160039e55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x0f\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600f600e600d600c600b600a60096008600760066005600460036002600160039e55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap16.json",
    "content": "{\n    \"swap16\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap16Filler.json\",\n            \"sourceHash\" : \"389d2be8dbbc4585847be9b5a678a565899d4fac6018d1f6200ed091e99ce7fd\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6010600f600e600d600c600b600a60096008600760066005600460036002600160039f55\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01384a\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6010600f600e600d600c600b600a60096008600760066005600460036002600160039f55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x10\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6010600f600e600d600c600b600a60096008600760066005600460036002600160039f55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap2.json",
    "content": "{\n    \"swap2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap2Filler.json\",\n            \"sourceHash\" : \"75997b5204913e930c40cdf804c1be567f528b939529e86530e8c4cf3600af18\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6002600160039155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013874\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6002600160039155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x02\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6002600160039155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap2error.json",
    "content": "{\n    \"swap2error\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap2errorFiller.json\",\n            \"sourceHash\" : \"01ebb21f32f2d7dd1a2113138f594314c49fa4c7af00e0a1c333492b81921135\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039155\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7f10112233445566778899aabbccddeeff00112233445566778899aabbccddeeff60039155\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap3.json",
    "content": "{\n    \"swap3\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap3Filler.json\",\n            \"sourceHash\" : \"0d62cd3e39f052b9154ea37ec43cf9ba110035ffdcb4e4b0d766aea8bb2b2cb1\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60036002600160039255\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013871\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60036002600160039255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x03\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60036002600160039255\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap4.json",
    "content": "{\n    \"swap4\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap4Filler.json\",\n            \"sourceHash\" : \"27f78dcff6d58f67504046d267f0568c976d1e5a85ed6da2373eafa24bfbe47c\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600460036002600160039355\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600460036002600160039355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x04\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600460036002600160039355\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap5.json",
    "content": "{\n    \"swap5\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap5Filler.json\",\n            \"sourceHash\" : \"bcb9c8c7ac639affe784b6987c77d9249326db0799e1e861ad03641d9a77cef3\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6005600460036002600160039455\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01386b\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6005600460036002600160039455\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x05\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6005600460036002600160039455\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap6.json",
    "content": "{\n    \"swap6\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap6Filler.json\",\n            \"sourceHash\" : \"1bc51662e33ac34a79297262ee86f8b8e7cab89949abf037fc22f85ee08fdada\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60066005600460036002600160039555\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013868\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60066005600460036002600160039555\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x06\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60066005600460036002600160039555\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap7.json",
    "content": "{\n    \"swap7\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap7Filler.json\",\n            \"sourceHash\" : \"8eaa2a76ec6d47d5bf7c4b49c8c1db384fe29355ced056e1c1330b1669f27b3c\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600760066005600460036002600160039655\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013865\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600760066005600460036002600160039655\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x07\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600760066005600460036002600160039655\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap8.json",
    "content": "{\n    \"swap8\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap8Filler.json\",\n            \"sourceHash\" : \"e7d09fcfe3e8e687d084b95524fd4ff5aedf69ee2797e33930e3e9fc45e57742\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6008600760066005600460036002600160039755\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013862\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6008600760066005600460036002600160039755\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x08\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6008600760066005600460036002600160039755\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swap9.json",
    "content": "{\n    \"swap9\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swap9Filler.json\",\n            \"sourceHash\" : \"f63ce540948be968c775c020f379e675d4a0f2a67cd6d22dff2490bf023ae796\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60096008600760066005600460036002600160039855\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01385f\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60096008600760066005600460036002600160039855\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x09\" : \"0x01\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x60096008600760066005600460036002600160039855\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmPushDupSwapTest/swapjump1.json",
    "content": "{\n    \"swapjump1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.10.6+commit.6c09e32c.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmPushDupSwapTest/swapjump1Filler.json\",\n            \"sourceHash\" : \"33bdfa966236aac6be6a6a7ac64600ab63f3d6c646163f4c2f1ab1c578e0e819\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x0186a0\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmRandomTest/201503102320PYTHON.json",
    "content": "{\n    \"201503102320PYTHON\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmRandomTest/201503102320PYTHONFiller.json\",\n            \"sourceHash\" : \"38aa9ba7f7836987852734619b0192d42434bd7106da17663d5fc85d81a1e6cf\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x012c\",\n            \"currentTimestamp\" : \"0x02\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x434342444244454597\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x2710\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x434342444244454597\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmRandomTest/201503110206PYTHON.json",
    "content": "{\n    \"201503110206PYTHON\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmRandomTest/201503110206PYTHONFiller.json\",\n            \"sourceHash\" : \"ad34ff6291ab537633ab5e7163537b24617cc4edb2f45eac65bed9d2c009cfc3\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x012c\",\n            \"currentTimestamp\" : \"0x02\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x4045404145454441343987ff3735043055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x2710\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x4045404145454441343987ff3735043055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmRandomTest/201503110219PYTHON.json",
    "content": "{\n    \"201503110219PYTHON\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmRandomTest/201503110219PYTHONFiller.json\",\n            \"sourceHash\" : \"93dd23cbf213b07ac96a1fdfc826f41475452fea6da2e4f8d3f5d206e9a1adb9\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x012c\",\n            \"currentTimestamp\" : \"0x02\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x4040459143404144809759886d608f\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x2710\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x4040459143404144809759886d608f\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmRandomTest/201503110346PYTHON_PUSH24.json",
    "content": "{\n    \"201503110346PYTHON_PUSH24\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmRandomTest/201503110346PYTHON_PUSH24Filler.json\",\n            \"sourceHash\" : \"953cb389f468c0d45697c57895679d7675ab43de963ad34a0ee547b8d27d10c8\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x012c\",\n            \"currentTimestamp\" : \"0x02\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7745414245403745f31387900a8d55\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x2710\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x270d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x7745414245403745f31387900a8d55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x7745414245403745f31387900a8d55\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmRandomTest/201503111844PYTHON.json",
    "content": "{\n    \"201503111844PYTHON\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmRandomTest/201503111844PYTHONFiller.json\",\n            \"sourceHash\" : \"a8049871a173837bf8fbfab3352baf9bb9e33d0ffa2bd20ba6246a70d9c1b165\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x012c\",\n            \"currentTimestamp\" : \"0x02\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x65424555\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x2710\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x270d\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x65424555\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x65424555\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmRandomTest/201503112218PYTHON.json",
    "content": "{\n    \"201503112218PYTHON\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmRandomTest/201503112218PYTHONFiller.json\",\n            \"sourceHash\" : \"6fc205d30fd7493b6e120e18c91e1e41f6fe334b94abadbac37d2817066ebccb\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x012c\",\n            \"currentTimestamp\" : \"0x02\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x4041\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x2710\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x0de0b6b3a7640000\",\n                \"code\" : \"0x4041\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_0.json",
    "content": "{\n    \"sha3_0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_0Filler.json\",\n            \"sourceHash\" : \"843009e4e97d7dd905578ea884db6d80c07f57d58679ec181dc761e1e51ae035\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6000600020600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x174876e800\",\n            \"gasPrice\" : \"0x3b9aca00\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x17487699b9\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6000600020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6000600020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_1.json",
    "content": "{\n    \"sha3_1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_1Filler.json\",\n            \"sourceHash\" : \"5f786aded76570c96466f5a4c4632a5a0b362ffc1e4124667cdb1e9328d1d81d\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6005600420600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013850\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6005600420600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xc41589e7559804ea4a2080dad19d876a024ccb05117835447d72ce08c1d020ec\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6005600420600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_2.json",
    "content": "{\n    \"sha3_2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_2Filler.json\",\n            \"sourceHash\" : \"bb3f59dc995c834eaf315b4819900c30ba4e97ef60163aed05946c70e841691f\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600a600a20600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x013850\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a600a20600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x6bd2dd6bd408cbee33429358bf24fdc64612fbf8b1b4db604518f40ffd34b607\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x600a600a20600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_3oog.json",
    "content": "{\n    \"sha3_3oog\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_3Filler.json\",\n            \"sourceHash\" : \"1f474f7dac8971615e641354d809db332975d1ea5ca589d855fb02a1da559033\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x620fffff6103e820600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x620fffff6103e820600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_4oog.json",
    "content": "{\n    \"sha3_4oog\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_4Filler.json\",\n            \"sourceHash\" : \"100da75ff0b63159ca86aa4ef7457a956027af5c6c1ed1f0fa894aaa63849887\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6064640fffffffff20600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6064640fffffffff20600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_5oog.json",
    "content": "{\n    \"sha3_5oog\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_5Filler.json\",\n            \"sourceHash\" : \"066bcf3a8e9e7b4c15ec2240c8e1bb0d53de0230c76989e21e4b6aaac83f577d\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x640fffffffff61271020600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x640fffffffff61271020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_6oog.json",
    "content": "{\n    \"sha3_6oog\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_6Filler.json\",\n            \"sourceHash\" : \"c360c6583bf965674d153f11c243c1e0807e95e99bc9bcb684a7ad2c7155dd40\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigOffset2.json",
    "content": "{\n    \"sha3_bigOffset2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_bigOffset2Filler.json\",\n            \"sourceHash\" : \"2bf8d14886b1001b266c29bd9f9e764f7e6965e851bfe1440e536735fca993dc\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6002630100000020600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0100000000\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n        },\n        \"gas\" : \"0xdfe7a9b0\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x6002630100000020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x54a8c0ab653c15bfb48b47fd011ba2b9617af01cb45cab344acd57c924d56798\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x6002630100000020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigOffsetoog.json",
    "content": "{\n    \"sha3_bigOffsetoog\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_bigOffsetFiller.json\",\n            \"sourceHash\" : \"1ae2cdfa2e3ab1cac89d8b3d535c3ee50601ebc6098fdbddadca74980eec6382\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60027e0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x010000000000\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x60027e0fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_bigSizeoog.json",
    "content": "{\n    \"sha3_bigSizeoog\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_bigSizeFiller.json\",\n            \"sourceHash\" : \"571bfd9a15c6b0e317f96a92f745aee1d800aa4486c1a101b3e016120ffb5415\"\n        },\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x010000000000\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff7effffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff20600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeNoQuadraticCost31.json",
    "content": "{\n    \"sha3_memSizeNoQuadraticCost31\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_memSizeNoQuadraticCost31Filler.json\",\n            \"sourceHash\" : \"04553284981ef7338bdeac0e029652313a2643169833e386ca34bfa3d5e5942a\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016103c020600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0100000000\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n        },\n        \"gas\" : \"0xffffb155\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x60016103c020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x60016103c020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost32.json",
    "content": "{\n    \"sha3_memSizeQuadraticCost32\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost32Filler.json\",\n            \"sourceHash\" : \"70f68e0328222cc2c995bf932f2f8f65f5d4c7e9f040a51bbf4dae3cad9110cf\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016103e020600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0100000000\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n        },\n        \"gas\" : \"0xffffb151\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x60016103e020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x60016103e020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost32_zeroSize.json",
    "content": "{\n    \"sha3_memSizeQuadraticCost32_zeroSize\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost32_zeroSizeFiller.json\",\n            \"sourceHash\" : \"96094eee3e3fcd478fe3780ff053e64bf5391616bfdc6c2017bf12dcc5d30366\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600061040020600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0100000000\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n        },\n        \"gas\" : \"0xffffb1b9\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x600061040020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xc5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x600061040020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost33.json",
    "content": "{\n    \"sha3_memSizeQuadraticCost33\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost33Filler.json\",\n            \"sourceHash\" : \"2fc9e00a7759c4271b6897b285ae437f6484281e9113e82a8252afbe16e85841\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600161040020600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0100000000\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n        },\n        \"gas\" : \"0xffffb14e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x600161040020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x600161040020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost63.json",
    "content": "{\n    \"sha3_memSizeQuadraticCost63\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost63Filler.json\",\n            \"sourceHash\" : \"b81dd9fc94929d24f6a06dac81abb0099b969086ecf83326ecb4d6c98fc36f39\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016107c020600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0100000000\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n        },\n        \"gas\" : \"0xffffb0ef\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x60016107c020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x60016107c020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost64.json",
    "content": "{\n    \"sha3_memSizeQuadraticCost64\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost64Filler.json\",\n            \"sourceHash\" : \"9f1ae20cc7b481e84732b835af1d284c815d79a470ceb1094f0cf9e765a64b8d\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60016107e020600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0100000000\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n        },\n        \"gas\" : \"0xffffb0eb\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x60016107e020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x60016107e020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost64_2.json",
    "content": "{\n    \"sha3_memSizeQuadraticCost64_2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost64_2Filler.json\",\n            \"sourceHash\" : \"4d313aaddd74f092eae5089cce1aef3aadc74b019f617fdf24acedd8fb26300b\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x60206107e020600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0100000000\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n        },\n        \"gas\" : \"0xffffb0eb\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x60206107e020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x290decd9548b62a8d60345a988386fc84ba6bc95484008f6362f93160ef3e563\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x60206107e020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSha3Test/sha3_memSizeQuadraticCost65.json",
    "content": "{\n    \"sha3_memSizeQuadraticCost65\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"cpp-1.3.0+commit.6e0ce939.Linux.g++\",\n            \"lllcversion\" : \"Version: 0.4.18-develop.2017.9.25+commit.a72237f2.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSha3Test/sha3_memSizeQuadraticCost65Filler.json\",\n            \"sourceHash\" : \"28d6ebfb32dd2c00c629fe373fe58fd83466484d6022cd476ca63981ffaa950a\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x600161080020600055\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0100000000\",\n            \"gasPrice\" : \"0x01\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"\n        },\n        \"gas\" : \"0xffffb0e8\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x600161080020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0xbc36789e7a1e281436464229828f817d6612f7b477d66591ff96a9e064bcc98a\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\",\n                \"code\" : \"0x600161080020600055\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSystemOperations/TestNameRegistrator.json",
    "content": "{\n    \"TestNameRegistrator\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSystemOperations/TestNameRegistratorFiller.json\",\n            \"sourceHash\" : \"7e0e4bcbcbe8bcaf9a8535e65d4c6665db752910953b5eafc63da8f7cdff20b7\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x6000355415600957005b60203560003555\",\n            \"data\" : \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffafffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01382b\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6000355415600957005b60203560003555\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa\" : \"0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffa\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x6000355415600957005b60203560003555\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSystemOperations/return0.json",
    "content": "{\n    \"return0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSystemOperations/return0Filler.json\",\n            \"sourceHash\" : \"1cd2b9480f1f5bdd82e8026b6342008ef84d318c3f9f173eae7d09e50eaf26b3\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x989680\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"caller\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"code\" : \"0x603760005360005160005560016000f3\",\n            \"data\" : \"0xaa\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"value\" : \"0x17\"\n        },\n        \"gas\" : \"0x013865\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x37\",\n        \"post\" : {\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x17\",\n                \"code\" : \"0x603760005360005160005560016000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x3700000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x17\",\n                \"code\" : \"0x603760005360005160005560016000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSystemOperations/return1.json",
    "content": "{\n    \"return1\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSystemOperations/return1Filler.json\",\n            \"sourceHash\" : \"5cd716a8e8d460b10e0dc1b3d5b6394f0c388e0e36246bf124478b0cb86a1f76\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x989680\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"caller\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"code\" : \"0x603760005360005160005560026000f3\",\n            \"data\" : \"0xaa\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"value\" : \"0x17\"\n        },\n        \"gas\" : \"0x013865\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x3700\",\n        \"post\" : {\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x17\",\n                \"code\" : \"0x603760005360005160005560026000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x3700000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x17\",\n                \"code\" : \"0x603760005360005160005560026000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSystemOperations/return2.json",
    "content": "{\n    \"return2\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSystemOperations/return2Filler.json\",\n            \"sourceHash\" : \"4181cbf262c1dc2cdc186e007ec6c13466bd031b190b07874b1177a00717deeb\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x989680\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"caller\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"code\" : \"0x603760005360005160005560216000f3\",\n            \"data\" : \"0xaa\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"value\" : \"0x17\"\n        },\n        \"gas\" : \"0x013862\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x370000000000000000000000000000000000000000000000000000000000000000\",\n        \"post\" : {\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x17\",\n                \"code\" : \"0x603760005360005160005560216000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                    \"0x00\" : \"0x3700000000000000000000000000000000000000000000000000000000000000\"\n                }\n            }\n        },\n        \"pre\" : {\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x17\",\n                \"code\" : \"0x603760005360005160005560216000f3\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSystemOperations/suicide0.json",
    "content": "{\n    \"suicide0\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSystemOperations/suicide0Filler.json\",\n            \"sourceHash\" : \"56c8766e8a1687dfe807b1e8f2d0454267f432c7e3035ff5fa9c27a2d594739d\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x989680\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x33ff\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x03e8\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0186a0\"\n        },\n        \"gas\" : \"0x03e6\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x152d02c7e14af6800017\",\n                \"code\" : \"0x6000355415600957005b60203560003555\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x33ff\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            },\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x0186a0\",\n                \"code\" : \"0x6000355415600957005b60203560003555\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSystemOperations/suicideNotExistingAccount.json",
    "content": "{\n    \"suicideNotExistingAccount\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSystemOperations/suicideNotExistingAccountFiller.json\",\n            \"sourceHash\" : \"ba450a40efb62a9fb6e16e3bced0afde8d0b08b9c0f78979f35fc45b9de72816\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x989680\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x73aa1722f3947def4cf144679da39c4c32bdc35681ff\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x03e8\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0186a0\"\n        },\n        \"gas\" : \"0x03e5\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0xaa1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            },\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x17\",\n                \"code\" : \"0x6000355415600957005b60203560003555\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x73aa1722f3947def4cf144679da39c4c32bdc35681ff\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            },\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x0186a0\",\n                \"code\" : \"0x6000355415600957005b60203560003555\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmSystemOperations/suicideSendEtherToMe.json",
    "content": "{\n    \"suicideSendEtherToMe\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmSystemOperations/suicideSendEtherToMeFiller.json\",\n            \"sourceHash\" : \"0cf005812e9c99dc87bdd8463a9849a0164a9e02b3d09eaab228267d6c8c703e\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x989680\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x30ff\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x03e8\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0186a0\"\n        },\n        \"gas\" : \"0x03e6\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x17\",\n                \"code\" : \"0x6000355415600957005b60203560003555\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x30ff\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            },\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x0186a0\",\n                \"code\" : \"0x6000355415600957005b60203560003555\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}\n"
  },
  {
    "path": "tests/laser/evm_testsuite/VMTests/vmTests/suicide.json",
    "content": "{\n    \"suicide\" : {\n        \"_info\" : {\n            \"comment\" : \"\",\n            \"filledwith\" : \"testeth 1.5.0.dev2-52+commit.d419e0a2\",\n            \"lllcversion\" : \"Version: 0.4.26-develop.2018.9.19+commit.785cbf40.Linux.g++\",\n            \"source\" : \"src/VMTestsFiller/vmTests/suicideFiller.json\",\n            \"sourceHash\" : \"4622c577440f9db4b3954a1de60bf2fac55886dcb0ec4ecaf906c25bc77372e7\"\n        },\n        \"callcreates\" : [\n        ],\n        \"env\" : {\n            \"currentCoinbase\" : \"0x2adc25665018aa1fe0e6bc666dac8fc2697ff9ba\",\n            \"currentDifficulty\" : \"0x0100\",\n            \"currentGasLimit\" : \"0x0f4240\",\n            \"currentNumber\" : \"0x00\",\n            \"currentTimestamp\" : \"0x01\"\n        },\n        \"exec\" : {\n            \"address\" : \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\",\n            \"caller\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"code\" : \"0x33ff\",\n            \"data\" : \"0x\",\n            \"gas\" : \"0x0186a0\",\n            \"gasPrice\" : \"0x5af3107a4000\",\n            \"origin\" : \"0xcd1722f3947def4cf144679da39c4c32bdc35681\",\n            \"value\" : \"0x0de0b6b3a7640000\"\n        },\n        \"gas\" : \"0x01869e\",\n        \"logs\" : \"0x1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347\",\n        \"out\" : \"0x\",\n        \"post\" : {\n            \"0xcd1722f3947def4cf144679da39c4c32bdc35681\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        },\n        \"pre\" : {\n            \"0x0f572e5295c57f15886f9b263e2f6d2d6c7b5ec6\" : {\n                \"balance\" : \"0x152d02c7e14af6800000\",\n                \"code\" : \"0x33ff\",\n                \"nonce\" : \"0x00\",\n                \"storage\" : {\n                }\n            }\n        }\n    }\n}"
  },
  {
    "path": "tests/laser/evm_testsuite/evm_test.py",
    "content": "import binascii\nimport json\nfrom datetime import datetime\nfrom pathlib import Path\n\nimport pytest\n\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.state.account import Account\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.ethereum.time_handler import time_handler\nfrom mythril.laser.ethereum.transaction.concolic import execute_message_call\nfrom mythril.laser.smt import Expression, symbol_factory\nfrom mythril.support.support_args import args\n\nevm_test_dir = Path(__file__).parent / \"VMTests\"\n\n\ntest_types = [\n    \"vmArithmeticTest\",\n    \"vmBitwiseLogicOperation\",\n    \"vmEnvironmentalInfo\",\n    \"vmPushDupSwapTest\",\n    \"vmTests\",\n    \"vmSha3Test\",\n    \"vmSystemOperations\",\n    \"vmRandomTest\",\n    \"vmIOandFlowOperations\",\n]\n\ntests_with_gas_support = [\"gas0\", \"gas1\"]\ntests_with_block_number_support = [\n    \"BlockNumberDynamicJumpi0\",\n    \"BlockNumberDynamicJumpi1\",\n    \"BlockNumberDynamicJump0_jumpdest2\",\n    \"DynamicJumpPathologicalTest0\",\n    \"BlockNumberDynamicJumpifInsidePushWithJumpDest\",\n    \"BlockNumberDynamicJumpiAfterStop\",\n    \"BlockNumberDynamicJumpifInsidePushWithoutJumpDest\",\n    \"BlockNumberDynamicJump0_jumpdest0\",\n    \"BlockNumberDynamicJumpi1_jumpdest\",\n    \"BlockNumberDynamicJumpiOutsideBoundary\",\n    \"DynamicJumpJD_DependsOnJumps1\",\n]\ntests_with_log_support = [\"log1MemExp\"]\ntests_not_relevent = [\n    \"loop_stacklimit_1020\",  # We won't be looping till 1020 as we have a max_depth\n    \"loop_stacklimit_1021\",\n]\ntests_to_resolve = [\"jumpTo1InstructionafterJump\", \"sstore_load_2\", \"jumpi_at_the_end\"]\nignored_test_names = (\n    tests_with_gas_support\n    + tests_with_log_support\n    + tests_with_block_number_support\n    + tests_with_block_number_support\n    + tests_not_relevent\n    + tests_to_resolve\n)\n\n\ndef load_test_data(designations):\n    \"\"\"\n\n    :param designations:\n    :return:\n    \"\"\"\n    return_data = []\n    for designation in designations:\n        for file_reference in (evm_test_dir / designation).iterdir():\n            with file_reference.open() as file:\n                top_level = json.load(file)\n\n                for test_name, data in top_level.items():\n                    pre_condition = data[\"pre\"]\n\n                    action = data[\"exec\"]\n                    gas_before = int(action[\"gas\"], 16)\n                    gas_after = data.get(\"gas\")\n                    gas_used = (\n                        gas_before - int(gas_after, 16)\n                        if gas_after is not None\n                        else None\n                    )\n\n                    post_condition = data.get(\"post\", {})\n                    environment = data.get(\"env\")\n\n                    return_data.append(\n                        (\n                            test_name,\n                            environment,\n                            pre_condition,\n                            action,\n                            gas_used,\n                            post_condition,\n                        )\n                    )\n\n    return return_data\n\n\n@pytest.mark.parametrize(\n    \"test_name, environment, pre_condition, action, gas_used, post_condition\",\n    load_test_data(test_types),\n)\ndef test_vmtest(\n    test_name: str,\n    environment: dict,\n    pre_condition: dict,\n    action: dict,\n    gas_used: int,\n    post_condition: dict,\n) -> None:\n    # Arrange\n    if test_name in ignored_test_names:\n        return\n    world_state = WorldState()\n    args.unconstrained_storage = False\n    args.pruning_factor = 1\n    for address, details in pre_condition.items():\n        account = Account(address, concrete_storage=True)\n        account.code = Disassembly(details[\"code\"][2:])\n        account.nonce = int(details[\"nonce\"], 16)\n        for key, value in details[\"storage\"].items():\n            key_bitvec = symbol_factory.BitVecVal(int(key, 16), 256)\n            account.storage[key_bitvec] = symbol_factory.BitVecVal(int(value, 16), 256)\n\n        world_state.put_account(account)\n        account.set_balance(int(details[\"balance\"], 16))\n\n    time_handler.start_execution(10000)\n    laser_evm = LaserEVM()\n    laser_evm.open_states = [world_state]\n    # Act\n    laser_evm.time = datetime.now()\n\n    final_states = execute_message_call(\n        laser_evm,\n        callee_address=symbol_factory.BitVecVal(int(action[\"address\"], 16), 256),\n        caller_address=symbol_factory.BitVecVal(int(action[\"caller\"], 16), 256),\n        origin_address=symbol_factory.BitVecVal(int(action[\"origin\"], 16), 256),\n        code=action[\"code\"][2:],\n        gas_limit=int(action[\"gas\"], 16),\n        data=binascii.a2b_hex(action[\"data\"][2:]),\n        gas_price=int(action[\"gasPrice\"], 16),\n        value=int(action[\"value\"], 16),\n        track_gas=True,\n    )\n\n    # Assert\n    if gas_used is not None and gas_used < int(environment[\"currentGasLimit\"], 16):\n        # avoid gas usage larger than block gas limit\n        # this currently exceeds our estimations\n        gas_min_max = [\n            (s.mstate.min_gas_used, s.mstate.max_gas_used) for s in final_states\n        ]\n        gas_ranges = [g[0] <= gas_used for g in gas_min_max]\n        assert all(map(lambda g: g[0] <= g[1], gas_min_max))\n        assert any(gas_ranges)\n\n    if post_condition == {}:\n        # no more work to do if error happens or out of gas\n        assert len(laser_evm.open_states) == 0\n    else:\n        assert len(laser_evm.open_states) == 1\n        world_state = laser_evm.open_states[0]\n\n        for address, details in post_condition.items():\n            account = world_state[symbol_factory.BitVecVal(int(address, 16), 256)]\n\n            assert account.nonce == int(details[\"nonce\"], 16)\n            assert account.code.bytecode == details[\"code\"][2:]\n\n            for index, value in details[\"storage\"].items():\n                expected = int(value, 16)\n                actual = account.storage[symbol_factory.BitVecVal(int(index, 16), 256)]\n                if isinstance(actual, Expression):\n                    actual = actual.value\n                    actual = 1 if actual is True else 0 if actual is False else actual\n                else:\n                    if isinstance(actual, bytes):\n                        actual = int(binascii.b2a_hex(actual), 16)\n                    elif isinstance(actual, str):\n                        actual = int(actual, 16)\n                assert actual == expected\n"
  },
  {
    "path": "tests/laser/keccak_tests.py",
    "content": "import pytest\nimport z3\n\nfrom mythril.laser.ethereum.function_managers import keccak_function_manager\nfrom mythril.laser.smt import Solver, symbol_factory\n\n\n@pytest.mark.parametrize(\n    \"input1, input2, expected\",\n    [\n        (symbol_factory.BitVecVal(100, 8), symbol_factory.BitVecVal(101, 8), z3.unsat),\n        (symbol_factory.BitVecVal(100, 8), symbol_factory.BitVecVal(100, 16), z3.unsat),\n        (symbol_factory.BitVecVal(100, 8), symbol_factory.BitVecVal(100, 8), z3.sat),\n        (\n            symbol_factory.BitVecSym(\"N1\", 256),\n            symbol_factory.BitVecSym(\"N2\", 256),\n            z3.sat,\n        ),\n        (\n            symbol_factory.BitVecVal(100, 256),\n            symbol_factory.BitVecSym(\"N1\", 256),\n            z3.sat,\n        ),\n        (\n            symbol_factory.BitVecVal(100, 8),\n            symbol_factory.BitVecSym(\"N1\", 256),\n            z3.unsat,\n        ),\n    ],\n)\ndef test_keccak_basic(input1, input2, expected):\n    s = Solver()\n    keccak_function_manager.reset()\n    o1 = keccak_function_manager.create_keccak(input1)\n    o2 = keccak_function_manager.create_keccak(input2)\n    s.add(keccak_function_manager.create_conditions())\n\n    s.add(o1 == o2)\n    assert s.check() == expected\n\n\ndef test_keccak_symbol_and_val():\n    \"\"\"\n    check keccak(100) == keccak(n) && n == 10\n    :return:\n    \"\"\"\n    s = Solver()\n    keccak_function_manager.reset()\n    hundred = symbol_factory.BitVecVal(100, 256)\n    n = symbol_factory.BitVecSym(\"n\", 256)\n    o1 = keccak_function_manager.create_keccak(hundred)\n    o2 = keccak_function_manager.create_keccak(n)\n\n    s.add(keccak_function_manager.create_conditions())\n    s.add(o1 == o2)\n    s.add(n == symbol_factory.BitVecVal(10, 256))\n    assert s.check() == z3.unsat\n\n\ndef test_keccak_complex_eq():\n    \"\"\"\n    check for keccak(keccak(b)*2) == keccak(keccak(a)*2) && a != b\n    :return:\n    \"\"\"\n    keccak_function_manager.reset()\n    s = Solver()\n    a = symbol_factory.BitVecSym(\"a\", 160)\n    b = symbol_factory.BitVecSym(\"b\", 160)\n    o1 = keccak_function_manager.create_keccak(a)\n    o2 = keccak_function_manager.create_keccak(b)\n\n    two = symbol_factory.BitVecVal(2, 256)\n    o1 = two * o1\n    o2 = two * o2\n    o1 = keccak_function_manager.create_keccak(o1)\n    o2 = keccak_function_manager.create_keccak(o2)\n\n    s.add(keccak_function_manager.create_conditions())\n    s.add(o1 == o2)\n    s.add(a != b)\n\n    assert s.check() == z3.unsat\n\n\ndef test_keccak_complex_eq2():\n    \"\"\"\n    check for keccak(keccak(b)*2) == keccak(keccak(a)*2)\n    This isn't combined with prev test because incremental solving here requires extra-extra work\n    (solution is literally the opposite of prev one) so it will take forever to solve.\n    :return:\n    \"\"\"\n    keccak_function_manager.reset()\n    s = Solver()\n    a = symbol_factory.BitVecSym(\"a\", 160)\n    b = symbol_factory.BitVecSym(\"b\", 160)\n    o1 = keccak_function_manager.create_keccak(a)\n    o2 = keccak_function_manager.create_keccak(b)\n\n    two = symbol_factory.BitVecVal(2, 256)\n    o1 = two * o1\n    o2 = two * o2\n    o1 = keccak_function_manager.create_keccak(o1)\n    o2 = keccak_function_manager.create_keccak(o2)\n\n    s.add(keccak_function_manager.create_conditions())\n    s.add(o1 == o2)\n\n    assert s.check() == z3.sat\n\n\ndef test_keccak_simple_number():\n    \"\"\"\n    check for keccak(b) == 10\n    :return:\n    \"\"\"\n    keccak_function_manager.reset()\n    s = Solver()\n    a = symbol_factory.BitVecSym(\"a\", 160)\n    ten = symbol_factory.BitVecVal(10, 256)\n    o = keccak_function_manager.create_keccak(a)\n\n    s.add(keccak_function_manager.create_conditions())\n    s.add(ten == o)\n\n    assert s.check() == z3.unsat\n\n\ndef test_keccak_other_num():\n    \"\"\"\n    check keccak(keccak(a)*2) == b\n    :return:\n    \"\"\"\n    keccak_function_manager.reset()\n    s = Solver()\n    a = symbol_factory.BitVecSym(\"a\", 160)\n    b = symbol_factory.BitVecSym(\"b\", 256)\n    o = keccak_function_manager.create_keccak(a)\n    two = symbol_factory.BitVecVal(2, 256)\n    o = two * o\n\n    o = keccak_function_manager.create_keccak(o)\n\n    s.add(keccak_function_manager.create_conditions())\n    s.add(b == o)\n\n    assert s.check() == z3.sat\n"
  },
  {
    "path": "tests/laser/smt/__init__.py",
    "content": ""
  },
  {
    "path": "tests/laser/smt/independece_solver_test.py",
    "content": "import z3\n\nfrom mythril.laser.smt import symbol_factory\nfrom mythril.laser.smt.solver.independence_solver import (\n    DependenceBucket,\n    DependenceMap,\n    IndependenceSolver,\n    _get_expr_variables,\n)\n\n\ndef test_get_expr_variables():\n    # Arrange\n    x = z3.Bool(\"x\")\n    y = z3.BitVec(\"y\", 256)\n    z = z3.BitVec(\"z\", 256)\n    b = z3.BitVec(\"b\", 256)\n    expression = z3.If(x, y, z + b)\n\n    # Act\n    variables = list(map(str, _get_expr_variables(expression)))\n\n    # Assert\n    assert str(x) in variables\n    assert str(y) in variables\n    assert str(z) in variables\n    assert str(b) in variables\n\n\ndef test_get_expr_variables_num():\n    # Arrange\n    b = z3.BitVec(\"b\", 256)\n    expression = b + z3.BitVecVal(2, 256)\n\n    # Act\n    variables = _get_expr_variables(expression)\n\n    # Assert\n    assert [b] == variables\n\n\ndef test_create_bucket():\n    # Arrange\n    x = z3.Bool(\"x\")\n\n    # Act\n    bucket = DependenceBucket([x], [x])\n\n    # Assert\n    assert [x] == bucket.variables\n    assert [x] == bucket.conditions\n\n\ndef test_dependence_map():\n    # Arrange\n    x = z3.BitVec(\"x\", 256)\n    y = z3.BitVec(\"y\", 256)\n    z = z3.BitVec(\"z\", 256)\n    a = z3.BitVec(\"a\", 256)\n    b = z3.BitVec(\"b\", 256)\n\n    conditions = [x > y, y == z, a == b]\n\n    dependence_map = DependenceMap()\n\n    # Act\n    for condition in conditions:\n        dependence_map.add_condition(condition)\n\n    # Assert\n    assert 2 == len(dependence_map.buckets)\n\n    assert x in dependence_map.buckets[0].variables\n    assert y in dependence_map.buckets[0].variables\n    assert z in dependence_map.buckets[0].variables\n    assert len(set(dependence_map.buckets[0].variables)) == 3\n\n    assert conditions[0] in dependence_map.buckets[0].conditions\n    assert conditions[1] in dependence_map.buckets[0].conditions\n\n    assert a in dependence_map.buckets[1].variables\n    assert b in dependence_map.buckets[1].variables\n    assert len(set(dependence_map.buckets[1].variables)) == 2\n\n    assert conditions[2] in dependence_map.buckets[1].conditions\n\n\ndef test_Independence_solver_unsat():\n    # Arrange\n    x = symbol_factory.BitVecSym(\"x\", 256)\n    y = symbol_factory.BitVecSym(\"y\", 256)\n    z = symbol_factory.BitVecSym(\"z\", 256)\n    a = symbol_factory.BitVecSym(\"a\", 256)\n    b = symbol_factory.BitVecSym(\"b\", 256)\n\n    conditions = [x > y, y == z, y != z, a == b]\n\n    solver = IndependenceSolver()\n\n    # Act\n    solver.add(*conditions)\n    result = solver.check()\n\n    # Assert\n    assert z3.unsat == result\n\n\ndef test_independence_solver_unsat_in_second_bucket():\n    # Arrange\n    x = symbol_factory.BitVecSym(\"x\", 256)\n    y = symbol_factory.BitVecSym(\"y\", 256)\n    z = symbol_factory.BitVecSym(\"z\", 256)\n    a = symbol_factory.BitVecSym(\"a\", 256)\n    b = symbol_factory.BitVecSym(\"b\", 256)\n\n    conditions = [x > y, y == z, a == b, a != b]\n\n    solver = IndependenceSolver()\n\n    # Act\n    solver.add(*conditions)\n    result = solver.check()\n\n    # Assert\n    assert z3.unsat == result\n\n\ndef test_independence_solver_sat():\n    # Arrange\n    x = symbol_factory.BitVecSym(\"x\", 256)\n    y = symbol_factory.BitVecSym(\"y\", 256)\n    z = symbol_factory.BitVecSym(\"z\", 256)\n    a = symbol_factory.BitVecSym(\"a\", 256)\n    b = symbol_factory.BitVecSym(\"b\", 256)\n\n    conditions = [x > y, y == z, a == b]\n\n    solver = IndependenceSolver()\n\n    # Act\n    solver.add(*conditions)\n    result = solver.check()\n\n    # Assert\n    assert z3.sat == result\n"
  },
  {
    "path": "tests/laser/smt/model_test.py",
    "content": "import z3\n\nfrom mythril.laser.smt import Solver, symbol_factory\n\n\ndef test_decls():\n    # Arrange\n    solver = Solver()\n    x = symbol_factory.BitVecSym(\"x\", 256)\n    expression = x == symbol_factory.BitVecVal(2, 256)\n\n    # Act\n    solver.add(expression)\n    result = solver.check()\n    model = solver.model()\n\n    decls = model.decls()\n\n    # Assert\n    assert z3.sat == result\n    assert x.raw.decl() in decls\n\n\ndef test_get_item():\n    # Arrange\n    solver = Solver()\n    x = symbol_factory.BitVecSym(\"x\", 256)\n    expression = x == symbol_factory.BitVecVal(2, 256)\n\n    # Act\n    solver.add(expression)\n    result = solver.check()\n    model = solver.model()\n\n    x_concrete = model[x.raw.decl()]\n\n    # Assert\n    assert z3.sat == result\n    assert 2 == x_concrete\n\n\ndef test_as_long():\n    # Arrange\n    solver = Solver()\n    x = symbol_factory.BitVecSym(\"x\", 256)\n    expression = x == symbol_factory.BitVecVal(2, 256)\n\n    # Act\n    solver.add(expression)\n    result = solver.check()\n    model = solver.model()\n\n    x_concrete = model.eval(x.raw).as_long()\n\n    # Assert\n    assert z3.sat == result\n    assert 2 == x_concrete\n"
  },
  {
    "path": "tests/laser/state/__init__.py",
    "content": ""
  },
  {
    "path": "tests/laser/state/calldata_test.py",
    "content": "import pytest\nfrom z3 import unsat\n\nfrom mythril.laser.ethereum.state.calldata import ConcreteCalldata, SymbolicCalldata\nfrom mythril.laser.smt import Solver, symbol_factory\n\nuninitialized_test_data = [\n    ([]),  # Empty concrete calldata\n    ([1, 4, 5, 3, 4, 72, 230, 53]),  # Concrete calldata\n]\n\n\n@pytest.mark.parametrize(\"starting_calldata\", uninitialized_test_data)\ndef test_concrete_calldata_uninitialized_index(starting_calldata):\n    # Arrange\n    calldata = ConcreteCalldata(0, starting_calldata)\n\n    # Act\n    value = calldata[100]\n    value2 = calldata.get_word_at(200)\n\n    # Assert\n    assert value == 0\n    assert value2 == 0\n\n\ndef test_concrete_calldata_calldatasize():\n    # Arrange\n    calldata = ConcreteCalldata(0, [1, 4, 7, 3, 7, 2, 9])\n    solver = Solver()\n\n    # Act\n    solver.check()\n    model = solver.model()\n    result = model.eval(calldata.calldatasize.raw)\n\n    # Assert\n    assert result == 7\n\n\ndef test_concrete_calldata_constrain_index():\n    # Arrange\n    calldata = ConcreteCalldata(0, [1, 4, 7, 3, 7, 2, 9])\n    solver = Solver()\n\n    # Act\n    value = calldata[2]\n    constraint = value == 3\n\n    solver.add(constraint)\n    result = solver.check()\n\n    # Assert\n    assert str(result) == \"unsat\"\n\n\ndef test_symbolic_calldata_constrain_index():\n    # Arrange\n    calldata = SymbolicCalldata(0)\n    solver = Solver()\n\n    # Act\n    value = calldata[51]\n\n    constraints = [value == 1, calldata.calldatasize == 50]\n\n    solver.add(*constraints)\n\n    result = solver.check()\n\n    # Assert\n    assert str(result) == \"unsat\"\n\n\ndef test_symbolic_calldata_equal_indices():\n    calldata = SymbolicCalldata(0)\n\n    index_a = symbol_factory.BitVecSym(\"index_a\", 256)\n    index_b = symbol_factory.BitVecSym(\"index_b\", 256)\n\n    # Act\n    a = calldata[index_a]\n    b = calldata[index_b]\n\n    s = Solver()\n    s.append(index_a == index_b)\n    s.append(a != b)\n\n    # Assert\n    assert unsat == s.check()\n"
  },
  {
    "path": "tests/laser/state/mstack_test.py",
    "content": "import pytest\n\nfrom mythril.laser.ethereum.evm_exceptions import (\n    StackOverflowException,\n    StackUnderflowException,\n)\nfrom mythril.laser.ethereum.state.machine_state import MachineStack\nfrom tests import BaseTestCase\n\n\nclass MachineStackTest(BaseTestCase):\n    @staticmethod\n    def test_mstack_constructor():\n        mstack = MachineStack([1, 2])\n        assert mstack == [1, 2]\n\n    @staticmethod\n    def test_mstack_append_single_element():\n        mstack = MachineStack()\n\n        mstack.append(0)\n\n        assert mstack == [0]\n\n    @staticmethod\n    def test_mstack_append_multiple_elements():\n        mstack = MachineStack()\n\n        for i in range(mstack.STACK_LIMIT):\n            mstack.append(1)\n\n        with pytest.raises(StackOverflowException):\n            mstack.append(1000)\n\n    @staticmethod\n    def test_mstack_pop():\n        mstack = MachineStack([2])\n\n        assert mstack.pop() == 2\n\n        with pytest.raises(StackUnderflowException):\n            mstack.pop()\n\n    @staticmethod\n    def test_mstack_no_support_add():\n        mstack = MachineStack([0, 1])\n\n        with pytest.raises(NotImplementedError):\n            mstack + [2]\n\n    @staticmethod\n    def test_mstack_no_support_iadd():\n        mstack = MachineStack()\n\n        with pytest.raises(NotImplementedError):\n            mstack += mstack\n"
  },
  {
    "path": "tests/laser/state/mstate_test.py",
    "content": "import pytest\nfrom eth._utils.numeric import ceil32\n\nfrom mythril.laser.ethereum.evm_exceptions import StackUnderflowException\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.memory import Memory\nfrom mythril.laser.smt import Concat, Extract, simplify, symbol_factory\n\nmemory_extension_test_data = [(0, 0, 10), (0, 30, 10), (100, 22, 8)]\n\n\n@pytest.mark.parametrize(\n    \"initial_size,start,extension_size\", memory_extension_test_data\n)\ndef test_memory_extension(initial_size, start, extension_size):\n    # Arrange\n    machine_state = MachineState(gas_limit=8000000)\n    machine_state.memory = Memory()\n    machine_state.memory.extend(initial_size)\n\n    # Act\n    machine_state.mem_extend(start, extension_size)\n\n    # Assert\n    assert machine_state.memory_size == len(machine_state.memory)\n    assert machine_state.memory_size == max(\n        initial_size, (ceil32(start + extension_size) // 32) * 32\n    )\n\n\nstack_pop_too_many_test_data = [(0, 1), (0, 2), (5, 1), (5, 10)]\n\n\n@pytest.mark.parametrize(\"initial_size,overflow\", stack_pop_too_many_test_data)\ndef test_stack_pop_too_many(initial_size, overflow):\n    # Arrange\n    machine_state = MachineState(8000000)\n    machine_state.stack = [42] * initial_size\n\n    # Act + Assert\n    with pytest.raises(StackUnderflowException):\n        machine_state.pop(initial_size + overflow)\n\n\nstack_pop_test_data = [\n    ([1, 2, 3], 2, [3, 2]),\n    ([1, 3, 4, 7, 7, 1, 2], 5, [2, 1, 7, 7, 4]),\n]\n\n\n@pytest.mark.parametrize(\"initial_stack,amount,expected\", stack_pop_test_data)\ndef test_stack_multiple_pop(initial_stack, amount, expected):\n    # Arrange\n    machine_state = MachineState(8000000)\n    machine_state.stack = initial_stack[:]\n\n    # Act\n    results = machine_state.pop(amount)\n\n    # Assert\n    assert results == initial_stack[-amount:][::-1]\n    assert results == expected\n    assert len(machine_state.stack) == len(initial_stack) - amount\n\n\ndef test_stack_multiple_pop_():\n    # Arrange\n    machine_state = MachineState(8000000)\n    machine_state.stack = [1, 2, 3]\n\n    # Act\n    a, b = machine_state.pop(2)\n\n    # Assert\n    assert a == 3\n    assert b == 2\n\n\ndef test_stack_single_pop():\n    # Arrange\n    machine_state = MachineState(8000000)\n    machine_state.stack = [1, 2, 3]\n\n    # Act\n    result = machine_state.pop()\n\n    # Assert\n    assert isinstance(result, int)\n\n\ndef test_memory_zeroed():\n    # Arrange\n    mem = Memory()\n    mem.extend(2000 + 32)\n\n    # Act\n    mem[11] = 10\n    mem.write_word_at(2000, 0x12345)\n\n    # Assert\n    assert mem[10] == 0\n    assert mem[100] == 0\n    assert mem.get_word_at(1000) == 0\n\n\ndef test_memory_write():\n    # Arrange\n    mem = Memory()\n    mem.extend(200 + 32)\n\n    a = symbol_factory.BitVecSym(\"a\", 256)\n    b = symbol_factory.BitVecSym(\"b\", 8)\n\n    # Act\n    mem[11] = 10\n    mem[12] = b\n    mem.write_word_at(200, 0x12345)\n    mem.write_word_at(100, a)\n\n    # Assert\n    assert mem[0] == 0\n    assert mem[11] == 10\n    assert mem[200 + 31] == 0x45\n    assert mem.get_word_at(200) == 0x12345\n    assert simplify(a == mem.get_word_at(100))\n    assert simplify(b == mem[12])\n\n\ndef test_memory_symbolic():\n    # Arrange\n    mem = Memory()\n    mem.extend(200 + 32)\n\n    a = symbol_factory.BitVecSym(\"a\", 256)\n    b = symbol_factory.BitVecSym(\"b\", 256)\n\n    # Act\n    mem.write_word_at(a + symbol_factory.BitVecVal(1, 256), b)\n\n    # Assert\n    assert mem.get_word_at(a) == Concat(\n        symbol_factory.BitVecVal(0, 256), Extract(255, 8, b)\n    )\n    assert mem[a] == 0\n"
  },
  {
    "path": "tests/laser/state/storage_test.py",
    "content": "import pytest\n\nfrom mythril.laser.ethereum.state.account import Storage\nfrom mythril.laser.smt import Expression, symbol_factory\nfrom mythril.support.support_args import args\n\nBVV = symbol_factory.BitVecVal\n\nstorage_uninitialized_test_data = [({}, 1), ({1: 5}, 2), ({1: 5, 3: 10}, 2)]\n\n\n@pytest.mark.parametrize(\"initial_storage,key\", storage_uninitialized_test_data)\ndef test_concrete_storage_uninitialized_index(initial_storage, key):\n    # Arrange\n    args.unconstrained_storage = False\n    storage = Storage(concrete=True)\n    for k, val in initial_storage.items():\n        storage[BVV(k, 256)] = BVV(val, 256)\n\n    # Act\n    value = storage[BVV(key, 256)]\n\n    # Assert\n    assert value == 0\n\n\n@pytest.mark.parametrize(\"initial_storage,key\", storage_uninitialized_test_data)\ndef test_symbolic_storage_uninitialized_index(initial_storage, key):\n    # Arrange\n    storage = Storage(concrete=False)\n    for k, val in initial_storage.items():\n        storage[BVV(k, 256)] = BVV(val, 256)\n\n    # Act\n    value = storage[BVV(key, 256)]\n\n    # Assert\n    assert isinstance(value, Expression)\n\n\ndef test_storage_set_item():\n    # Arrange\n    storage = Storage()\n\n    # Act\n    storage[BVV(1, 256)] = BVV(13, 256)\n\n    # Assert\n    assert storage[BVV(1, 256)] == BVV(13, 256)\n\n\ndef test_storage_change_item():\n    # Arrange\n    storage = Storage()\n    storage[BVV(1, 256)] = BVV(12, 256)\n    # Act\n    storage[BVV(1, 256)] = BVV(14, 256)\n\n    # Assert\n    assert storage[BVV(1, 256)] == BVV(14, 256)\n"
  },
  {
    "path": "tests/laser/state/world_state_account_exist_load_test.py",
    "content": "\"\"\"\ndef _get_global_state():\n    active_account = Account(\"0x0\", code=Disassembly(\"60606040\"))\n    passive_account = Account(\n        \"0x325345346564645654645\", code=Disassembly(\"6060604061626364\")\n    )\n    environment = Environment(active_account, None, None, None, None, None)\n    world_state = WorldState()\n    world_state.put_account(active_account)\n    world_state.put_account(passive_account)\n    return GlobalState(world_state, environment, None, MachineState(gas_limit=8000000))\n\n\n@pytest.mark.parametrize(\n    \"addr, eth, code_len\",\n    [\n        (\n            \"0xb09C477eCDAd49DD5Ac26c2C64914C3a6693843a\",\n            EthJsonRpc(\"rinkeby.infura.io\", 443, True),\n            1548,\n        ),\n        (\n            \"0x863DF6BFa4469f3ead0bE8f9F2AAE51c91A907b4\",\n            EthJsonRpc(\"mainnet.infura.io\", 443, True),\n            0,\n        ),\n        (\n            \"0x325345346564645654645\",\n            EthJsonRpc(\"mainnet.infura.io\", 443, True),\n            16,\n        ),  # This contract tests Address Cache\n    ],\n)\ndef test_extraction(addr, eth, code_len):\n    global_state = _get_global_state()\n    dynamic_loader = DynLoader(eth=eth)\n    code = global_state.world_state.accounts_exist_or_load(\n        addr, dynamic_loader\n    ).code.bytecode\n    assert len(code) == code_len\n\"\"\"\n"
  },
  {
    "path": "tests/laser/strategy/beam_test.py",
    "content": "import pytest\n\nfrom mythril.analysis.potential_issues import PotentialIssuesAnnotation\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum.state.environment import Environment\nfrom mythril.laser.ethereum.state.global_state import GlobalState\nfrom mythril.laser.ethereum.state.machine_state import MachineState\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.strategy.beam import (\n    BeamSearch,\n)\n\nworld_state = WorldState()\naccount = world_state.create_account(balance=10, address=101)\naccount.code = Disassembly(\"60606040\")\nenvironment = Environment(account, None, None, None, None, None, None)\npotential_issues = PotentialIssuesAnnotation()\n# It is a hassle to construct multiple issues\npotential_issues.potential_issues = [0, 0]\n\n\n@pytest.mark.parametrize(\n    \"state, priority\",\n    [\n        (\n            GlobalState(\n                world_state,\n                environment,\n                None,\n                MachineState(gas_limit=8000000),\n                annotations=[PotentialIssuesAnnotation()],\n            ),\n            0,\n        ),\n        (\n            GlobalState(\n                world_state,\n                environment,\n                None,\n                MachineState(gas_limit=8000000),\n                annotations=[potential_issues],\n            ),\n            20,\n        ),\n    ],\n)\ndef test_priority_sum(state, priority):\n    assert priority == BeamSearch.beam_priority(state)\n\n\n@pytest.mark.parametrize(\n    \"states, width\",\n    [\n        (\n            [\n                GlobalState(\n                    world_state,\n                    environment,\n                    None,\n                    MachineState(gas_limit=8000000),\n                    annotations=[PotentialIssuesAnnotation()],\n                ),\n                GlobalState(\n                    world_state,\n                    environment,\n                    None,\n                    MachineState(gas_limit=8000000),\n                    annotations=[potential_issues],\n                ),\n            ],\n            1,\n        ),\n        (\n            100\n            * [\n                GlobalState(\n                    world_state,\n                    environment,\n                    None,\n                    MachineState(gas_limit=8000000),\n                    annotations=[PotentialIssuesAnnotation()],\n                )\n            ],\n            1,\n        ),\n        (\n            100\n            * [\n                GlobalState(\n                    world_state,\n                    environment,\n                    None,\n                    MachineState(gas_limit=8000000),\n                    annotations=[PotentialIssuesAnnotation()],\n                )\n            ],\n            0,\n        ),\n    ],\n)\ndef test_elimination(states, width):\n    strategy = BeamSearch(states, max_depth=100, beam_width=width)\n    strategy.sort_and_eliminate_states()\n\n    assert len(strategy.work_list) <= width\n    for i in range(len(strategy.work_list) - 1):\n        assert strategy.beam_priority(strategy.work_list[i]) >= strategy.beam_priority(\n            strategy.work_list[i + 1]\n        )\n"
  },
  {
    "path": "tests/laser/strategy/loop_bound_test.py",
    "content": "import pytest\n\nfrom mythril.laser.ethereum.strategy.extensions.bounded_loops import (\n    BoundedLoopsStrategy,\n)\n\n\n@pytest.mark.parametrize(\n    \"trace, count\",\n    [\n        ([6, 7, 7, 7], 3),\n        ([6, 8, 6, 7, 6, 7, 6, 7, 6, 7], 4),\n        ([6, 6, 6, 6], 4),\n        ([6, 7, 8] * 10, 10),\n        ([7, 9, 10] + list(range(1, 100)) * 100, 100),\n        ([7, 10, 15], 0),\n        ([7] * 100, 100),\n    ],\n)\ndef test_loop_count(trace, count):\n    assert count == BoundedLoopsStrategy.get_loop_count(trace)\n"
  },
  {
    "path": "tests/laser/transaction/__init__.py",
    "content": ""
  },
  {
    "path": "tests/laser/transaction/create_transaction_test.py",
    "content": "from datetime import datetime\n\nimport mythril.laser.ethereum.svm as svm\nimport tests\nfrom mythril.analysis.security import fire_lasers\nfrom mythril.analysis.symbolic import SymExecWrapper\nfrom mythril.disassembler.disassembly import Disassembly\nfrom mythril.ethereum import util\nfrom mythril.laser.ethereum.transaction import execute_contract_creation\nfrom mythril.mythril import MythrilDisassembler\nfrom mythril.solidity.soliditycontract import SolidityContract\n\nsolc_binary = MythrilDisassembler._init_solc_binary(\"v0.5.0\")\n\n\ndef test_create():\n    contract = SolidityContract(\n        str(tests.TESTDATA_INPUTS_CONTRACTS / \"calls.sol\"), solc_binary=solc_binary\n    )\n\n    laser_evm = svm.LaserEVM({})\n\n    laser_evm.time = datetime.now()\n    execute_contract_creation(laser_evm, contract.creation_code)\n\n    resulting_final_state = laser_evm.open_states[0]\n\n    for address, created_account in resulting_final_state.accounts.items():\n        created_account_code = created_account.code\n        actual_code = Disassembly(contract.code)\n\n        for i in range(len(created_account_code.instruction_list)):\n            found_instruction = created_account_code.instruction_list[i]\n            actual_instruction = actual_code.instruction_list[i]\n\n            assert found_instruction[\"opcode\"] == actual_instruction[\"opcode\"]\n\n\ndef test_sym_exec():\n    contract = SolidityContract(\n        str(tests.TESTDATA_INPUTS_CONTRACTS / \"calls.sol\"), solc_binary=solc_binary\n    )\n\n    sym = SymExecWrapper(\n        contract,\n        address=(util.get_indexed_address(0)),\n        strategy=\"dfs\",\n        execution_timeout=25,\n    )\n    issues = fire_lasers(sym)\n\n    assert len(issues) != 0\n"
  },
  {
    "path": "tests/laser/transaction/symbolic_test.py",
    "content": "import unittest.mock as mock\nfrom unittest.mock import MagicMock\n\nfrom mythril.laser.ethereum.state.account import Account\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.laser.ethereum.svm import LaserEVM\nfrom mythril.laser.ethereum.transaction import (\n    ContractCreationTransaction,\n    MessageCallTransaction,\n)\nfrom mythril.laser.ethereum.transaction.symbolic import (\n    execute_contract_creation,\n    execute_message_call,\n)\nfrom mythril.laser.smt import symbol_factory\n\n\ndef _is_message_call(_, transaction, transaction_sequences):\n    assert isinstance(transaction, MessageCallTransaction)\n\n\ndef _is_contract_creation(_, transaction):\n    assert isinstance(transaction, ContractCreationTransaction)\n\n\n@mock.patch(\n    \"mythril.laser.ethereum.transaction.symbolic._setup_global_state_for_execution\"\n)\ndef test_execute_message_call(mocked_setup: MagicMock):\n    # Arrange\n    laser_evm = LaserEVM({})\n\n    world_state = WorldState()\n    world_state.put_account(Account(\"0x0\"))\n\n    laser_evm.open_states = [world_state]\n    laser_evm.exec = MagicMock()\n\n    mocked_setup.side_effect = _is_message_call\n\n    # Act\n    execute_message_call(laser_evm, symbol_factory.BitVecVal(0, 256))\n\n    # Assert\n    # laser_evm.exec.assert_called_once()\n    assert laser_evm.exec.call_count == 1\n    # mocked_setup.assert_called_once()\n    assert mocked_setup.call_count == 1\n\n    assert len(laser_evm.open_states) == 0\n\n\n@mock.patch(\n    \"mythril.laser.ethereum.transaction.symbolic._setup_global_state_for_execution\"\n)\ndef test_execute_contract_creation(mocked_setup: MagicMock):\n    # Arrange\n    laser_evm = LaserEVM({})\n\n    laser_evm.open_states = [WorldState(), WorldState()]\n    laser_evm.exec = MagicMock()\n    mocked_setup.side_effect = _is_contract_creation\n\n    # Act\n    execute_contract_creation(laser_evm, \"606000\")\n\n    # Assert\n    # mocked_setup.assert_called()\n    assert mocked_setup.call_count >= 1\n    # laser_evm.exec.assert_called_once()\n    assert laser_evm.exec.call_count == 1\n    assert len(laser_evm.open_states) == 0\n"
  },
  {
    "path": "tests/laser/transaction_test.py",
    "content": "from mythril.disassembler.disassembly import Disassembly\nfrom mythril.laser.ethereum import svm\nfrom mythril.laser.ethereum.state.account import Account\nfrom mythril.laser.ethereum.state.world_state import WorldState\nfrom mythril.support.support_args import args\n\n\ndef test_intercontract_call():\n    # Arrange\n    caller_code = Disassembly(\n        \"6080604052348015600f57600080fd5b5073deadbeefdeadbeefdeadbeefdeadbeefdeadbeef73ffffffffffffffffffffffffffffffffffffffff166389627e13336040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001915050602060405180830381600087803b15801560be57600080fd5b505af115801560d1573d6000803e3d6000fd5b505050506040513d602081101560e657600080fd5b8101908080519060200190929190505050500000a165627a7a72305820fdb1e90f0d9775c94820e516970e0d41380a94624fa963c556145e8fb645d4c90029\"\n    )\n    caller_address = \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\"\n\n    callee_code = Disassembly(\n        \"608060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806389627e13146044575b600080fd5b348015604f57600080fd5b506082600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506084565b005b8073ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f1935050505015801560e0573d6000803e3d6000fd5b50505600a165627a7a72305820a6b1335d6f994632bc9a7092d0eaa425de3dea05e015af8a94ad70b3969e117a0029\"\n    )\n    callee_address = \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\"\n\n    world_state = WorldState()\n\n    caller_account = Account(caller_address, caller_code, contract_name=\"Caller\")\n    callee_account = Account(callee_address, callee_code, contract_name=\"Callee\")\n    world_state.put_account(callee_account)\n    world_state.put_account(caller_account)\n    args.pruning_factor = 1\n    laser = svm.LaserEVM()\n\n    # Act\n    laser.sym_exec(world_state=world_state, target_address=int(caller_address, 16))\n\n    # Assert\n    # Initial node starts in contract caller\n    assert len(laser.nodes.keys()) > 0\n    node_id = list(laser.nodes.keys())[0]\n    assert laser.nodes[node_id].contract_name == \"Caller\"\n\n    # At one point we call into contract callee\n    for node in laser.nodes.values():\n        if node.contract_name == \"Callee\":\n            assert len(node.states[0].transaction_stack) > 1\n            return\n\n    assert False\n"
  },
  {
    "path": "tests/laser/tx_prioritisation_test.py",
    "content": "from unittest.mock import Mock, mock_open, patch\n\nimport numpy as np\nimport pytest\n\nfrom mythril.laser.ethereum.tx_prioritiser import RfTxPrioritiser\n\n\ndef mock_predict_proba(X):\n    if X[0][-1] == 1:\n        return np.array([[0.1, 0.7, 0.1, 0.1]])\n    elif X[0][-1] == 2:\n        return np.array([[0.1, 0.1, 0.7, 0.1]])\n    else:\n        return np.array([[0.1, 0.1, 0.1, 0.7]])\n\n\nclass MockSolidityContract:\n    def __init__(self, features):\n        self.features = features\n\n\n@pytest.fixture\ndef rftp_instance():\n    contract = MockSolidityContract(\n        features={\"function1\": {\"feature1\": 1, \"feature2\": 2}}\n    )\n\n    with patch(\"pickle.load\") as mock_pickle_load, patch(\"builtins.open\", mock_open()):\n        mock_model = Mock()\n        mock_model.predict_proba = mock_predict_proba\n        mock_pickle_load.return_value = mock_model\n\n        rftp = RfTxPrioritiser(contract=contract, model_path=\"path/to/mock/model.pkl\")\n\n    return rftp\n\n\ndef test_preprocess_features(rftp_instance):\n    expected_features = np.array([[1, 2]])\n    assert np.array_equal(rftp_instance.preprocessed_features, expected_features)\n\n\n@pytest.mark.parametrize(\n    \"address,previous_predictions,expected_sequence\",\n    [\n        (1, [], [2, 2, 2]),\n        (2, [], [2, 2, 2]),\n        (1, [0], [3, 3, 3]),\n        (2, [1], [1, 1, 1]),\n        (3, [1, 2], [2, 2, 2]),\n        (1, [0, 2, 5], [3, 3, 3]),\n    ],\n)\ndef test_next_method(rftp_instance, address, previous_predictions, expected_sequence):\n    rftp_instance.recent_predictions = previous_predictions\n    predictions_sequence = rftp_instance.__next__(address=address)\n\n    assert len(predictions_sequence) == 3\n    assert predictions_sequence == expected_sequence\n"
  },
  {
    "path": "tests/mythril/mythril_analyzer_test.py",
    "content": "from pathlib import Path\nfrom types import SimpleNamespace\nfrom unittest.mock import PropertyMock, patch\n\nfrom mythril.analysis.report import Issue\nfrom mythril.mythril import MythrilAnalyzer, MythrilDisassembler\n\n\n@patch(\"mythril.analysis.report.Issue.add_code_info\", return_value=None)\n@patch(\n    \"mythril.mythril.mythril_analyzer.fire_lasers\",\n    return_value=[Issue(\"\", \"\", \"234\", \"101\", \"title\", \"0x02445\")],\n)\n@patch(\"mythril.mythril.mythril_analyzer.SymExecWrapper\")\ndef test_fire_lasers(mock_sym, mock_fire_lasers, mock_code_info):\n    type(mock_sym.return_value).execution_info = PropertyMock(return_value=[])\n    disassembler = MythrilDisassembler(eth=None, solc_version=\"v0.5.0\")\n    disassembler.load_from_solidity(\n        [\n            str(\n                (\n                    Path(__file__).parent.parent / \"testdata/input_contracts/origin.sol\"\n                ).absolute()\n            )\n        ]\n    )\n    args = SimpleNamespace(\n        execution_timeout=5,\n        max_depth=30,\n        solver_timeout=10000,\n        no_onchain_data=True,\n        loop_bound=None,\n        create_timeout=None,\n        disable_dependency_pruning=False,\n        custom_modules_directory=None,\n        pruning_factor=0,\n        parallel_solving=True,\n        unconstrained_storage=True,\n        call_depth_limit=3,\n        disable_iprof=True,\n        solver_log=None,\n        transaction_sequences=None,\n        disable_coverage_strategy=False,\n        disable_mutation_pruner=False,\n        enable_summaries=False,\n        enable_state_merging=False,\n    )\n    analyzer = MythrilAnalyzer(disassembler, cmd_args=args)\n\n    issues = analyzer.fire_lasers(modules=[]).sorted_issues()\n    mock_sym.assert_called()\n    mock_fire_lasers.assert_called()\n    mock_code_info.assert_called()\n    assert len(issues) == 1\n    assert issues[0][\"swc-id\"] == \"101\"\n"
  },
  {
    "path": "tests/mythril/mythril_config_test.py",
    "content": "from configparser import ConfigParser\nfrom pathlib import Path\n\nimport pytest\n\nfrom mythril.exceptions import CriticalError\nfrom mythril.mythril import MythrilConfig\n\n\ndef test_config_path_dynloading():\n    config = MythrilConfig()\n    config.config_path = str(\n        Path(__file__).parent.parent / \"testdata/mythril_config_inputs/config.ini\"\n    )\n    config.set_api_from_config_path()\n    assert \"mainnet.infura.io/v3/\" in config.eth.host\n\n\nrpc_types_tests = [\n    (\"infura\", \"mainnet.infura.io/v3/\", None, True),\n    (\"ganache\", \"localhost\", None, True),\n    (\"infura-rinkeby\", \"rinkeby.infura.io/v3/\", None, True),\n    (\"infura-ropsten\", \"ropsten.infura.io/v3/\", None, True),\n    (\"infura-kovan\", \"kovan.infura.io/v3/\", None, True),\n    (\"localhost\", \"localhost\", 8545, True),\n    (\"localhost:9022\", \"localhost\", 9022, True),\n    (\"pinfura\", None, None, False),\n    (\"infura-finkeby\", None, None, False),\n]\n\n\n@pytest.mark.parametrize(\"rpc_type,host,port,success\", rpc_types_tests)\ndef test_set_rpc(rpc_type, host, port, success):\n    config = MythrilConfig()\n    if success:\n        config._set_rpc(rpc_type)\n        assert host in config.eth.host\n    else:\n        with pytest.raises(CriticalError):\n            config._set_rpc(rpc_type)\n\n\ndef test_dynld_config_addition():\n    config = ConfigParser()\n    config.add_section(\"defaults\")\n    MythrilConfig._add_dynamic_loading_option(config)\n    assert config.has_section(\"defaults\")\n    assert config.get(\"defaults\", \"dynamic_loading\") == \"infura\"\n"
  },
  {
    "path": "tests/mythril/mythril_disassembler_test.py",
    "content": "from mythril.mythril import MythrilDisassembler\n\nstorage_test = [\n    (\n        [\"438767356\", \"3\"],\n        [\n            \"0x1a270efc: 0x0000000000000000000000000000000000000000000000000000000000000000\",\n            \"0x1a270efd: 0x0000000000000000000000000000000000000000000000000000000000000000\",\n            \"0x1a270efe: 0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ],\n    ),\n    (\n        [\"mapping\", \"4588934759847\", \"1\", \"2\"],\n        [\n            \"0x7e523d5aeb10cdb378b0b1f76138c28063a2cb9ec8ff710f42a0972f4d53cf44: \"\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n            \"0xba36da34ceec88853a2ebdde88e023c6919b90348f41e8905b422dc9ce22301c: \"\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        ],\n    ),\n    (\n        [\"mapping\", \"4588934759847\", \"10\"],\n        [\n            \"45998575720532480608987132552042185415362901038635143236141343153058112000553: \"\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n        ],\n    ),\n    (\n        [\"4588934759847\", \"1\", \"array\"],\n        [\n            \"30699902832541380821728647136767910246735388184559883985790189062258823875816: \"\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\"\n        ],\n    ),\n]\n\n\"\"\"\n@pytest.mark.parametrize(\"params,ans\", storage_test)\ndef test_get_data_from_storage(params, ans):\n    config = MythrilConfig()\n    config.set_api_rpc_infura()\n    disassembler = MythrilDisassembler(eth=config.eth, solc_version=\"0.4.23\")\n    outtext = disassembler.get_state_variable_from_storage(\n        \"0x76799f77587738bfeef09452df215b63d2cfb08a\", params\n    ).split(\"\\n\")\n    assert outtext == ans\n\n\nstorage_test_incorrect_params = [\n    ([\"1\", \"2\", \"3\", \"4\"]),\n    ([\"mapping\", \"1\"]),\n    ([\"a\", \"b\", \"c\"]),\n]\n\n\n@pytest.mark.parametrize(\"params\", storage_test_incorrect_params)\ndef test_get_data_from_storage_incorrect_params(params):\n    config = MythrilConfig()\n    config.set_api_rpc_infura()\n    disassembler = MythrilDisassembler(eth=config.eth, solc_version=\"0.4.23\")\n    with pytest.raises(CriticalError):\n        disassembler.get_state_variable_from_storage(\n            \"0x76799f77587738bfeef09452df215b63d2cfb08a\", params\n        )\n\"\"\"\n\n\ndef test_solc_install():\n    MythrilDisassembler(eth=None, solc_version=\"0.4.19\")\n"
  },
  {
    "path": "tests/plugin/interface_test.py",
    "content": "from mythril.plugin.interface import MythrilCLIPlugin, MythrilPlugin\n\n\ndef test_construct_cli_plugin():\n    _ = MythrilCLIPlugin()\n\n\ndef test_construct_mythril_plugin():\n    _ = MythrilPlugin\n"
  },
  {
    "path": "tests/plugin/loader_test.py",
    "content": "import pytest\n\nfrom mythril.plugin import MythrilPlugin, MythrilPluginLoader\nfrom mythril.plugin.loader import UnsupportedPluginType\n\n\ndef test_typecheck_load():\n    # Arrange\n    loader = MythrilPluginLoader()\n\n    # Act\n    with pytest.raises(ValueError):\n        loader.load(None)\n\n\ndef test_unsupported_plugin_type():\n    # Arrange\n    loader = MythrilPluginLoader()\n\n    # Act\n    with pytest.raises(UnsupportedPluginType):\n        loader.load(MythrilPlugin())\n"
  },
  {
    "path": "tests/pre-commit-hooks/Counter.sol",
    "content": "// SPDX-License-Identifier: Apache-2.0\npragma solidity ^0.8.26;\n\ncontract Counter {\n    uint256 public number;\n\n    function setNumber(uint256 newNumber) public {\n        number = newNumber;\n    }\n\n    function increment() public {\n        number++;\n    }\n}\n"
  },
  {
    "path": "tests/pre-commit-hooks/test.sh",
    "content": "#!/usr/bin/env bash\n\nset -o errtrace -o nounset -o pipefail -o errexit\n\nSCRIPT_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" >/dev/null 2>&1 && pwd)\"\n\n# Create temp working directory for mock repo\nMOCK_REPO=$(mktemp -d)\nif [[ ! \"$MOCK_REPO\" || ! -d \"$MOCK_REPO\" ]]; then\n    echo \"Could not create temp dir\"\n    exit 1\nfi\nfunction cleanup {\n    echo \"Deleting temp working directory $MOCK_REPO\"\n    rm -rf \"$MOCK_REPO\"\n}\ntrap cleanup EXIT\n\n# Filling the mock repo\npushd \"$MOCK_REPO\" >/dev/null || exit 1\ngit init --initial-branch=master\ngit config user.email \"test@example.com\"\ngit config user.name \"pre-commit test\"\ncp \"$SCRIPT_DIR/Counter.sol\" .\ngit add .\ngit commit -m \"Initial commit\"\n\n# Run pre-commit inside the mock repo while referencing the mythril directory,\n# where the .pre-commit-hooks.yaml is located.\npre-commit try-repo \"$SCRIPT_DIR/../..\" mythril --verbose --color=always --all-files\n"
  },
  {
    "path": "tests/rpc_test.py",
    "content": "from mythril.ethereum.interface.rpc.client import EthJsonRpc\nfrom tests import BaseTestCase\n\n\nclass RpcTest(BaseTestCase):\n    client = None\n\n    def setUp(self):\n        \"\"\"\"\"\"\n        self.client = EthJsonRpc()\n\n    def tearDown(self):\n        \"\"\"\"\"\"\n        self.client.close()\n\n    def test_eth_blockNumber(self):\n        block_number = self.client.eth_blockNumber()\n        self.assertGreater(\n            block_number, 0, \"we have made sure the blockNumber is > 0 for testing\"\n        )\n\n    def test_eth_getBalance(self):\n        balance = self.client.eth_getBalance(\n            address=\"0x0000000000000000000000000000000000000000\"\n        )\n        self.assertGreater(\n            balance, 10000000, \"specified address should have a lot of balance\"\n        )\n\n    def test_eth_getStorageAt(self):\n        storage = self.client.eth_getStorageAt(\n            address=\"0x0000000000000000000000000000000000000000\"\n        )\n        self.assertEqual(\n            storage,\n            \"0x0000000000000000000000000000000000000000000000000000000000000000\",\n        )\n\n    def test_eth_getBlockByNumber(self):\n        block = self.client.eth_getBlockByNumber(0)\n        self.assertEqual(\n            block[\"extraData\"],\n            \"0x11bbe8db4e347b4e8c937c1c8370e4b5ed33adb3db69cbdb7a38e1e50b1b82fa\",\n            \"the data of the first block should be right\",\n        )\n\n    def test_eth_getCode(self):\n        # TODO: can't find a proper address for getting code\n        code = self.client.eth_getCode(\n            address=\"0x0000000000000000000000000000000000000001\"\n        )\n        self.assertEqual(code, \"0x\")\n\n    def test_eth_getTransactionReceipt(self):\n        transaction = self.client.eth_getTransactionReceipt(\n            tx_hash=\"0xe363505adc6b2996111f8bd774f8653a61d244cc6567b5372c2e781c6c63b737\"\n        )\n        self.assertEqual(\n            transaction[\"from\"], \"0x22f2dcff5ad78c3eb6850b5cb951127b659522e6\"\n        )\n        self.assertEqual(\n            transaction[\"to\"], \"0x0000000000000000000000000000000000000000\"\n        )\n"
  },
  {
    "path": "tests/solidity_contract_test.py",
    "content": "from pathlib import Path\n\nfrom mythril.mythril import MythrilDisassembler\nfrom mythril.solidity.soliditycontract import SolidityContract\nfrom tests import BaseTestCase\n\nTEST_FILES = Path(__file__).parent / \"testdata/input_contracts\"\nsolc_binary = MythrilDisassembler._init_solc_binary(\"v0.5.0\")\n\n\nclass SolidityContractTest(BaseTestCase):\n    def test_get_source_info_without_name_gets_latest_contract_info(self):\n        input_file = TEST_FILES / \"multi_contracts.sol\"\n        contract = SolidityContract(str(input_file), solc_binary=solc_binary)\n\n        code_info = contract.get_source_info(116)\n        self.assertEqual(code_info.filename, str(input_file))\n        self.assertEqual(code_info.lineno, 14)\n        self.assertEqual(code_info.code, \"msg.sender.transfer(2 ether)\")\n\n    def test_get_source_info_with_contract_name_specified(self):\n        input_file = TEST_FILES / \"multi_contracts.sol\"\n        contract = SolidityContract(\n            str(input_file), name=\"Transfer1\", solc_binary=solc_binary\n        )\n\n        code_info = contract.get_source_info(116)\n\n        self.assertEqual(code_info.filename, str(input_file))\n        self.assertEqual(code_info.lineno, 6)\n        self.assertEqual(code_info.code, \"msg.sender.transfer(1 ether)\")\n\n    def test_get_source_info_with_contract_name_specified_constructor(self):\n        input_file = TEST_FILES / \"constructor_assert.sol\"\n        contract = SolidityContract(\n            str(input_file), name=\"AssertFail\", solc_binary=solc_binary\n        )\n\n        code_info = contract.get_source_info(75, constructor=True)\n\n        self.assertEqual(code_info.filename, str(input_file))\n        self.assertEqual(code_info.lineno, 6)\n        self.assertEqual(code_info.code, \"assert(var1 > 0)\")\n"
  },
  {
    "path": "tests/statespace_test.py",
    "content": "from types import SimpleNamespace\n\nfrom mythril.ethereum import util\nfrom mythril.mythril import MythrilAnalyzer, MythrilDisassembler\nfrom mythril.solidity.soliditycontract import EVMContract\nfrom tests import TESTDATA_INPUTS\n\n\ndef test_statespace_dump():\n    for input_file in TESTDATA_INPUTS.iterdir():\n        if input_file.name not in (\"origin.sol.o\", \"suicide.sol.o\"):\n            # It's too slow, so it's better to skip some tests.\n            continue\n        contract = EVMContract(input_file.read_text())\n        disassembler = MythrilDisassembler()\n        disassembler.contracts.append(contract)\n        args = SimpleNamespace(\n            execution_timeout=5,\n            max_depth=30,\n            solver_timeout=10000,\n            no_onchain_data=True,\n            loop_bound=None,\n            create_timeout=None,\n            disable_dependency_pruning=False,\n            custom_modules_directory=None,\n            pruning_factor=0,\n            parallel_solving=True,\n            unconstrained_storage=True,\n            call_depth_limit=3,\n            disable_iprof=True,\n            solver_log=None,\n            transaction_sequences=None,\n            disable_coverage_strategy=False,\n            disable_mutation_pruner=False,\n            enable_summaries=False,\n            enable_state_merging=False,\n        )\n        analyzer = MythrilAnalyzer(\n            disassembler=disassembler,\n            strategy=\"dfs\",\n            address=(util.get_indexed_address(0)),\n            cmd_args=args,\n        )\n\n        analyzer.dump_statespace(contract=contract)\n"
  },
  {
    "path": "tests/testdata/__init__.py",
    "content": ""
  },
  {
    "path": "tests/testdata/compile.py",
    "content": "# compile test contracts\nfrom pathlib import Path\n\nfrom mythril.solidity.soliditycontract import SolidityContract\n\n# Recompiles all the to be tested contracts\nroot = Path(__file__).parent\ninput = root / \"input_contracts\"\noutput = root / \"inputs\"\n\nfor contract in input.iterdir():\n    sol = SolidityContract(str(contract))\n    code = sol.code\n\n    output_file = output / \"{}.o\".format(contract.name)\n    output_file.write_text(code)\n"
  },
  {
    "path": "tests/testdata/concolic_io/multi_contract_example.sol",
    "content": "pragma solidity 0.8.6;\n\n/**\n * @title Storage\n * @dev Store & retrieve value in a variable\n */\ncontract D1 {\n\n    uint256 number;\n\n    function store(uint256 num) public {\n        number =num;\n    }\n    \n    function retval() public returns(uint256){\n        return number;\n    }\n}\ncontract D2 {\n\n\n    uint256 number;\n\n    function store(uint256 num) external {\n        number = num;\n    }\n    function retval() public returns(uint256){\n        return number;\n    }\n\n}\n\n\ncontract D3 {\n D2 d2;\n D1 d1;\n  constructor() public\n  {\n       d1 = D1(0x0901d12ebE1b195E5AA8748E62Bd7734aE19B51F);\n       d2 = D2(0x384f682f4a5AbefC8795Cc38a340dE9446dFAE7A);\n  }\n  function test(uint256 num) public returns(uint256) {\n    uint256 sum = d1.retval() + d2.retval() + num;\n    if (sum == 10) {\n        return sum + 10;\n    }\n    else if(sum == 25) {\n        return sum * 2;\n    }\n    else return sum*10;\n    return sum;\n  }\n}\n\n"
  },
  {
    "path": "tests/testdata/concolic_io/multi_contract_example_input.json",
    "content": "{\n    \"initialState\": {\n        \"accounts\": {\n            \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\": {\n                \"balance\": \"0x1000000\",\n                \"code\": \"\",\n                \"nonce\": 0,\n                \"storage\": {}\n            },\n            \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\": {\n                \"balance\": \"0x0\",\n                \"code\": \"\",\n                \"nonce\": 0,\n                \"storage\": {}\n            }\n        }\n    },\n    \"steps\": [{\n        \"address\": \"\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x608060405234801561001057600080fd5b50610150806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636057361d1461003b5780639c88345314610057575b600080fd5b6100556004803603810190610050919061009d565b610075565b005b61005f61007f565b60405161006c91906100d9565b60405180910390f35b8060008190555050565b60008054905090565b60008135905061009781610103565b92915050565b6000602082840312156100b3576100b26100fe565b5b60006100c184828501610088565b91505092915050565b6100d3816100f4565b82525050565b60006020820190506100ee60008301846100ca565b92915050565b6000819050919050565b600080fd5b61010c816100f4565b811461011757600080fd5b5056fea2646970667358221220773ac8f6769c8b896b1ac993a29718d8f1463998522b37ec8e410ded6f1bd3d464736f6c63430008060033\",\n        \"name\": \"unknown\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    },\n    {\n        \"address\": \"0x0901d12ebE1b195E5AA8748E62Bd7734aE19B51F\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x6057361d0000000000000000000000000000000000000000000000000000000000000001\",\n        \"name\": \"unknown\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    },\n    {\n        \"address\": \"\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x608060405234801561001057600080fd5b50610150806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636057361d1461003b5780639c88345314610057575b600080fd5b6100556004803603810190610050919061009d565b610075565b005b61005f61007f565b60405161006c91906100d9565b60405180910390f35b8060008190555050565b60008054905090565b60008135905061009781610103565b92915050565b6000602082840312156100b3576100b26100fe565b5b60006100c184828501610088565b91505092915050565b6100d3816100f4565b82525050565b60006020820190506100ee60008301846100ca565b92915050565b6000819050919050565b600080fd5b61010c816100f4565b811461011757600080fd5b5056fea264697066735822122046b7cc08908c1d17c2b2b523dfb5fc5a50e56068ce85f705f6f75ff54c7b16c864736f6c63430008060033\",\n        \"name\": \"unknown\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    },\n    {\n        \"address\": \"0x384f682f4a5AbefC8795Cc38a340dE9446dFAE7A\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x6057361d0000000000000000000000000000000000000000000000000000000000000001\",\n        \"name\": \"unknown\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    },\n    {\n        \"address\": \"\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x608060405234801561001057600080fd5b50730901d12ebe1b195e5aa8748e62bd7734ae19b51f600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555073384f682f4a5abefc8795cc38a340de9446dfae7a6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506103f7806100c96000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806329e99f0714610030575b600080fd5b61004a60048036038101906100459190610238565b610060565b60405161005791906102a1565b60405180910390f35b6000808260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c8834536040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156100cc57600080fd5b505af11580156100e0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101049190610265565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c8834536040518163ffffffff1660e01b8152600401602060405180830381600087803b15801561016e57600080fd5b505af1158015610182573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906101a69190610265565b6101b091906102bc565b6101ba91906102bc565b9050600a8114156101da57600a816101d291906102bc565b915050610209565b60198114156101f8576002816101f09190610312565b915050610209565b600a816102059190610312565b9150505b919050565b60008135905061021d816103aa565b92915050565b600081519050610232816103aa565b92915050565b60006020828403121561024e5761024d6103a5565b5b600061025c8482850161020e565b91505092915050565b60006020828403121561027b5761027a6103a5565b5b600061028984828501610223565b91505092915050565b61029b8161036c565b82525050565b60006020820190506102b66000830184610292565b92915050565b60006102c78261036c565b91506102d28361036c565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561030757610306610376565b5b828201905092915050565b600061031d8261036c565b91506103288361036c565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561036157610360610376565b5b828202905092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b6103b38161036c565b81146103be57600080fd5b5056fea2646970667358221220f0c85d3c193689a686ebf30f33bdac178593d7fe1036cce209c44c7833209cb464736f6c63430008060033\",\n        \"name\": \"unknown\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    },\n    {\n        \"address\": \"0xc538a4c3f414cbf7f78373e253c1beadd6310d45\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"0x29e99f070000000000000000000000000000000000000000000000000000000000000006\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x29e99f070000000000000000000000000000000000000000000000000000000000000006\",\n        \"name\": \"\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    }]\n}\n"
  },
  {
    "path": "tests/testdata/concolic_io/multiple_example.sol",
    "content": "// source of the bytecode, as a reference for the test.\npragma solidity 0.8.6;\n\ncontract Example1 {\n    uint256 private initialized = 0;\n    uint256 public count = 1;\n\n    function init() public {\n        initialized = 1;\n    }\n\n    function run(uint256 input, uint val) public {\n        if (val == 3) {\n            count += input;\n        }\n        else if(val == 5) {\n            count += 2 * input;\n        }\n        else if(val == 7) {\n            count += 10 + input;\n        }\n        else\n            count++;\n    }\n}\n"
  },
  {
    "path": "tests/testdata/concolic_io/multiple_example_input.json",
    "content": "{\n    \"initialState\": {\n        \"accounts\": {\n            \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\": {\n                \"balance\": \"0x10000\",\n                \"code\": \"\",\n                \"nonce\": 0,\n                \"storage\": {}\n            },\n            \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\": {\n                \"balance\": \"0x0\",\n                \"code\": \"\",\n                \"nonce\": 0,\n                \"storage\": {}\n            }\n        }\n    },\n    \"steps\": [{\n        \"address\": \"\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x6080604052600080556001805534801561001857600080fd5b50610349806100286000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806306661abd146100465780637357f5d214610064578063e1c7392a14610080575b600080fd5b61004e61008a565b60405161005b91906101aa565b60405180910390f35b61007e6004803603810190610079919061015b565b610090565b005b61008861013c565b005b60015481565b60038114156100b75781600160008282546100ab91906101c5565b92505081905550610138565b60058114156100ea578160026100cd919061021b565b600160008282546100de91906101c5565b92505081905550610137565b600781141561011d5781600a61010091906101c5565b6001600082825461011191906101c5565b92505081905550610136565b600160008154809291906101309061027f565b91905055505b5b5b5050565b6001600081905550565b600081359050610155816102fc565b92915050565b60008060408385031215610172576101716102f7565b5b600061018085828601610146565b925050602061019185828601610146565b9150509250929050565b6101a481610275565b82525050565b60006020820190506101bf600083018461019b565b92915050565b60006101d082610275565b91506101db83610275565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156102105761020f6102c8565b5b828201905092915050565b600061022682610275565b915061023183610275565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff048311821515161561026a576102696102c8565b5b828202905092915050565b6000819050919050565b600061028a82610275565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156102bd576102bc6102c8565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b61030581610275565b811461031057600080fd5b5056fea26469706673582212202f9c24200282a71edb4cfb1018bca4a5608551f6bf5910ca1569133908c2605464736f6c63430008060033\",\n        \"name\": \"unknown\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    }, \n    {\n        \"address\": \"0x901d12ebe1b195e5aa8748e62bd7734ae19b51f\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"0x7357f5d2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x7357f5d2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n        \"name\": \"run(uint256,uint256)\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    }]\n}\n"
  },
  {
    "path": "tests/testdata/concolic_io/simple_example.sol",
    "content": "// source of the bytecode, as a reference for the test.\npragma solidity 0.8.6;\n\ncontract Example1 {\n    uint256 private initialized = 0;\n    uint256 public count = 1;\n\n    function init() public {\n        initialized = 1;\n    }\n\n    function run(uint256 input, uint val) public {\n        if (val == 3) {\n            count += input;\n        }\n        else\n            count++;\n    }\n}\n"
  },
  {
    "path": "tests/testdata/concolic_io/simple_example_input.json",
    "content": "{\n    \"initialState\": {\n        \"accounts\": {\n            \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\": {\n                \"balance\": \"0x10000\",\n                \"code\": \"\",\n                \"nonce\": 0,\n                \"storage\": {}\n            },\n            \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\": {\n                \"balance\": \"0x0\",\n                \"code\": \"\",\n                \"nonce\": 0,\n                \"storage\": {}\n            }\n        }\n    },\n    \"steps\": [{\n        \"address\": \"\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x6080604052600080556001805534801561001857600080fd5b50610287806100286000396000f3fe608060405234801561001057600080fd5b50600436106100415760003560e01c806306661abd146100465780637357f5d214610064578063e1c7392a14610080575b600080fd5b61004e61008a565b60405161005b9190610142565b60405180910390f35b61007e600480360381019061007991906100f3565b610090565b005b6100886100d4565b005b60015481565b60038114156100b75781600160008282546100ab919061015d565b925050819055506100d0565b600160008154809291906100ca906101bd565b91905055505b5050565b6001600081905550565b6000813590506100ed8161023a565b92915050565b6000806040838503121561010a57610109610235565b5b6000610118858286016100de565b9250506020610129858286016100de565b9150509250929050565b61013c816101b3565b82525050565b60006020820190506101576000830184610133565b92915050565b6000610168826101b3565b9150610173836101b3565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff038211156101a8576101a7610206565b5b828201905092915050565b6000819050919050565b60006101c8826101b3565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8214156101fb576101fa610206565b5b600182019050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b610243816101b3565b811461024e57600080fd5b5056fea2646970667358221220de20d82abee4e4f81661465126dda93179255f9249d58bde7c3ea5f5f8bc3dbb64736f6c63430008060033\",\n        \"name\": \"unknown\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    }, \n    {\n        \"address\": \"0x901d12ebe1b195e5aa8748e62bd7734ae19b51f\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"0x7357f5d2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x7357f5d2000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n        \"name\": \"run(uint256,uint256)\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    }]\n}\n"
  },
  {
    "path": "tests/testdata/concolic_io/two_contract.sol",
    "content": "pragma solidity 0.8.6;\n\n/**\n * @title Storage\n * @dev Store & retrieve value in a variable\n */\ncontract D1 {\n\n    uint256 number;\n\n    function store(uint256 num) public {\n        assert(num < 5);\n        number =num;\n    }\n    \n    function retval() public returns(uint256){\n        return number;\n    }\n}\n\ncontract D2 {\n D1 d1;\n  constructor() public\n  {\n       d1 = D1(0x0901d12ebE1b195E5AA8748E62Bd7734aE19B51F);\n  }\n  function test(uint256 num) public returns(uint256) {\n    uint256 sum = d1.retval() + num;\n    if (sum == 10) {\n        return sum + 10;\n    }\n    else if(sum == 11) {\n        return sum + 12;\n    }\n    else if(sum == 30) {\n        return sum * 2;\n    }\n    assert(sum != 20);\n    return sum;\n  }\n}\n\n"
  },
  {
    "path": "tests/testdata/concolic_io/two_contract_input.json",
    "content": "{\n    \"initialState\": {\n        \"accounts\": {\n            \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\": {\n                \"balance\": \"0x10000000000000000000000000000\",\n                \"code\": \"\",\n                \"nonce\": 0,\n                \"storage\": {}\n            },\n            \"0xdeadbeefdeadbeefdeadbeefdeadbeefdeadbeef\": {\n                \"balance\": \"0x0\",\n                \"code\": \"\",\n                \"nonce\": 0,\n                \"storage\": {}\n            }\n        }\n    },\n    \"steps\": [{\n        \"address\": \"\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x608060405234801561001057600080fd5b50610190806100206000396000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c80636057361d1461003b5780639c88345314610057575b600080fd5b610055600480360381019061005091906100ae565b610075565b005b61005f610090565b60405161006c91906100ea565b60405180910390f35b600581106100865761008561010f565b5b8060008190555050565b60008054905090565b6000813590506100a881610143565b92915050565b6000602082840312156100c4576100c361013e565b5b60006100d284828501610099565b91505092915050565b6100e481610105565b82525050565b60006020820190506100ff60008301846100db565b92915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b600080fd5b61014c81610105565b811461015757600080fd5b5056fea26469706673582212200d02c19e8a2bae5958a822a8cfde054e94c216f2113e4b13c9dfcebaa7fd6d1564736f6c63430008060033\",\n        \"name\": \"unknown\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    },\n    {\n        \"address\": \"0x0901d12ebE1b195E5AA8748E62Bd7734aE19B51F\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x6057361d0000000000000000000000000000000000000000000000000000000000000001\",\n        \"name\": \"unknown\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    },\n    {\n        \"address\": \"\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x608060405234801561001057600080fd5b50730901d12ebe1b195e5aa8748e62bd7734ae19b51f6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061039e806100746000396000f3fe608060405234801561001057600080fd5b506004361061002b5760003560e01c806329e99f0714610030575b600080fd5b61004a600480360381019061004591906101b0565b610060565b6040516100579190610219565b60405180910390f35b6000808260008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16639c8834536040518163ffffffff1660e01b8152600401602060405180830381600087803b1580156100cc57600080fd5b505af11580156100e0573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061010491906101dd565b61010e9190610234565b9050600a81141561012e57600a816101269190610234565b915050610181565b600b81141561014c57600c816101449190610234565b915050610181565b601e81141561016a57600281610162919061028a565b915050610181565b601481141561017c5761017b6102ee565b5b809150505b919050565b60008135905061019581610351565b92915050565b6000815190506101aa81610351565b92915050565b6000602082840312156101c6576101c561034c565b5b60006101d484828501610186565b91505092915050565b6000602082840312156101f3576101f261034c565b5b60006102018482850161019b565b91505092915050565b610213816102e4565b82525050565b600060208201905061022e600083018461020a565b92915050565b600061023f826102e4565b915061024a836102e4565b9250827fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff0382111561027f5761027e61031d565b5b828201905092915050565b6000610295826102e4565b91506102a0836102e4565b9250817fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff04831182151516156102d9576102d861031d565b5b828202905092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600080fd5b61035a816102e4565b811461036557600080fd5b5056fea26469706673582212205af1f2d3a496abf9b24e8953ec8c2869d565a0a6057c1ff82097fbff424f6e3464736f6c63430008060033\",\n        \"name\": \"unknown\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    },\n    {\n        \"address\": \"0x384f682f4a5AbefC8795Cc38a340dE9446dFAE7A\",\n        \"blockCoinbase\": \"0xcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcbcb\",\n        \"blockDifficulty\": \"0xa7d7343662e26\",\n        \"blockGasLimit\": \"0x7d0000\",\n        \"blockNumber\": \"0x66e393\",\n        \"blockTime\": \"0x5bfa4639\",\n        \"calldata\": \"0x29e99f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n        \"gasLimit\": \"0x7d000\",\n        \"gasPrice\": \"0x773594000\",\n        \"input\": \"0x29e99f07000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000\",\n        \"name\": \"\",\n        \"origin\": \"0xaffeaffeaffeaffeaffeaffeaffeaffeaffeaffe\",\n        \"value\": \"0x0\"\n    }]\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/SecureVault.sol",
    "content": "\npragma solidity ^0.8.20;\n\nabstract contract Context {\n    function _msgSender() internal view virtual returns (address) {\n        return msg.sender;\n    }\n\n    function _msgData() internal view virtual returns (bytes calldata) {\n        return msg.data;\n    }\n}\nabstract contract Ownable is Context {\n    address private _owner;\n\n    /**\n     * @dev The caller account is not authorized to perform an operation.\n     */\n    error OwnableUnauthorizedAccount(address account);\n\n    /**\n     * @dev The owner is not a valid owner account. (eg. `address(0)`)\n     */\n    error OwnableInvalidOwner(address owner);\n\n    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);\n\n    /**\n     * @dev Initializes the contract setting the address provided by the deployer as the initial owner.\n     */\n    constructor(address initialOwner) {\n        if (initialOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(initialOwner);\n    }\n\n    /**\n     * @dev Throws if called by any account other than the owner.\n     */\n    modifier onlyOwner() {\n        _checkOwner();\n        _;\n    }\n\n    /**\n     * @dev Returns the address of the current owner.\n     */\n    function owner() public view virtual returns (address) {\n        return _owner;\n    }\n\n    /**\n     * @dev Throws if the sender is not the owner.\n     */\n    function _checkOwner() internal view virtual {\n        if (owner() != _msgSender()) {\n            revert OwnableUnauthorizedAccount(_msgSender());\n        }\n    }\n\n    /**\n     * @dev Leaves the contract without owner. It will not be possible to call\n     * `onlyOwner` functions. Can only be called by the current owner.\n     *\n     * NOTE: Renouncing ownership will leave the contract without an owner,\n     * thereby disabling any functionality that is only available to the owner.\n     */\n    function renounceOwnership() public virtual onlyOwner {\n        _transferOwnership(address(0));\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Can only be called by the current owner.\n     */\n    function transferOwnership(address newOwner) public virtual onlyOwner {\n        if (newOwner == address(0)) {\n            revert OwnableInvalidOwner(address(0));\n        }\n        _transferOwnership(newOwner);\n    }\n\n    /**\n     * @dev Transfers ownership of the contract to a new account (`newOwner`).\n     * Internal function without access restriction.\n     */\n    function _transferOwnership(address newOwner) internal virtual {\n        address oldOwner = _owner;\n        _owner = newOwner;\n        emit OwnershipTransferred(oldOwner, newOwner);\n    }\n}\ncontract SecureVault is Ownable {\n    // Event to emit when Ether is deposited\n    event Deposit(address indexed sender, uint256 amount);\n    // Event to emit when Ether is withdrawn\n    event Withdrawal(address indexed to, uint256 amount);\n\n    // Constructor that sets the initial owner of the SecureVault\n    constructor(address initialOwner) Ownable(initialOwner) {}\n\n    // Function to deposit Ether into the contract. Anybody can deposit.\n    function deposit() external payable {\n        require(msg.value > 0, \"Cannot deposit 0 Ether\");\n        emit Deposit(_msgSender(), msg.value);\n    }\n\n    // Function that allows only the owner to withdraw Ether from the contract.\n    function withdraw(uint256 amount) external onlyOwner {\n        require(address(this).balance >= amount, \"Insufficient balance to withdraw\");\n        payable(owner()).transfer(amount);\n        emit Withdrawal(owner(), amount);\n    }\n\n    // Function to check the balance of the contract.\n    function getBalance() external view returns (uint256) {\n        return address(this).balance;\n    }\n}"
  },
  {
    "path": "tests/testdata/input_contracts/SimpleModifier.sol",
    "content": "pragma solidity ^0.5.0;\n\n\n\ncontract SimpleModifier {\n\n  address payable public owner;\n\n  modifier onlyOwner() {\n    require(msg.sender == owner);\n    _;\n  }\n\n\n  function withdrawfunds() public onlyOwner {\n    owner.send(address(this).balance);\n  }\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/WalletLibrary.sol",
    "content": "//sol Wallet\n// Multi-sig, daily-limited account proxy/wallet.\n// @authors:\n// Gav Wood <g@ethdev.com>\n// inheritable \"property\" contract that enables methods to be protected by requiring the acquiescence of either a\n// single, or, crucially, each of a number of, designated owners.\n// usage:\n// use modifiers onlyowner (just own owned) or onlymanyowners(hash), whereby the same hash must be provided by\n// some number (specified in constructor) of the set of owners (specified in the constructor, modifiable) before the\n// interior is executed.\n\npragma solidity 0.5.0;\n\ncontract WalletEvents {\n  // EVENTS\n\n  // this contract only has six types of events: it can accept a confirmation, in which case\n  // we record owner and operation (hash) alongside it.\n  event Confirmation(address owner, bytes32 operation);\n  event Revoke(address owner, bytes32 operation);\n\n  // some others are in the case of an owner changing.\n  event OwnerChanged(address oldOwner, address newOwner);\n  event OwnerAdded(address newOwner);\n  event OwnerRemoved(address oldOwner);\n\n  // the last one is emitted if the required signatures change\n  event RequirementChanged(uint newRequirement);\n\n  // Funds has arrived into the wallet (record how much).\n  event Deposit(address _from, uint value);\n  // Single transaction going out of the wallet (record who signed for it, how much, and to whom it's going).\n  event SingleTransact(address owner, uint value, address to, bytes data, address created);\n  // 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).\n  event MultiTransact(address owner, bytes32 operation, uint value, address to, bytes data, address created);\n  // Confirmation still needed for a transaction.\n  event ConfirmationNeeded(bytes32 operation, address initiator, uint value, address to, bytes data);\n}\n\ncontract WalletAbi {\n  // Revokes a prior confirmation of the given operation\n  function revoke(bytes32 _operation) external;\n\n  // Replaces an owner `_from` with another `_to`.\n  function changeOwner(address _from, address _to) external;\n\n  function addOwner(address _owner) external;\n\n  function removeOwner(address _owner) external;\n\n  function changeRequirement(uint _newRequired) external;\n\n  function isOwner(address _addr) public returns (bool);\n\n  function hasConfirmed(bytes32 _operation, address _owner) external returns (bool);\n\n  // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.\n  function setDailyLimit(uint _newLimit) external;\n\n  function execute(address _to, uint _value, bytes calldata _data) external returns (bytes32 o_hash);\n  function confirm(bytes32 _h) public returns (bool o_success);\n}\n\ncontract WalletLibrary is WalletEvents {\n  // TYPES\n\n  // struct for the status of a pending operation.\n  struct PendingState {\n    uint yetNeeded;\n    uint ownersDone;\n    uint index;\n  }\n\n  // Transaction structure to remember details of transaction lest it need be saved for a later call.\n  struct Transaction {\n    address to;\n    uint value;\n    bytes data;\n  }\n\n  // MODIFIERS\n\n  // simple single-sig function modifier.\n  modifier onlyowner {\n    if (isOwner(msg.sender))\n      _;\n  }\n  // multi-sig function modifier: the operation must have an intrinsic hash in order\n  // that later attempts can be realised as the same underlying operation and\n  // thus count as confirmations.\n  modifier onlymanyowners(bytes32 _operation) {\n    if (confirmAndCheck(_operation))\n      _;\n  }\n\n  // METHODS\n\n  // gets called when no other function matches\n  function() external payable {\n    // just being sent some cash?\n    if (msg.value > 0)\n      emit Deposit(msg.sender, msg.value);\n  }\n\n  // constructor is given number of sigs required to do protected \"onlymanyowners\" transactions\n  // as well as the selection of addresses capable of confirming them.\n  function initMultiowned(address[] memory _owners, uint _required) public only_uninitialized {\n    m_numOwners = _owners.length + 1;\n    m_owners[1] = uint(msg.sender);\n    m_ownerIndex[uint(msg.sender)] = 1;\n    for (uint i = 0; i < _owners.length; ++i)\n    {\n      m_owners[2 + i] = uint(_owners[i]);\n      m_ownerIndex[uint(_owners[i])] = 2 + i;\n    }\n    m_required = _required;\n  }\n\n  // Revokes a prior confirmation of the given operation\n  function revoke(bytes32 _operation) external {\n    uint ownerIndex = m_ownerIndex[uint(msg.sender)];\n    // make sure they're an owner\n    if (ownerIndex == 0) return;\n    uint ownerIndexBit = 2**ownerIndex;\n    PendingState memory pending = m_pending[_operation];\n    if (pending.ownersDone & ownerIndexBit > 0) {\n      pending.yetNeeded++;\n      pending.ownersDone -= ownerIndexBit;\n      emit Revoke(msg.sender, _operation);\n    }\n  }\n\n  // Replaces an owner `_from` with another `_to`.\n  function changeOwner(address _from, address _to) onlymanyowners(keccak256(msg.data)) external {\n    if (isOwner(_to)) return;\n    uint ownerIndex = m_ownerIndex[uint(_from)];\n    if (ownerIndex == 0) return;\n\n    clearPending();\n    m_owners[ownerIndex] = uint(_to);\n    m_ownerIndex[uint(_from)] = 0;\n    m_ownerIndex[uint(_to)] = ownerIndex;\n    emit OwnerChanged(_from, _to);\n  }\n\n  function addOwner(address _owner) onlymanyowners(keccak256(msg.data)) external {\n    if (isOwner(_owner)) return;\n\n    clearPending();\n    if (m_numOwners >= c_maxOwners)\n      reorganizeOwners();\n    if (m_numOwners >= c_maxOwners)\n      return;\n    m_numOwners++;\n    m_owners[m_numOwners] = uint(_owner);\n    m_ownerIndex[uint(_owner)] = m_numOwners;\n    emit OwnerAdded(_owner);\n  }\n\n  function removeOwner(address _owner) onlymanyowners(keccak256(msg.data)) external {\n    uint ownerIndex = m_ownerIndex[uint(_owner)];\n    if (ownerIndex == 0) return;\n    if (m_required > m_numOwners - 1) return;\n\n    m_owners[ownerIndex] = 0;\n    m_ownerIndex[uint(_owner)] = 0;\n    clearPending();\n    reorganizeOwners(); //make sure m_numOwner is equal to the number of owners and always points to the optimal free slot\n    emit OwnerRemoved(_owner);\n  }\n\n  function changeRequirement(uint _newRequired) onlymanyowners(keccak256(msg.data)) external {\n    if (_newRequired > m_numOwners) return;\n    m_required = _newRequired;\n    clearPending();\n    emit RequirementChanged(_newRequired);\n  }\n\n  // Gets an owner by 0-indexed position (using numOwners as the count)\n  function getOwner(uint ownerIndex) external view returns (address) {\n    return address(m_owners[ownerIndex + 1]);\n  }\n\n  function isOwner(address _addr) public view returns (bool) {\n    return m_ownerIndex[uint(_addr)] > 0;\n  }\n\n  function hasConfirmed(bytes32 _operation, address _owner) external view returns (bool) {\n    PendingState memory pending = m_pending[_operation];\n    uint ownerIndex = m_ownerIndex[uint(_owner)];\n\n    // make sure they're an owner\n    if (ownerIndex == 0) return false;\n\n    // determine the bit to set for this owner.\n    uint ownerIndexBit = 2**ownerIndex;\n    return !(pending.ownersDone & ownerIndexBit == 0);\n  }\n\n  // constructor - stores initial daily limit and records the present day's index.\n  function initDaylimit(uint _limit) public only_uninitialized {\n    m_dailyLimit = _limit;\n    m_lastDay = today();\n  }\n  // (re)sets the daily limit. needs many of the owners to confirm. doesn't alter the amount already spent today.\n  function setDailyLimit(uint _newLimit) onlymanyowners(keccak256(msg.data)) external {\n    m_dailyLimit = _newLimit;\n  }\n  // resets the amount already spent today. needs many of the owners to confirm.\n  function resetSpentToday() onlymanyowners(keccak256(msg.data)) external {\n    m_spentToday = 0;\n  }\n\n  // throw unless the contract is not yet initialized.\n  modifier only_uninitialized { require(m_numOwners == 0); _; }\n\n  // constructor - just pass on the owner array to the multiowned and\n  // the limit to daylimit\n  function initWallet(address[] memory _owners, uint _required, uint _daylimit) public only_uninitialized {\n    initDaylimit(_daylimit);\n    initMultiowned(_owners, _required);\n  }\n\n  // kills the contract sending everything to `_to`.\n  function kill(address payable _to) onlymanyowners(keccak256(msg.data)) external {\n    selfdestruct(_to);\n  }\n\n  // Outside-visible transact entry point. Executes transaction immediately if below daily spend limit.\n  // If not, goes into multisig process. We provide a hash on return to allow the sender to provide\n  // shortcuts for the other confirmations (allowing them to avoid replicating the _to, _value\n  // and _data arguments). They still get the option of using them if they want, anyways.\n  function execute(address _to, uint _value, bytes calldata _data) external onlyowner returns (bytes32 o_hash) {\n    // first, take the opportunity to check that we're under the daily limit.\n    if ((_data.length == 0 && underLimit(_value)) || m_required == 1) {\n      // yes - just execute the call.\n      address created;\n      if (_to == address(0)) {\n        created = create(_value, _data);\n      } else {\n        (bool success, bytes memory data) = _to.call.value(_value)(_data);\n        require(success);\n      }\n      emit SingleTransact(msg.sender, _value, _to, _data, created);\n    } else {\n      // determine our operation hash.\n      o_hash = keccak256(abi.encode(msg.data, block.number));\n      // store if it's new\n      if (m_txs[o_hash].to == address(0) && m_txs[o_hash].value == 0 && m_txs[o_hash].data.length == 0) {\n        m_txs[o_hash].to = _to;\n        m_txs[o_hash].value = _value;\n        m_txs[o_hash].data = _data;\n      }\n      if (!confirm(o_hash)) {\n        emit ConfirmationNeeded(o_hash, msg.sender, _value, _to, _data);\n      }\n    }\n  }\n\n  function create(uint _value, bytes memory _code) internal returns (address o_addr) {\n    uint256 o_size;\n    assembly {\n      o_addr := create(_value, add(_code, 0x20), mload(_code))\n      o_size := extcodesize(o_addr)\n    }\n    require(o_size != 0);\n  }\n\n  // confirm a transaction through just the hash. we use the previous transactions map, m_txs, in order\n  // to determine the body of the transaction from the hash provided.\n  function confirm(bytes32 _h) public onlymanyowners(_h) returns (bool o_success) {\n    if (m_txs[_h].to != address(0) || m_txs[_h].value != 0 || m_txs[_h].data.length != 0) {\n      address created;\n      if (m_txs[_h].to == address(0)) {\n        created = create(m_txs[_h].value, m_txs[_h].data);\n      } else {\n          (bool success, bytes memory data) = m_txs[_h].to.call.value(m_txs[_h].value)(m_txs[_h].data);\n        require(success);\n      }\n\n      emit MultiTransact(msg.sender, _h, m_txs[_h].value, m_txs[_h].to, m_txs[_h].data, created);\n      delete m_txs[_h];\n      return true;\n    }\n  }\n\n  // INTERNAL METHODS\n\n  function confirmAndCheck(bytes32 _operation) internal returns (bool) {\n    // determine what index the present sender is:\n    uint ownerIndex = m_ownerIndex[uint(msg.sender)];\n    // make sure they're an owner\n    if (ownerIndex == 0) return false;\n\n    PendingState memory pending = m_pending[_operation];\n    // if we're not yet working on this operation, switch over and reset the confirmation status.\n    if (pending.yetNeeded == 0) {\n      // reset count of confirmations needed.\n      pending.yetNeeded = m_required;\n      // reset which owners have confirmed (none) - set our bitmap to 0.\n      pending.ownersDone = 0;\n      pending.index = m_pendingIndex.length++;\n      m_pendingIndex[pending.index] = _operation;\n    }\n    // determine the bit to set for this owner.\n    uint ownerIndexBit = 2**ownerIndex;\n    // make sure we (the message sender) haven't confirmed this operation previously.\n    if (pending.ownersDone & ownerIndexBit == 0) {\n      emit Confirmation(msg.sender, _operation);\n      // ok - check if count is enough to go ahead.\n      if (pending.yetNeeded <= 1) {\n        // enough confirmations: reset and run interior.\n        delete m_pendingIndex[m_pending[_operation].index];\n        delete m_pending[_operation];\n        return true;\n      }\n      else\n      {\n        // not enough: record that this owner in particular confirmed.\n        pending.yetNeeded--;\n        pending.ownersDone |= ownerIndexBit;\n      }\n    }\n  }\n\n  function reorganizeOwners() private {\n    uint free = 1;\n    while (free < m_numOwners)\n    {\n      while (free < m_numOwners && m_owners[free] != 0) free++;\n      while (m_numOwners > 1 && m_owners[m_numOwners] == 0) m_numOwners--;\n      if (free < m_numOwners && m_owners[m_numOwners] != 0 && m_owners[free] == 0)\n      {\n        m_owners[free] = m_owners[m_numOwners];\n        m_ownerIndex[m_owners[free]] = free;\n        m_owners[m_numOwners] = 0;\n      }\n    }\n  }\n\n  // checks to see if there is at least `_value` left from the daily limit today. if there is, subtracts it and\n  // returns true. otherwise just returns false.\n  function underLimit(uint _value) internal onlyowner returns (bool) {\n    // reset the spend limit if we're on a different day to last time.\n    if (today() > m_lastDay) {\n      m_spentToday = 0;\n      m_lastDay = today();\n    }\n    // check to see if there's enough left - if so, subtract and return true.\n    // overflow protection                    // dailyLimit check\n    if (m_spentToday + _value >= m_spentToday && m_spentToday + _value <= m_dailyLimit) {\n      m_spentToday += _value;\n      return true;\n    }\n    return false;\n  }\n\n  // determines today's index.\n  function today() private view returns (uint) { return now / 1 days; }\n\n  function clearPending() internal {\n    uint length = m_pendingIndex.length;\n\n    for (uint i = 0; i < length; ++i) {\n      delete m_txs[m_pendingIndex[i]];\n\n      if (m_pendingIndex[i] != 0)\n        delete m_pending[m_pendingIndex[i]];\n    }\n\n    delete m_pendingIndex;\n  }\n\n  // FIELDS\n  address _walletLibrary = 0xCAfEcAfeCAfECaFeCaFecaFecaFECafECafeCaFe;\n\n  // the number of owners that must confirm the same operation before it is run.\n  uint public m_required;\n  // pointer used to find a free slot in m_owners\n  uint public m_numOwners;\n\n  uint public m_dailyLimit;\n  uint public m_spentToday;\n  uint public m_lastDay;\n\n  // list of owners\n  uint[256] m_owners;\n\n  uint c_maxOwners = 250;\n  // index on the list of owners to allow reverse lookup\n  mapping(uint => uint) m_ownerIndex;\n  // the ongoing operations.\n  mapping(bytes32 => PendingState) m_pending;\n  bytes32[] m_pendingIndex;\n\n  // pending transactions we have at present.\n  mapping (bytes32 => Transaction) m_txs;\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/base_case.sol",
    "content": "contract B{\n    uint x=0;\n    function incr() public returns(uint){\n        require(x==0);\n        x += 1;\n    }\n    function incr2() public payable returns(uint){\n        require(x==1);\n        x += 1;\n\n    }\n    function continous_incr() public payable returns(uint){\n        require(x>=2);\n        x += 1;\n    }\n\n    function destroy() public returns(uint){\n        selfdestruct(msg.sender);\n    }\n}\n\n"
  },
  {
    "path": "tests/testdata/input_contracts/calls.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract Caller {\n\n\taddress public fixed_address;\n\taddress public stored_address;\n\n\tuint256 statevar;\n\n\tconstructor(address addr) public {\n\t\tfixed_address = address(0x552254CbAaF32613C6c0450CF19524594eF84044);\n\t}\n\n\tfunction thisisfine() public {\n\t    fixed_address.call(\"\");\n\t}\n\n\tfunction reentrancy() public {\n\t    fixed_address.call(\"\");\n\t    statevar = 0;\n\t}\n\n\tfunction calluseraddress(address addr) public {\n\t    addr.call(\"\");\n\t}\n\n\tfunction callstoredaddress() public {\n\t    stored_address.call(\"\");\n\t    statevar = 0;\n\t}\n\n\tfunction setstoredaddress(address addr) public {\n\t    stored_address = addr;\n\t}\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/complex.sol",
    "content": "\npragma solidity 0.5.0;\n\ncontract WalletLibrary {\n\n  struct PendingState {\n    uint yetNeeded;\n    uint ownersDone;\n    uint index;\n  }\n\n  struct Transaction {\n    address to;\n    uint value;\n    bytes data;\n  }\n\n  modifier onlymanyowners(bytes32 _operation) {\n    if (confirmAndCheck(_operation))\n      _;\n  }\n\n\n  \n  function initMultiowned(address[] memory _owners, uint _required) public only_uninitialized {\n    m_numOwners = _owners.length + 1;\n    m_owners[1] = uint(msg.sender);\n    m_ownerIndex[uint(msg.sender)] = 1;\n    for (uint i = 0; i < _owners.length; ++i)\n    {\n      m_owners[2 + i] = uint(_owners[i]);\n      m_ownerIndex[uint(_owners[i])] = 2 + i;\n    }\n    m_required = _required;\n  }\n\n  modifier only_uninitialized { require(m_numOwners == 0); _; }\n\n\n  function kill(address payable _to) onlymanyowners(keccak256(msg.data)) external {\n    selfdestruct(_to);\n  }\n\n\n\n\n  function confirmAndCheck(bytes32 _operation) internal returns (bool) {\n    uint ownerIndex = m_ownerIndex[uint(msg.sender)];\n    if (ownerIndex == 0) return false;\n\n    PendingState memory pending = m_pending[_operation];\n    if (pending.yetNeeded == 0) {\n      pending.yetNeeded = m_required;\n      pending.ownersDone = 0;\n      pending.index = m_pendingIndex.length++;\n      m_pendingIndex[pending.index] = _operation;\n    }\n    uint ownerIndexBit = 2**ownerIndex;\n    if (pending.ownersDone & ownerIndexBit == 0) {\n      if (pending.yetNeeded <= 1) {\n        delete m_pendingIndex[m_pending[_operation].index];\n        delete m_pending[_operation];\n        return true;\n      }\n      else\n      {\n        // not enough: record that this owner in particular confirmed.\n        pending.yetNeeded--;\n        pending.ownersDone |= ownerIndexBit;\n      }\n    }\n    \n    \n  }\n\n\n  uint public m_required;\n  uint public m_numOwners;\n\n\n  // list of owners\n  uint[256] m_owners;\n\n  mapping(uint => uint) m_ownerIndex;\n  mapping(bytes32 => PendingState) m_pending;\n  bytes32[] m_pendingIndex;\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/constructor_assert.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract AssertFail {\n    constructor(uint8 var1) public {\n        assert(var1 > 0);\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/destruct.sol",
    "content": "\npragma solidity 0.5.0;\n\ncontract WalletLibrary {\n\n  struct PendingState {\n    uint yetNeeded;\n    uint ownersDone;\n    uint index;\n  }\n\n  struct Transaction {\n    address to;\n    uint value;\n    bytes data;\n  }\n\n  modifier onlymanyowners(bytes32 _operation) {\n    if (confirmAndCheck(_operation))\n      _;\n  }\n\n\n  \n  function initMultiowned(address[] memory _owners, uint _required) public only_uninitialized {\n    m_numOwners = _owners.length + 1;\n    m_owners[1] = uint(msg.sender);\n    m_ownerIndex[uint(msg.sender)] = 1;\n    for (uint i = 0; i < _owners.length; ++i)\n    {\n      m_owners[2 + i] = uint(_owners[i]);\n      m_ownerIndex[uint(_owners[i])] = 2 + i;\n    }\n    m_required = _required;\n  }\n\n  modifier only_uninitialized { require(m_numOwners == 0); _; }\n\n\n  function kill(address payable _to) onlymanyowners(keccak256(msg.data)) external {\n    selfdestruct(_to);\n  }\n\n\n\n\n  function confirmAndCheck(bytes32 _operation) internal returns (bool) {\n    uint ownerIndex = m_ownerIndex[uint(msg.sender)];\n    if (ownerIndex == 0) return false;\n\n    PendingState memory pending = m_pending[_operation];\n    if (pending.yetNeeded == 0) {\n      pending.yetNeeded = m_required;\n      pending.ownersDone = 0;\n      pending.index = m_pendingIndex.length++;\n      m_pendingIndex[pending.index] = _operation;\n    }\n    uint ownerIndexBit = 2**ownerIndex;\n    if (pending.ownersDone & ownerIndexBit == 0) {\n      if (pending.yetNeeded <= 1) {\n        delete m_pendingIndex[m_pending[_operation].index];\n        delete m_pending[_operation];\n        return true;\n      }\n      else\n      {\n        // not enough: record that this owner in particular confirmed.\n        pending.yetNeeded--;\n        pending.ownersDone |= ownerIndexBit;\n      }\n    }\n    \n    \n  }\n\n\n  uint public m_required;\n  uint public m_numOwners;\n\n\n  // list of owners\n  uint[256] m_owners;\n\n  mapping(uint => uint) m_ownerIndex;\n  mapping(bytes32 => PendingState) m_pending;\n  bytes32[] m_pendingIndex;\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/destruct_crlf.sol",
    "content": "pragma solidity ^0.5.0;\r\n\r\n\r\ncontract Suicide {\r\n\r\n  function kill(address payable addr) public {\r\n    selfdestruct(addr);\r\n  }\r\n\r\n}\r\n"
  },
  {
    "path": "tests/testdata/input_contracts/environments.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract IntegerOverflow2 {\n    uint256 public count = 7;\n    mapping(address => uint256) balances;\n\n  function batchTransfer(address[] memory _receivers, uint256 _value) public returns(bool){\n    uint cnt = _receivers.length;\n    uint256 amount = uint256(cnt) * _value;\n\n    require(cnt > 0 && cnt <= 20);\n\n    balances[msg.sender] -=amount;\n\n    return true;\n  }\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/ether_send.sol",
    "content": "pragma solidity ^0.5.0;\n\n\n\ncontract Crowdfunding {\n\n  mapping(address => uint) public balances;\n  address public owner;\n  uint256 INVEST_MIN = 1 ether;\n  uint256 INVEST_MAX = 10 ether;\n\n  modifier onlyOwner() {\n    require(msg.sender == owner);\n    _;\n  }\n\n  function crowdfunding() public {\n    owner = msg.sender;\n  }\n\n  function withdrawfunds() public onlyOwner {\n    msg.sender.transfer(address(this).balance);\n  }\n\n  function invest() public payable {\n    require(msg.value > INVEST_MIN && msg.value < INVEST_MAX);\n\n    balances[msg.sender] += msg.value;\n  }\n\n  function getBalance() public view returns (uint) {\n    return balances[msg.sender];\n  }\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/exceptions.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract Exceptions {\n\n    uint256[8] myarray;\n\n    function assert1() public pure {\n    \tuint256 i = 1;\n        assert(i == 0);\n    }\n\n    function assert2() public pure {\n    \tuint256 i = 1;\n        assert(i > 0);\n    }\n\n    function assert3(uint256 input) public pure {\n        if (input > 10) {\n            assert(input != 23);\n        }\n    }\n\n    function requireisfine(uint256 input) public pure {\n        require(input != 23);\n    }\n\n    function divisionby0(uint256 input) public pure {\n        uint256 i = 1/input;\n    }\n\n    function thisisfine(uint256 input) public pure {\n        if (input > 0) {\n            uint256 i = 1/input;\n        }\n    }\n\n    function arrayaccess(uint256 index) public view {\n        uint256 i = myarray[index];\n    }\n\n    function thisisalsofind(uint256 index) public view {\n        if (index < 8) {\n            uint256 i = myarray[index];\n        }\n    }\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/exceptions_0.8.0.sol",
    "content": "pragma solidity ^0.8.0;\n\n\ncontract Exceptions {\n\n    uint val;\n\n    function change_val() public {\n        val = 1;\n    }\n    function assert1() public pure {\n    \tuint256 i = 1;\n        assert(i == 0);\n    }\n\n    function fail() public view {\n        assert(val==2);\n    }\n\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/extcall.sol",
    "content": "pragma solidity ^0.6.0;\n\ninterface IERC20 {\n    function transfer(address to, uint256 amount) external returns (bool);\n}\n\ncontract A {\n    constructor() public {\n        /// nothing detected\n        address(0).call(\"\");\n        IERC20(address(0)).transfer(address(0), 0);\n        assert(false);\n    }\n}\n\n"
  },
  {
    "path": "tests/testdata/input_contracts/flag_array.sol",
    "content": "pragma solidity ^0.8.0;\n\ncontract BasicLiquidation {\n    bool[4096] _flags;\n    constructor() payable\n    {\n        require(msg.value == 0.1 ether);\n        _flags[1234] = true;\n    }\n    function extractMoney(uint256 idx) public payable\n    {\n        require(idx >= 0);\n        require(idx < 4096);\n        require(_flags[idx]);\n        payable(msg.sender).transfer(address(this).balance);\n    }\n}"
  },
  {
    "path": "tests/testdata/input_contracts/hash_test.sol",
    "content": "\ncontract StorageTest {\n      mapping(bytes32 => address) data;\n\n  function confirmAndCheck(uint256 x) public{\n      data[keccak256(abi.encodePacked(x))] = msg.sender;\n  }\n\n  function destruct(bytes32 x) public{\n      require(data[x] == msg.sender);\n      selfdestruct(data[x]);\n  }\n\n}\n\n"
  },
  {
    "path": "tests/testdata/input_contracts/integer_edge_case.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8.19;\ncontract B {\n    function f(uint256 arg) public view returns(uint256) {\n        uint256 res;\n        unchecked{        \n            res = 10_000_000_000 * arg; // undetected overflow\n        }\n        //assert(res > arg); // the assertion violation is correctly detected if added\n        return res;       \n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/kcalls.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract Kcalls {\n    uint public n;\n    address public sender;\n\n    function callSetN(address _e, uint _n) public {\n        _e.call(abi.encode(bytes4(keccak256(\"setN(uint256)\")), _n));\n    }\n\n    function callcodeSetN(address _e, uint _n) public view {\n        _e.staticcall(abi.encode(bytes4(keccak256(\"setN(uint256)\")), _n));\n    }\n\n    function delegatecallSetN(address _e, uint _n) public {\n        _e.delegatecall(abi.encode(bytes4(keccak256(\"setN(uint256)\")), _n));\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/large.sol",
    "content": "contract B{\n    uint x=0;\n    uint total=0;\n    function incr() public returns(uint){\n        x += 1;\n    }\n\n\n    function foo() public returns(uint){\n        require(x==10);\n        selfdestruct(msg.sender);\n    }\n}\n\n"
  },
  {
    "path": "tests/testdata/input_contracts/metacoin.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract MetaCoin {\n\tmapping (address => uint) public balances;\n\tconstructor() public {\n\t\tbalances[msg.sender] = 10000;\n\t}\n\n\tfunction sendToken(address receiver, uint amount) public returns(bool successful){\n\t\tif (balances[msg.sender] < amount) return false;\n\t\tbalances[msg.sender] -= amount;\n\t\tbalances[receiver] += amount;\n\t\treturn false;\n\t}\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/multi_contracts.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract Transfer1 {\n    function transfer() public {\n        msg.sender.transfer(1 ether);\n    }\n\n}\n\n\ncontract Transfer2 {\n    function transfer() public {\n        msg.sender.transfer(2 ether);\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/nonascii.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract nonAscii {\n  function renderNonAscii () public pure returns (string memory) {\n\t  return \"Хэллоу Ворлд\";\n  }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/old_origin.sol",
    "content": "pragma solidity ^0.4.11;\n\n\ncontract Origin {\n  address public owner;\n\n\n  /**\n   * @dev The Ownable constructor sets the original `owner` of the contract to the sender\n   * account.\n   */\n  function Origin()  {\n    owner = msg.sender;\n  }\n\n\n  /**\n   * @dev Throws if called by any account other than the owner.\n   */\n  modifier onlyOwner() {\n    require(tx.origin != owner);\n    _;\n  }\n\n\n  /**\n   * @dev Allows the current owner to transfer control of the contract to a newOwner.\n   * @param newOwner The address to transfer ownership to.\n   */\n  function transferOwnership(address newOwner) public onlyOwner {\n    if (newOwner != address(0)) {\n      owner = newOwner;\n    }\n  }\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/old_version.sol",
    "content": "pragma solidity 0.4.11;\ncontract test { }\n"
  },
  {
    "path": "tests/testdata/input_contracts/origin.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract Origin {\n  address public owner;\n\n\n  /**\n   * @dev The Ownable constructor sets the original `owner` of the contract to the sender\n   * account.\n   */\n  constructor() public {\n    owner = msg.sender;\n  }\n\n\n  /**\n   * @dev Throws if called by any account other than the owner.\n   */\n  modifier onlyOwner() {\n    require(tx.origin != owner);\n    _;\n  }\n\n\n  /**\n   * @dev Allows the current owner to transfer control of the contract to a newOwner.\n   * @param newOwner The address to transfer ownership to.\n   */\n  function transferOwnership(address newOwner) public onlyOwner {\n    if (newOwner != address(0)) {\n      owner = newOwner;\n    }\n  }\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/overflow.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract Over {\n\n  mapping(address => uint) balances;\n  uint public totalSupply;\n\n  constructor(uint _initialSupply) public {\n    balances[msg.sender] = totalSupply = _initialSupply;\n  }\n\n  function sendeth(address _to, uint _value) public returns (bool) {\n    require(balances[msg.sender] - _value >= 0);\n    balances[msg.sender] -= _value;\n    balances[_to] += _value;\n    return true;\n  }\n\n  function balanceOf(address _owner) public view returns (uint balance) {\n    return balances[_owner];\n  }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/regression_1.sol",
    "content": "pragma solidity ^0.8.0;\n\ncontract Regression_1 {\n    mapping (address => uint256) private userBalances;\n\n    uint256 public constant TOKEN_PRICE = 1 ether;\n    string public constant name = \"Moon Token\";\n    string public constant symbol = \"MOON\";\n\n    // The token is non-divisible\n    // You can buy/sell/transfer 1, 2, 3, or 46 tokens but not 33.5\n    uint8 public constant decimals = 0;\n\n    uint256 public totalSupply;\n\n    function buy(uint256 _amount) external payable {\n        require(\n            msg.value == _amount * TOKEN_PRICE, \n            \"Ether submitted and Token amount to buy mismatch\"\n        );\n\n        userBalances[msg.sender] += _amount;\n        totalSupply += _amount;\n    }\n\n    function sell(uint256 _amount) external {\n        require(userBalances[msg.sender] >= _amount, \"Insufficient balance\");\n\n        userBalances[msg.sender] -= _amount;\n        totalSupply -= _amount;\n\n        (bool success, ) = msg.sender.call{value: _amount * TOKEN_PRICE}(\"\");\n        require(success, \"Failed to send Ether\");\n\n        assert(getEtherBalance() == totalSupply * TOKEN_PRICE);\n    }\n\n    function transfer(address _to, uint256 _amount) external {\n        require(_to != address(0), \"_to address is not valid\");\n        require(userBalances[msg.sender] >= _amount, \"Insufficient balance\");\n        \n        userBalances[msg.sender] -= _amount;\n        userBalances[_to] += _amount;\n    }\n\n    function getEtherBalance() public view returns (uint256) {\n        return address(this).balance;\n    }\n\n    function getUserBalance(address _user) external view returns (uint256) {\n        return userBalances[_user];\n    }\n}"
  },
  {
    "path": "tests/testdata/input_contracts/requirements_violation_neg.sol",
    "content": "pragma solidity ^0.4.25;\n\ncontract Bar {\n    Foo private f = new Foo();\n    function doubleBaz() public view returns (int256) {\n        return 2 * f.baz(1); //Changes the external contract to not hit the overly strong requirement.\n    }\n}\n\ncontract Foo {\n    function baz(int256 x) public pure returns (int256) {\n        require(0 < x); //You can also fix the contract by changing the input to the uint type and removing the require\n        return 42;\n    }\n}"
  },
  {
    "path": "tests/testdata/input_contracts/requirements_violation_pos.sol",
    "content": "pragma solidity ^0.4.25;\n\ncontract Bar {\n    Foo private f = new Foo();\n    function doubleBaz() public view returns (int256) {\n        return 2 * f.baz(0);\n    }\n}\n\ncontract Foo {\n    function baz(int256 x) public pure returns (int256) {\n        require(0 < x);\n        return 42;\n    }\n}"
  },
  {
    "path": "tests/testdata/input_contracts/returnvalue.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract ReturnValue {\n\n  address public callee = 0xE0f7e56E62b4267062172495D7506087205A4229;\n\n  function callnotchecked() public {\n    callee.call(\"\");\n  }\n\n  function callchecked() public {\n    (bool success, bytes memory data) = callee.call(\"\");\n    require(success);\n  }\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/rubixi.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract Rubixi {\n    //Declare variables for storage critical to contract\n    uint private balance = 0;\n    uint private collectedFees = 0;\n    uint private feePercent = 10;\n    uint private pyramidMultiplier = 300;\n    uint private payoutOrder = 0;\n\n    address payable private creator;\n\n    modifier onlyowner {\n        if (msg.sender == creator) _;\n    }\n\n    struct Participant {\n        address payable etherAddress;\n        uint payout;\n    }\n\n    //Fallback function\n    function() external payable {\n        init();\n    }\n\n    //Sets creator\n    function dynamicPyramid() public {\n        creator = msg.sender;\n    }\n\n    Participant[] private participants;\n\n    //Fee functions for creator\n    function collectAllFees() public onlyowner {\n        require(collectedFees == 0);\n        creator.transfer(collectedFees);\n        collectedFees = 0;\n    }\n\n    function collectFeesInEther(uint _amt) public onlyowner {\n        _amt *= 1 ether;\n        if (_amt > collectedFees) collectAllFees();\n\n        require(collectedFees == 0);\n\n        creator.transfer(_amt);\n        collectedFees -= _amt;\n    }\n\n    function collectPercentOfFees(uint _pcent) public onlyowner {\n        require(collectedFees == 0 || _pcent > 100);\n\n        uint feesToCollect = collectedFees / 100 * _pcent;\n        creator.transfer(feesToCollect);\n        collectedFees -= feesToCollect;\n    }\n\n    //Functions for changing variables related to the contract\n    function changeOwner(address payable _owner) public onlyowner {\n        creator = _owner;\n    }\n\n    function changeMultiplier(uint _mult) public onlyowner {\n        require(_mult > 300 || _mult < 120);\n        pyramidMultiplier = _mult;\n    }\n\n    function changeFeePercentage(uint _fee) public onlyowner {\n        require(_fee > 10);\n        feePercent = _fee;\n    }\n\n    //Functions to provide information to end-user using JSON interface or other interfaces\n    function currentMultiplier() public view returns (uint multiplier, string memory info) {\n        multiplier = pyramidMultiplier;\n        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.\";\n    }\n\n    function currentFeePercentage() public view returns (uint fee, string memory info) {\n        fee = feePercent;\n        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%)\";\n}\n\n    function currentPyramidBalanceApproximately() public view returns (uint pyramidBalance, string memory info) {\n        pyramidBalance = balance / 1 ether;\n        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\";\n    }\n\n    function nextPayoutWhenPyramidBalanceTotalsApproximately() public view returns (uint balancePayout) {\n        balancePayout = participants[payoutOrder].payout / 1 ether;\n    }\n\n    function feesSeperateFromBalanceApproximately() public view returns (uint fees) {\n        fees = collectedFees / 1 ether;\n    }\n\n    function totalParticipants() public view returns (uint count) {\n        count = participants.length;\n    }\n\n    function numberOfParticipantsWaitingForPayout() public view returns (uint count) {\n        count = participants.length - payoutOrder;\n    }\n\n    function participantDetails(uint orderInPyramid) public view returns (address addr, uint payout) {\n        if (orderInPyramid <= participants.length) {\n            addr = participants[orderInPyramid].etherAddress;\n            payout = participants[orderInPyramid].payout / 1 ether;\n        }\n    }\n\n    //init function run on fallback\n    function init() private {\n        //Ensures only tx with value of 1 ether or greater are processed and added to pyramid\n        if (msg.value < 1 ether) {\n            collectedFees += msg.value;\n            return;\n        }\n\n        uint _fee = feePercent;\n        // 50% fee rebate on any ether value of 50 or greater\n        if (msg.value >= 50 ether) _fee /= 2;\n\n        addPayout(_fee);\n    }\n\n    //Function called for valid tx to the contract\n    function addPayout(uint _fee) private {\n        //Adds new address to participant array\n        participants.push(Participant(msg.sender, (msg.value * pyramidMultiplier) / 100));\n\n        // These statements ensure a quicker payout system to\n        // later pyramid entrants, so the pyramid has a longer lifespan\n        if (participants.length == 10) pyramidMultiplier = 200;\n        else if (participants.length == 25) pyramidMultiplier = 150;\n\n        // collect fees and update contract balance\n        balance += (msg.value * (100 - _fee)) / 100;\n        collectedFees += (msg.value * _fee) / 100;\n\n        //Pays earlier participants if balance sufficient\n        while (balance > participants[payoutOrder].payout) {\n            uint payoutToSend = participants[payoutOrder].payout;\n            participants[payoutOrder].etherAddress.transfer(payoutToSend);\n\n            balance -= participants[payoutOrder].payout;\n            payoutOrder += 1;\n        }\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/safe_funcs.sol",
    "content": "pragma solidity ^0.8.0;\n\n\ncontract Exceptions {\n\n    uint val;\n\n    function change_val() public {\n        val = 1;\n    }\n    function assert1() public pure {\n    \tuint256 i = 1;\n        assert(i == 0);\n    }\n\n    function fail() public view {\n        assert(val==2);\n    }\n\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/simple_theft.sol",
    "content": "pragma solidity ^0.8.0;\n\ncontract Fallback {\n\n  function withdraw() public { payable(msg.sender).transfer(address(this).balance); }\n\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/suicide.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract Suicide {\n\n  function kill(address payable addr) public {\n    selfdestruct(addr);\n  }\n\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/symbolic_exec_bytecode.sol",
    "content": "pragma solidity ^0.8.0;\n\ncontract Test {\n    uint256 immutable inputSize;\n\n    constructor(uint256 _log2Size) {\n        inputSize = (1 << _log2Size);\n    }\n\n    function getBytes(bytes calldata _input) public view returns (bytes32) {\n        require(\n            _input.length > 0 && _input.length <= inputSize,\n            \"input len: (0,inputSize]\"\n        );\n\n        return \"123\";\n    }\n\n    function commencekilling() public {\n        address payable receiver = payable(msg.sender);\n\tselfdestruct(receiver);\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/theft.sol",
    "content": "contract B{\n    uint x=0;\n    uint total = 0;\n    function incr() public returns(uint){\n        require(x==0);\n        x += 1;\n    }\n    function incr2() public payable returns(uint){\n        require(x==1);\n        x += 1;\n        total += msg.value;\n    }\n    function continous_incr(uint val) public payable returns(uint){\n        require(x>=2);\n        x += val;\n        total += msg.value;\n    }\n\n    function foo() public returns(uint){\n        require(x==4);\n        x += 1;\n        msg.sender.transfer(total);\n    }\n}\n\n"
  },
  {
    "path": "tests/testdata/input_contracts/transient.sol",
    "content": "pragma solidity 0.8.25;\ncontract Generosity {\n    mapping(address => bool) sentGifts;\n\n    modifier nonreentrant {\n        uint x;\n        assembly {\n            x := tload(0)\n        }\n        assert (x == 0);\n        assembly {\n            if tload(0) { revert(0, 0) }\n            tstore(0, 1)\n        }\n        _;\n        // Unlocks the guard, making the pattern composable.\n        // After the function exits, it can be called again, even in the same transaction.\n        assembly {\n            x := tload(0)\n        }\n        // It should be same as before, i.e., 1\n        assert (x == 1);\n\n        assembly {\n            tstore(0, 0)\n        }\n        assembly {\n            x := tload(0)\n        }\n        // resets to 0\n        assert (x == 0);\n    }\n    function claimGift() nonreentrant public {\n        require(address(this).balance >= 1 ether);\n        require(!sentGifts[msg.sender]);\n        (bool success, ) = msg.sender.call{value: 1 ether}(\"\");\n        require(success);\n\n        // In a reentrant function, doing this last would open up the vulnerability\n        sentGifts[msg.sender] = true;\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/transient_bug.sol",
    "content": "pragma solidity 0.8.25;\ncontract Generosity {\n    mapping(address => bool) sentGifts;\n\n    modifier nonreentrant {\n        uint x;\n        assembly {\n            x := tload(0)\n        }\n        assert (x == 0);\n        assembly {\n            if tload(0) { revert(0, 0) }\n            tstore(0, 1)\n        }\n        _;\n        // Unlocks the guard, making the pattern composable.\n        // After the function exits, it can be called again, even in the same transaction.\n        assembly {\n            x := tload(0)\n        }\n        assert (x != 1);\n\n        assembly {\n            tstore(0, 0)\n        }\n        assembly {\n            x := tload(0)\n        }\n        assert (x == 0);\n    }\n    function claimGift() nonreentrant public {\n        require(address(this).balance >= 1 ether);\n        require(!sentGifts[msg.sender]);\n        (bool success, ) = msg.sender.call{value: 1 ether}(\"\");\n        require(success);\n\n        // In a reentrant function, doing this last would open up the vulnerability\n        sentGifts[msg.sender] = true;\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/transient_bug_2.sol",
    "content": "pragma solidity 0.8.25;\ncontract Generosity {\n    mapping(address => bool) sentGifts;\n\n    modifier nonreentrant {\n        uint x;\n        assembly {\n            x := tload(0)\n        }\n        assert (x == 0);\n        assembly {\n            if tload(0) { revert(0, 0) }\n            tstore(0, 1)\n        }\n        _;\n        // Unlocks the guard, making the pattern composable.\n        // After the function exits, it can be called again, even in the same transaction.\n        assembly {\n            x := tload(0)\n        }\n        assert (x == 1);\n\n        assembly {\n            tstore(0, 0)\n        }\n        assembly {\n            x := tload(0)\n        }\n        assert (x == 1);\n    }\n    function claimGift() nonreentrant public {\n        require(address(this).balance >= 1 ether);\n        require(!sentGifts[msg.sender]);\n        (bool success, ) = msg.sender.call{value: 1 ether}(\"\");\n        require(success);\n\n        // In a reentrant function, doing this last would open up the vulnerability\n        sentGifts[msg.sender] = true;\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/transient_recursive.sol",
    "content": "pragma solidity 0.8.25;\n\ncontract Generosity {\n    mapping(address => bool) sentGifts;\n\n    modifier nonreentrant {\n        uint x;\n        assembly {\n            x := tload(0)\n        }\n        assert (x == 0);\n        assembly {\n            if tload(0) { revert(0, 0) }\n            tstore(0, 1)\n        }\n        _;\n        // Unlocks the guard, making the pattern composable.\n        // After the function exits, it can be called again, even in the same transaction.\n        assembly {\n            x := tload(0)\n        }\n        // It should be same as before, i.e., 1\n        assert (x == 1);\n\n        assembly {\n            tstore(0, 0)\n        }\n        assembly {\n            x := tload(0)\n        }\n        // resets to 0\n        assert (x == 0);\n    }\n\n    function claimGift() nonreentrant public {\n        require(address(this).balance >= 1 ether);\n        require(!sentGifts[msg.sender]);\n        (bool success, ) = msg.sender.call{value: 1 ether}(\"\");\n        require(success);\n\n        // In a reentrant function, doing this last would open up the vulnerability\n        sentGifts[msg.sender] = true;\n        \n        // Make an internal call\n        internalCall();\n    }\n\n    // Internal function to make a recursive internal call\n    function internalCall() internal {\n        if (address(this).balance >= 1 ether) {\n            claimGift();\n        }\n    }\n\n    // Function to receive Ether\n    receive() external payable {}\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/tx.sol",
    "content": "\npragma solidity ^0.4.16;\n\ncontract EthTxOrderDependenceMinimal {\n    address public owner;\n    bool public claimed;\n    uint public reward;\n\n    function EthTxOrderDependenceMinimal() public {\n        owner = msg.sender;\n    }\n\n    function setReward() public payable {\n        require (!claimed);\n\n        require(msg.sender == owner);\n        owner.transfer(reward);\n        reward = msg.value;\n    }\n\n    function claimReward(uint256 submission) {\n        require (!claimed);\n        require(submission < 10);\n\n        msg.sender.transfer(reward);\n        claimed = true;\n    }\n}"
  },
  {
    "path": "tests/testdata/input_contracts/underflow.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract Under {\n\n  mapping(address => uint) balances;\n  uint public totalSupply;\n\n  constructor(uint _initialSupply) public {\n    balances[msg.sender] = totalSupply = _initialSupply;\n  }\n\n  function sendeth(address _to, uint _value) public returns (bool) {\n    require(balances[msg.sender] - _value >= 0);\n    balances[msg.sender] -= _value;\n    balances[_to] += _value;\n    return true;\n  }\n\n  function balanceOf(address _owner) public view returns (uint balance) {\n    return balances[_owner];\n  }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/unexpected_ether_neg.sol",
    "content": "pragma solidity ^0.5.0;\n\ncontract Lockdrop {\n\n    function lock()\n        external\n        payable\n    {\n        uint256 eth = msg.value;\n        address owner = msg.sender;\n        assert(address(0x0).balance > msg.value);\n    }\n\n\n\n}"
  },
  {
    "path": "tests/testdata/input_contracts/unexpected_ether_pos.sol",
    "content": "pragma solidity ^0.5.0;\n\ncontract Lockdrop {\n\n    function lock()\n        external\n        payable\n    {\n        uint256 eth = msg.value;\n        address owner = msg.sender;\n        assert(address(0x0).balance == msg.value);\n    }\n\n\n\n}"
  },
  {
    "path": "tests/testdata/input_contracts/version_2.sol",
    "content": "\n// VERSION: pragma solidity ^0.7.0;\n\ncontract Test {\n    uint256 input;\n    function add(uint256 a, uint256 b) public {\n        input = a + b;\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/version_3.sol",
    "content": "\n/* ORIGINAL: pragma solidity ^0.7.0; */\n\ncontract Test {\n    uint256 input;\n    function add(uint256 a, uint256 b) public {\n        input = a + b;\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/version_4.sol",
    "content": "\n// VERSION: pragma solidity ^0.7.0;\n/* ORIGINAL: pragma solidity ^0.7.0; */\npragma solidity ^0.8.0;\n\ncontract Test {\n    uint256 input;\n    function add(uint256 a, uint256 b) public {\n        input = a + b;\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/version_chaos.sol",
    "content": "pragma solidity >= 0   .   5  .   0 < 0  .  6   .  0;\n\ncontract Test {\n    uint256 input;\n    function add(uint256 a, uint256 b) public {\n        input = a + b;\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/version_contract.sol",
    "content": "contract Test {\n    uint256 input;\n    function add(uint256 a, uint256 b) public {\n        input = a + b;\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/version_contract_0.7.0.sol",
    "content": "pragma solidity ^0.7.0;\n\ncontract Test {\n    uint256 input;\n    function add(uint256 a, uint256 b) public {\n        input = a + b;\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/version_contract_0.8.0.sol",
    "content": "pragma solidity ^0.8.0;\n\ncontract Test {\n    uint256 input;\n    function add(uint256 a, uint256 b) public {\n        input = a + b;\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/version_patch.sol",
    "content": "// SPDX-License-Identifier: MIT\npragma solidity ^0.8; // Patch version - X.y[.z] is missing\n\ncontract EtherWallet {\n    address payable public owner;\n\n    constructor() {\n        owner = payable(msg.sender);\n    }\n\n    receive() external payable {}\n\n    function withdraw(uint256 _amount) external {\n        require(msg.sender == owner, \"caller is not owner\");\n        payable(msg.sender).transfer(_amount);\n    }\n\n    function getBalance() external view returns (uint256) {\n        return address(this).balance;\n    }\n}\n"
  },
  {
    "path": "tests/testdata/input_contracts/weak_random.sol",
    "content": "pragma solidity ^0.5.0;\n\n\ncontract WeakRandom {\n    struct Contestant {\n        address payable addr;\n        uint gameId;\n    }\n\n    uint public prize = 2.5 ether;\n    uint public totalTickets = 50;\n    uint public pricePerTicket = prize / totalTickets;\n\n    uint public gameId = 1;\n    uint public nextTicket = 0;\n    mapping (uint => Contestant) public contestants;\n\n    function () payable external {\n        uint moneySent = msg.value;\n\n        while (moneySent >= pricePerTicket && nextTicket < totalTickets) {\n            uint currTicket = nextTicket++;\n            contestants[currTicket] = Contestant(msg.sender, gameId);\n            moneySent -= pricePerTicket;\n        }\n\n        if (nextTicket == totalTickets) {\n            chooseWinner();\n        }\n\n        // Send back leftover money\n        if (moneySent > 0) {\n            msg.sender.transfer(moneySent);\n        }\n    }\n\n    function chooseWinner() private {\n        address seed1 = contestants[uint(block.coinbase) % totalTickets].addr;\n        address seed2 = contestants[uint(msg.sender) % totalTickets].addr;\n        uint seed3 = block.difficulty;\n        bytes32 randHash = keccak256(abi.encode(seed1, seed2, seed3));\n\n        uint winningNumber = uint(randHash) % totalTickets;\n        address payable winningAddress = contestants[winningNumber].addr;\n\n        gameId++;\n        nextTicket = 0;\n        winningAddress.transfer(prize);\n    }\n}\n"
  },
  {
    "path": "tests/testdata/inputs/calls.sol.o",
    "content": "606060405260043610610083576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680632776b16314610088578063379bf63c146100c15780635a6814ec14610116578063b5d02c8a1461012b578063d24b08cc14610180578063e11f493e14610195578063e1d10f79146101aa575b600080fd5b341561009357600080fd5b6100bf600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506101e3565b005b34156100cc57600080fd5b6100d4610227565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561012157600080fd5b61012961024c565b005b341561013657600080fd5b61013e61029b565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561018b57600080fd5b6101936102c1565b005b34156101a057600080fd5b6101a8610311565b005b34156101b557600080fd5b6101e1600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610368565b005b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516000604051808303816000865af191505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516000604051808303816000865af191505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516000604051808303816000865af1915050506000600281905550565b8073ffffffffffffffffffffffffffffffffffffffff166040516000604051808303816000865af191505050505600a165627a7a72305820ee024c33eaef87e61cb33520322ac79ea5b18ccd400a8f15d002937d9868618a0029"
  },
  {
    "path": "tests/testdata/inputs/coverage.sol.o",
    "content": "608060405234801561001057600080fd5b50336000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610340806100606000396000f30060806040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063228cb733146100725780633eb6a67e1461009d5780638da5cb5b146100a7578063ae169a50146100fe578063e834a8341461012b575b600080fd5b34801561007e57600080fd5b5061008761015a565b6040518082815260200191505060405180910390f35b6100a5610160565b005b3480156100b357600080fd5b506100bc61024a565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34801561010a57600080fd5b506101296004803603810190808035906020019092919050505061026f565b005b34801561013757600080fd5b50610140610301565b604051808215151515815260200191505060405180910390f35b60015481565b600060149054906101000a900460ff1615151561017c57600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161415156101d757600080fd5b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc6001549081150290604051600060405180830381858888f19350505050158015610240573d6000803e3d6000fd5b5034600181905550565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600060149054906101000a900460ff1615151561028b57600080fd5b600a8110151561029a57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc6001549081150290604051600060405180830381858888f193505050501580156102e2573d6000803e3d6000fd5b506001600060146101000a81548160ff02191690831515021790555050565b600060149054906101000a900460ff16815600a165627a7a723058207bb1caf5a53e1b9c9895f50b1740af67a18d256f4c2724858bdcd660db1729310029"
  },
  {
    "path": "tests/testdata/inputs/environments.sol.o",
    "content": "60806040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806306661abd1461005157806383f12fec1461007c575b600080fd5b34801561005d57600080fd5b50610066610104565b6040518082815260200191505060405180910390f35b34801561008857600080fd5b506100ea600480360381019080803590602001908201803590602001908080602002602001604051908101604052809392919081815260200183836020028082843782019150505050505091929192908035906020019092919050505061010a565b604051808215151515815260200191505060405180910390f35b60005481565b6000806000845191508382029050600082118015610129575060148211155b151561013457600080fd5b80600160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550600192505050929150505600a165627a7a7230582016b81221eb990028632ba9b34d3c01599d24acdb5b81dd6789845696f5db257c0029"
  },
  {
    "path": "tests/testdata/inputs/ether_send.sol.o",
    "content": "608060405260043610610078576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806312065fe01461007d57806327e235e3146100a857806356885cd8146100ff5780636c343ffe146101165780638da5cb5b1461012d578063e8b5e51f14610184575b600080fd5b34801561008957600080fd5b5061009261018e565b6040518082815260200191505060405180910390f35b3480156100b457600080fd5b506100e9600480360381019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506101d4565b6040518082815260200191505060405180910390f35b34801561010b57600080fd5b506101146101ec565b005b34801561012257600080fd5b5061012b61022f565b005b34801561013957600080fd5b506101426102eb565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b61018c610311565b005b60008060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905090565b60006020528060005260406000206000915090505481565b33600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614151561028b57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc3073ffffffffffffffffffffffffffffffffffffffff16319081150290604051600060405180830381858888f193505050501580156102e8573d6000803e3d6000fd5b50565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025434118015610323575060035434105b151561032e57600080fd5b346000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825401925050819055505600a165627a7a72305820402df619c16e4325eb7830ed063880a283ac25dff982b6a5be67138df0c209550029"
  },
  {
    "path": "tests/testdata/inputs/exceptions.sol.o",
    "content": "60606040526004361061008e576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806301d4277c14610093578063546455b5146100b657806378375f14146100d957806392dd38ea146100fc578063a08299f11461011f578063b34c361014610142578063b630d70614610157578063f44f13d81461017a575b600080fd5b341561009e57600080fd5b6100b4600480803590602001909190505061018f565b005b34156100c157600080fd5b6100d760048080359060200190919050506101b2565b005b34156100e457600080fd5b6100fa60048080359060200190919050506101c2565b005b341561010757600080fd5b61011d60048080359060200190919050506101d5565b005b341561012a57600080fd5b61014060048080359060200190919050506101ed565b005b341561014d57600080fd5b610155610202565b005b341561016257600080fd5b6101786004808035906020019091905050610217565b005b341561018557600080fd5b61018d610235565b005b600060088210156101ae576000826008811015156101a957fe5b015490505b5050565b601781141515156101bf57fe5b50565b601781141515156101d257600080fd5b50565b600080826008811015156101e557fe5b015490505050565b60008160018115156101fb57fe5b0490505050565b60006001905060008114151561021457fe5b50565b6000808211156102315781600181151561022d57fe5b0490505b5050565b60006001905060008111151561024757fe5b505600a165627a7a72305820b9f98ad234dd4e1d09a659013e7ffd1ecad3628194c307decc294b637820bb550029"
  },
  {
    "path": "tests/testdata/inputs/exceptions_0.8.0.sol.o",
    "content": "608060405234801561001057600080fd5b5060f18061001f6000396000f3fe6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063a02f5b99146041578063a9cc4718146049578063b34c3610146051575b600080fd5b60476059565b005b604f6063565b005b60576075565b005b6001600081905550565b6002600054146073576072608c565b5b565b600060019050600081146089576088608c565b5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea2646970667358221220cdbce6751f5dd32798edbe8c5cefae09753627f94e3f6e4a1f33afdb28a32e5464736f6c63430008060033\n"
  },
  {
    "path": "tests/testdata/inputs/extcall.sol.o",
    "content": "608060405234801561001057600080fd5b50600073ffffffffffffffffffffffffffffffffffffffff166040518060000190506000604051808303816000865af19150503d806000811461006f576040519150601f19603f3d011682016040523d82523d6000602084013e610074565b606091505b505050600073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb6000806040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561010057600080fd5b505af1158015610114573d6000803e3d6000fd5b505050506040513d602081101561012a57600080fd5b810190808051906020019092919050505050600061014457fe5b603f806101526000396000f3fe6080604052600080fdfea26469706673582212205bba7185aa846906fd4f2cc890c4095f521be787e49f5366712f751111e8d91764736f6c63430006000033"
  },
  {
    "path": "tests/testdata/inputs/flag_array.sol.o",
    "content": "608060405267016345785d8a0000341461001857600080fd5b600160006104d2611000811061003157610030610055565b5b602091828204019190066101000a81548160ff021916908315150217905550610084565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6101a6806100936000396000f3fe60806040526004361061001e5760003560e01c8063ab12585814610023575b600080fd5b61003d600480360381019061003891906100ee565b61003f565b005b600081101561004d57600080fd5b611000811061005b57600080fd5b60008161100081106100705761006f610125565b5b602091828204019190069054906101000a900460ff1661008f57600080fd5b3373ffffffffffffffffffffffffffffffffffffffff166108fc479081150290604051600060405180830381858888f193505050501580156100d5573d6000803e3d6000fd5b5050565b6000813590506100e881610159565b92915050565b60006020828403121561010457610103610154565b5b6000610112848285016100d9565b91505092915050565b6000819050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600080fd5b6101628161011b565b811461016d57600080fd5b5056fea264697066735822122038d1a63a64c5408c7008a0f3746ab94e43a04b5bc74f52e4869d3f15cf5b2b9e64736f6c63430008060033"
  },
  {
    "path": "tests/testdata/inputs/kinds_of_calls.sol.o",
    "content": "60606040526004361061006d576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063141f32ff146100725780632e52d606146100b457806367e404ce146100dd5780639b58bc2614610132578063eea4c86414610174575b600080fd5b341561007d57600080fd5b6100b2600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506101b6565b005b34156100bf57600080fd5b6100c7610273565b6040518082815260200191505060405180910390f35b34156100e857600080fd5b6100f0610279565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b341561013d57600080fd5b610172600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061029f565b005b341561017f57600080fd5b6101b4600480803573ffffffffffffffffffffffffffffffffffffffff1690602001909190803590602001909190505061035a565b005b8173ffffffffffffffffffffffffffffffffffffffff1660405180807f7365744e2875696e743235362900000000000000000000000000000000000000815250600d01905060405180910390207c01000000000000000000000000000000000000000000000000000000009004826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506000604051808303816000875af292505050505050565b60005481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b8173ffffffffffffffffffffffffffffffffffffffff1660405180807f7365744e2875696e743235362900000000000000000000000000000000000000815250600d01905060405180910390207c01000000000000000000000000000000000000000000000000000000009004826040518263ffffffff167c010000000000000000000000000000000000000000000000000000000002815260040180828152602001915050600060405180830381865af492505050505050565b8173ffffffffffffffffffffffffffffffffffffffff1660405180807f7365744e2875696e743235362900000000000000000000000000000000000000815250600d01905060405180910390207c01000000000000000000000000000000000000000000000000000000009004826040518263ffffffff167c0100000000000000000000000000000000000000000000000000000000028152600401808281526020019150506000604051808303816000875af1925050505050505600a165627a7a72305820b2fb91d9c3f7e870879b71c8c41272ddfb1aded7dc856f09cd181e3754606e8a0029"
  },
  {
    "path": "tests/testdata/inputs/metacoin.sol.o",
    "content": "60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806327e235e314610051578063412664ae1461009e575b600080fd5b341561005c57600080fd5b610088600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506100f8565b6040518082815260200191505060405180910390f35b34156100a957600080fd5b6100de600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091908035906020019091905050610110565b604051808215151515815260200191505060405180910390f35b60006020528060005260406000206000915090505481565b6000816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561016157600090506101fe565b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600090505b929150505600a165627a7a72305820c860d60246e215343f02c5025aeef4ad1f207b0a7d2dec05e43f6ecaaebe9cec0029"
  },
  {
    "path": "tests/testdata/inputs/multi_contracts.sol.o",
    "content": "606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638a4068dd146044575b600080fd5b3415604e57600080fd5b60546056565b005b3373ffffffffffffffffffffffffffffffffffffffff166108fc671bc16d674ec800009081150290604051600060405180830381858888f193505050501515609d57600080fd5b5600a165627a7a7230582028cb917d4f69cc2ea0fcd75329aa874b2bc743cfcde6b5197f571cff635aec130029"
  },
  {
    "path": "tests/testdata/inputs/nonascii.sol.o",
    "content": "608060405260043610610041576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806324ff38a214610046575b600080fd5b34801561005257600080fd5b5061005b6100d6565b6040518080602001828103825283818151815260200191508051906020019080838360005b8381101561009b578082015181840152602081019050610080565b50505050905090810190601f1680156100c85780820380516001836020036101000a031916815260200191505b509250505060405180910390f35b60606040805190810160405280601781526020017fd0a5d18dd0bbd0bbd0bed18320d092d0bed180d0bbd0b40000000000000000008152509050905600a165627a7a72305820a11284868fc6a38ff1d72ce9ec40db9c6c7c49902b5cabec3680e88e5ab92dcb0029"
  },
  {
    "path": "tests/testdata/inputs/origin.sol.o",
    "content": "60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff1680638da5cb5b14610051578063f2fde38b146100a6575b600080fd5b341561005c57600080fd5b6100646100df565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b34156100b157600080fd5b6100dd600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050610104565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163273ffffffffffffffffffffffffffffffffffffffff1614151561015f57600080fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff161415156101d657806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055505b505600a165627a7a7230582094f3b40753c82d05a159fa87a8b075fa6226d092f90191c0f813a12c032ffaac0029"
  },
  {
    "path": "tests/testdata/inputs/overflow.sol.o",
    "content": "608060405260043610610057576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806318160ddd1461005c57806370a0823114610087578063a3210e87146100ec575b600080fd5b34801561006857600080fd5b5061007161015f565b6040518082815260200191505060405180910390f35b34801561009357600080fd5b506100d6600480360360208110156100aa57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050610165565b6040518082815260200191505060405180910390f35b3480156100f857600080fd5b506101456004803603604081101561010f57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190803590602001909291905050506101ad565b604051808215151515815260200191505060405180910390f35b60015481565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205403101515156101fe57600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540192505081905550600190509291505056fea165627a7a72305820fd522172282e2304f6e94eb345fcb4a11ab5e1102b64333180676726d88159a00029\n"
  },
  {
    "path": "tests/testdata/inputs/returnvalue.sol.o",
    "content": "60606040526004361061004c576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063633ab5e014610051578063e3bea28214610066575b600080fd5b341561005c57600080fd5b61006461007b565b005b341561007157600080fd5b6100796100d4565b005b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516000604051808303816000865af191505015156100d257600080fd5b565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166040516000604051808303816000865af1915050505600a165627a7a72305820ca8be054abc9437f3c7d25b22fda833fed76e2687a94e19ec61b094b7ae089d70029"
  },
  {
    "path": "tests/testdata/inputs/safe_funcs.sol.o",
    "content": "6080604052348015600f57600080fd5b5060043610603c5760003560e01c8063a02f5b99146041578063a9cc4718146049578063b34c3610146051575b600080fd5b60476059565b005b604f6063565b005b60576075565b005b6001600081905550565b6002600054146073576072608c565b5b565b600060019050600081146089576088608c565b5b50565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052600160045260246000fdfea2646970667358221220e4fd4d461febf90b9c09fc5f55e8dc77f373e513a4448395d2073e8c3f388ecf64736f6c63430008060033\n"
  },
  {
    "path": "tests/testdata/inputs/suicide.sol.o",
    "content": "606060405260043610603f576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff168063cbf0b0c0146044575b600080fd5b3415604e57600080fd5b6078600480803573ffffffffffffffffffffffffffffffffffffffff16906020019091905050607a565b005b8073ffffffffffffffffffffffffffffffffffffffff16ff00a165627a7a723058207c36f2082aef9ddde7fe0dc12aca42e091159cac6d4e9cb1b97983ea4e005d940029"
  },
  {
    "path": "tests/testdata/inputs/symbolic_exec_bytecode.sol.o",
    "content": "60a060405234801561001057600080fd5b5060405161039b38038061039b83398181016040528101906100329190610059565b806001901b60808181525050506100ac565b60008151905061005381610095565b92915050565b60006020828403121561006f5761006e610090565b5b600061007d84828501610044565b91505092915050565b6000819050919050565b600080fd5b61009e81610086565b81146100a957600080fd5b50565b6080516102d56100c66000396000608601526102d56000f3fe608060405234801561001057600080fd5b50600436106100365760003560e01c8063781c6dbe1461003b5780637c11da201461006b575b600080fd5b61005560048036038101906100509190610188565b610075565b6040516100629190610207565b60405180910390f35b610073610114565b005b600080838390501180156100ac57507f00000000000000000000000000000000000000000000000000000000000000008383905011155b6100eb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016100e290610222565b60405180910390fd5b7f3132330000000000000000000000000000000000000000000000000000000000905092915050565b60003390508073ffffffffffffffffffffffffffffffffffffffff16ff5b60008083601f84011261014857610147610262565b5b8235905067ffffffffffffffff8111156101655761016461025d565b5b60208301915083600182028301111561018157610180610267565b5b9250929050565b6000806020838503121561019f5761019e610271565b5b600083013567ffffffffffffffff8111156101bd576101bc61026c565b5b6101c985828601610132565b92509250509250929050565b6101de81610253565b82525050565b60006101f1601883610242565b91506101fc82610276565b602082019050919050565b600060208201905061021c60008301846101d5565b92915050565b6000602082019050818103600083015261023b816101e4565b9050919050565b600082825260208201905092915050565b6000819050919050565b600080fd5b600080fd5b600080fd5b600080fd5b600080fd5b7f696e707574206c656e3a2028302c696e70757453697a655d000000000000000060008201525056fea26469706673582212203f37af85f2d345d5d16dd25ae1404605d9e5e7240b970530ef963385fc73a82e64736f6c63430008060033"
  },
  {
    "path": "tests/testdata/inputs/underflow.sol.o",
    "content": "606060405260043610610062576000357c0100000000000000000000000000000000000000000000000000000000900463ffffffff16806318160ddd146100675780636241bfd11461009057806370a08231146100b3578063a3210e8714610100575b600080fd5b341561007257600080fd5b61007a61015a565b6040518082815260200191505060405180910390f35b341561009b57600080fd5b6100b16004808035906020019091905050610160565b005b34156100be57600080fd5b6100ea600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919050506101ab565b6040518082815260200191505060405180910390f35b341561010b57600080fd5b610140600480803573ffffffffffffffffffffffffffffffffffffffff169060200190919080359060200190919050506101f3565b604051808215151515815260200191505060405180910390f35b60015481565b8060018190556000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555050565b60008060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600080826000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054031015151561024457600080fd5b816000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282540392505081905550816000808573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254019250508190555060019050929150505600a165627a7a72305820acf4c21d1fe3e6f27af08897642fb3b8cc64265635081cf3ae7fe1f06b4af6490029"
  },
  {
    "path": "tests/testdata/json_test_dir/PRC20.sol",
    "content": "pragma solidity ^0.8.0;\n\ncontract PRC20{\n    function nothing1(uint256 a, uint256 b) public pure returns(uint256) {\n        return a+b;\n    }\n}\n\n"
  },
  {
    "path": "tests/testdata/json_test_dir/dir_a/input_file.sol",
    "content": "import \"@openzeppelin/contracts/token/PRC20/PRC20.sol\";\n\ncontract Nothing is PRC20{\n\tstring x_0 = \"\";\n\n\tbytes3 x_1 = \"A\";\n\n\tbytes5 x_2 = \"E\";\n\n\tbytes5 x_3 = \"\";\n\n\tbytes3 x_4 = \"I\";\n\n\tbytes3 x_5 = \"U\";\n\n\tbytes3 x_6 = \"O\";\n\n\tbytes3 x_7 = \"0\";\n\n\tbytes3 x_8 = \"U\";\n\n\tbytes3 x_9 = \"U\";\n\tfunction stringCompare(string memory a, string memory b) internal pure returns (bool) {\n\t\tif(bytes(a).length != bytes(b).length) {\n\t\t\treturn false;\n\t\t} else {\n\t\t\treturn keccak256(bytes(a)) == keccak256(bytes(b));\n\t\t}\n\t}\n\n    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){\n        if (!stringCompare(g_0, x_0)) return false;\n\t\t\t\t\n\t\tif (g_1 != x_1) return false;\n\t\t\t\t\n\t\tif (g_2 != x_2) return false;\n\t\t\t\t\n\t\tif (g_3 != x_3) return false;\n\t\t\t\t\n\t\tif (g_4 != x_4) return false;\n\t\t\t\t\n\t\tif (g_5 != x_5) return false;\n\t\t\t\t\n\t\tif (g_6 != x_6) return false;\n\t\t\t\t\n\t\tif (g_7 != x_7) return false;\n\t\t\t\t\n\t\tif (g_8 != x_8) return false;\n\t\t\t\t\n\t\tif (g_9 != x_9) return false;\n\t\t\n        if (g_10 != x_9) return false;\n\n        if (g_11 != x_9) return false;\n\n\t\treturn true;\n\n    }\n}\n\n"
  },
  {
    "path": "tests/testdata/json_test_dir/dir_a/input_file_args.sol",
    "content": "import \"../PRC20.sol\";\n\ncontract Nothing is PRC20{\n\n\n\n    function nothing(string memory g_0, bytes3 g_11) public view returns (bool){\n\t\t\t\t\n\t\treturn true;\n\n    }\n}\n\n"
  },
  {
    "path": "tests/testdata/json_test_dir/test_file.json",
    "content": "{\n \"remappings\": [ \"@openzeppelin/contracts/token/PRC20/=../\" ],\n  \"optimizer\": {\n    \"enabled\": true\n  }\n}\n"
  },
  {
    "path": "tests/testdata/json_test_dir/test_file_disable.json",
    "content": "{\n    \"remappings\": [ \"@openzeppelin/contracts/token/PRC20/=../\" ]\n}\n   "
  },
  {
    "path": "tests/testdata/outputs_expected/calls.sol.o.easm",
    "content": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0083\n12 JUMPI\n13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x2776b163\n60 EQ\n61 PUSH2 0x0088\n64 JUMPI\n65 DUP1\n66 PUSH4 0x379bf63c\n71 EQ\n72 PUSH2 0x00c1\n75 JUMPI\n76 DUP1\n77 PUSH4 0x5a6814ec\n82 EQ\n83 PUSH2 0x0116\n86 JUMPI\n87 DUP1\n88 PUSH4 0xb5d02c8a\n93 EQ\n94 PUSH2 0x012b\n97 JUMPI\n98 DUP1\n99 PUSH4 0xd24b08cc\n104 EQ\n105 PUSH2 0x0180\n108 JUMPI\n109 DUP1\n110 PUSH4 0xe11f493e\n115 EQ\n116 PUSH2 0x0195\n119 JUMPI\n120 DUP1\n121 PUSH4 0xe1d10f79\n126 EQ\n127 PUSH2 0x01aa\n130 JUMPI\n131 JUMPDEST\n132 PUSH1 0x00\n134 DUP1\n135 REVERT\n136 JUMPDEST\n137 CALLVALUE\n138 ISZERO\n139 PUSH2 0x0093\n142 JUMPI\n143 PUSH1 0x00\n145 DUP1\n146 REVERT\n147 JUMPDEST\n148 PUSH2 0x00bf\n151 PUSH1 0x04\n153 DUP1\n154 DUP1\n155 CALLDATALOAD\n156 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n177 AND\n178 SWAP1\n179 PUSH1 0x20\n181 ADD\n182 SWAP1\n183 SWAP2\n184 SWAP1\n185 POP\n186 POP\n187 PUSH2 0x01e3\n190 JUMP\n191 JUMPDEST\n192 STOP\n193 JUMPDEST\n194 CALLVALUE\n195 ISZERO\n196 PUSH2 0x00cc\n199 JUMPI\n200 PUSH1 0x00\n202 DUP1\n203 REVERT\n204 JUMPDEST\n205 PUSH2 0x00d4\n208 PUSH2 0x0227\n211 JUMP\n212 JUMPDEST\n213 PUSH1 0x40\n215 MLOAD\n216 DUP1\n217 DUP3\n218 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n239 AND\n240 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n278 JUMPDEST\n279 CALLVALUE\n280 ISZERO\n281 PUSH2 0x0121\n284 JUMPI\n285 PUSH1 0x00\n287 DUP1\n288 REVERT\n289 JUMPDEST\n290 PUSH2 0x0129\n293 PUSH2 0x024c\n296 JUMP\n297 JUMPDEST\n298 STOP\n299 JUMPDEST\n300 CALLVALUE\n301 ISZERO\n302 PUSH2 0x0136\n305 JUMPI\n306 PUSH1 0x00\n308 DUP1\n309 REVERT\n310 JUMPDEST\n311 PUSH2 0x013e\n314 PUSH2 0x029b\n317 JUMP\n318 JUMPDEST\n319 PUSH1 0x40\n321 MLOAD\n322 DUP1\n323 DUP3\n324 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n345 AND\n346 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n384 JUMPDEST\n385 CALLVALUE\n386 ISZERO\n387 PUSH2 0x018b\n390 JUMPI\n391 PUSH1 0x00\n393 DUP1\n394 REVERT\n395 JUMPDEST\n396 PUSH2 0x0193\n399 PUSH2 0x02c1\n402 JUMP\n403 JUMPDEST\n404 STOP\n405 JUMPDEST\n406 CALLVALUE\n407 ISZERO\n408 PUSH2 0x01a0\n411 JUMPI\n412 PUSH1 0x00\n414 DUP1\n415 REVERT\n416 JUMPDEST\n417 PUSH2 0x01a8\n420 PUSH2 0x0311\n423 JUMP\n424 JUMPDEST\n425 STOP\n426 JUMPDEST\n427 CALLVALUE\n428 ISZERO\n429 PUSH2 0x01b5\n432 JUMPI\n433 PUSH1 0x00\n435 DUP1\n436 REVERT\n437 JUMPDEST\n438 PUSH2 0x01e1\n441 PUSH1 0x04\n443 DUP1\n444 DUP1\n445 CALLDATALOAD\n446 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n467 AND\n468 SWAP1\n469 PUSH1 0x20\n471 ADD\n472 SWAP1\n473 SWAP2\n474 SWAP1\n475 POP\n476 POP\n477 PUSH2 0x0368\n480 JUMP\n481 JUMPDEST\n482 STOP\n483 JUMPDEST\n484 DUP1\n485 PUSH1 0x01\n487 PUSH1 0x00\n489 PUSH2 0x0100\n492 EXP\n493 DUP2\n494 SLOAD\n495 DUP2\n496 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n517 MUL\n518 NOT\n519 AND\n520 SWAP1\n521 DUP4\n522 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n543 AND\n544 MUL\n545 OR\n546 SWAP1\n547 SSTORE\n548 POP\n549 POP\n550 JUMP\n551 JUMPDEST\n552 PUSH1 0x00\n554 DUP1\n555 SWAP1\n556 SLOAD\n557 SWAP1\n558 PUSH2 0x0100\n561 EXP\n562 SWAP1\n563 DIV\n564 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n585 AND\n586 DUP2\n587 JUMP\n588 JUMPDEST\n589 PUSH1 0x00\n591 DUP1\n592 SWAP1\n593 SLOAD\n594 SWAP1\n595 PUSH2 0x0100\n598 EXP\n599 SWAP1\n600 DIV\n601 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n622 AND\n623 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n667 JUMPDEST\n668 PUSH1 0x01\n670 PUSH1 0x00\n672 SWAP1\n673 SLOAD\n674 SWAP1\n675 PUSH2 0x0100\n678 EXP\n679 SWAP1\n680 DIV\n681 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n702 AND\n703 DUP2\n704 JUMP\n705 JUMPDEST\n706 PUSH1 0x01\n708 PUSH1 0x00\n710 SWAP1\n711 SLOAD\n712 SWAP1\n713 PUSH2 0x0100\n716 EXP\n717 SWAP1\n718 DIV\n719 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n740 AND\n741 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n785 JUMPDEST\n786 PUSH1 0x00\n788 DUP1\n789 SWAP1\n790 SLOAD\n791 SWAP1\n792 PUSH2 0x0100\n795 EXP\n796 SWAP1\n797 DIV\n798 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n819 AND\n820 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n872 JUMPDEST\n873 DUP1\n874 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n919 STOP\n"
  },
  {
    "path": "tests/testdata/outputs_expected/calls.sol.o.graph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    \n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    \n\n    <script>\n        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%\"};\n        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\"}];\n        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\"}];\n    </script>\n</head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>"
  },
  {
    "path": "tests/testdata/outputs_expected/environments.sol.o.easm",
    "content": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x004c\n12 JUMPI\n13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x06661abd\n60 EQ\n61 PUSH2 0x0051\n64 JUMPI\n65 DUP1\n66 PUSH4 0x83f12fec\n71 EQ\n72 PUSH2 0x007c\n75 JUMPI\n76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT\n81 JUMPDEST\n82 CALLVALUE\n83 DUP1\n84 ISZERO\n85 PUSH2 0x005d\n88 JUMPI\n89 PUSH1 0x00\n91 DUP1\n92 REVERT\n93 JUMPDEST\n94 POP\n95 PUSH2 0x0066\n98 PUSH2 0x0104\n101 JUMP\n102 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\n124 JUMPDEST\n125 CALLVALUE\n126 DUP1\n127 ISZERO\n128 PUSH2 0x0088\n131 JUMPI\n132 PUSH1 0x00\n134 DUP1\n135 REVERT\n136 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\n234 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\n260 JUMPDEST\n261 PUSH1 0x00\n263 SLOAD\n264 DUP2\n265 JUMP\n266 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\n291 POP\n292 PUSH1 0x14\n294 DUP3\n295 GT\n296 ISZERO\n297 JUMPDEST\n298 ISZERO\n299 ISZERO\n300 PUSH2 0x0134\n303 JUMPI\n304 PUSH1 0x00\n306 DUP1\n307 REVERT\n308 JUMPDEST\n309 DUP1\n310 PUSH1 0x01\n312 PUSH1 0x00\n314 CALLER\n315 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n336 AND\n337 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n385 POP\n386 PUSH1 0x01\n388 SWAP3\n389 POP\n390 POP\n391 POP\n392 SWAP3\n393 SWAP2\n394 POP\n395 POP\n396 JUMP\n397 STOP\n"
  },
  {
    "path": "tests/testdata/outputs_expected/environments.sol.o.graph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    \n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    \n\n    <script>\n        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%\"};\n        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 +)\"}];\n        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\"}];\n    </script>\n</head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "tests/testdata/outputs_expected/ether_send.sol.o.easm",
    "content": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0078\n12 JUMPI\n13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x12065fe0\n60 EQ\n61 PUSH2 0x007d\n64 JUMPI\n65 DUP1\n66 PUSH4 0x27e235e3\n71 EQ\n72 PUSH2 0x00a8\n75 JUMPI\n76 DUP1\n77 PUSH4 0x56885cd8\n82 EQ\n83 PUSH2 0x00ff\n86 JUMPI\n87 DUP1\n88 PUSH4 0x6c343ffe\n93 EQ\n94 PUSH2 0x0116\n97 JUMPI\n98 DUP1\n99 PUSH4 0x8da5cb5b\n104 EQ\n105 PUSH2 0x012d\n108 JUMPI\n109 DUP1\n110 PUSH4 0xe8b5e51f\n115 EQ\n116 PUSH2 0x0184\n119 JUMPI\n120 JUMPDEST\n121 PUSH1 0x00\n123 DUP1\n124 REVERT\n125 JUMPDEST\n126 CALLVALUE\n127 DUP1\n128 ISZERO\n129 PUSH2 0x0089\n132 JUMPI\n133 PUSH1 0x00\n135 DUP1\n136 REVERT\n137 JUMPDEST\n138 POP\n139 PUSH2 0x0092\n142 PUSH2 0x018e\n145 JUMP\n146 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\n168 JUMPDEST\n169 CALLVALUE\n170 DUP1\n171 ISZERO\n172 PUSH2 0x00b4\n175 JUMPI\n176 PUSH1 0x00\n178 DUP1\n179 REVERT\n180 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 0xffffffffffffffffffffffffffffffffffffffff\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\n233 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\n255 JUMPDEST\n256 CALLVALUE\n257 DUP1\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI\n263 PUSH1 0x00\n265 DUP1\n266 REVERT\n267 JUMPDEST\n268 POP\n269 PUSH2 0x0114\n272 PUSH2 0x01ec\n275 JUMP\n276 JUMPDEST\n277 STOP\n278 JUMPDEST\n279 CALLVALUE\n280 DUP1\n281 ISZERO\n282 PUSH2 0x0122\n285 JUMPI\n286 PUSH1 0x00\n288 DUP1\n289 REVERT\n290 JUMPDEST\n291 POP\n292 PUSH2 0x012b\n295 PUSH2 0x022f\n298 JUMP\n299 JUMPDEST\n300 STOP\n301 JUMPDEST\n302 CALLVALUE\n303 DUP1\n304 ISZERO\n305 PUSH2 0x0139\n308 JUMPI\n309 PUSH1 0x00\n311 DUP1\n312 REVERT\n313 JUMPDEST\n314 POP\n315 PUSH2 0x0142\n318 PUSH2 0x02eb\n321 JUMP\n322 JUMPDEST\n323 PUSH1 0x40\n325 MLOAD\n326 DUP1\n327 DUP3\n328 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n349 AND\n350 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n388 JUMPDEST\n389 PUSH2 0x018c\n392 PUSH2 0x0311\n395 JUMP\n396 JUMPDEST\n397 STOP\n398 JUMPDEST\n399 PUSH1 0x00\n401 DUP1\n402 PUSH1 0x00\n404 CALLER\n405 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n426 AND\n427 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n468 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\n492 JUMPDEST\n493 CALLER\n494 PUSH1 0x01\n496 PUSH1 0x00\n498 PUSH2 0x0100\n501 EXP\n502 DUP2\n503 SLOAD\n504 DUP2\n505 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n526 MUL\n527 NOT\n528 AND\n529 SWAP1\n530 DUP4\n531 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n552 AND\n553 MUL\n554 OR\n555 SWAP1\n556 SSTORE\n557 POP\n558 JUMP\n559 JUMPDEST\n560 PUSH1 0x01\n562 PUSH1 0x00\n564 SWAP1\n565 SLOAD\n566 SWAP1\n567 PUSH2 0x0100\n570 EXP\n571 SWAP1\n572 DIV\n573 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n594 AND\n595 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n616 AND\n617 CALLER\n618 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n639 AND\n640 EQ\n641 ISZERO\n642 ISZERO\n643 PUSH2 0x028b\n646 JUMPI\n647 PUSH1 0x00\n649 DUP1\n650 REVERT\n651 JUMPDEST\n652 CALLER\n653 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n674 AND\n675 PUSH2 0x08fc\n678 ADDRESS\n679 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n735 RETURNDATASIZE\n736 PUSH1 0x00\n738 DUP1\n739 RETURNDATACOPY\n740 RETURNDATASIZE\n741 PUSH1 0x00\n743 REVERT\n744 JUMPDEST\n745 POP\n746 JUMP\n747 JUMPDEST\n748 PUSH1 0x01\n750 PUSH1 0x00\n752 SWAP1\n753 SLOAD\n754 SWAP1\n755 PUSH2 0x0100\n758 EXP\n759 SWAP1\n760 DIV\n761 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n782 AND\n783 DUP2\n784 JUMP\n785 JUMPDEST\n786 PUSH1 0x02\n788 SLOAD\n789 CALLVALUE\n790 GT\n791 DUP1\n792 ISZERO\n793 PUSH2 0x0323\n796 JUMPI\n797 POP\n798 PUSH1 0x03\n800 SLOAD\n801 CALLVALUE\n802 LT\n803 JUMPDEST\n804 ISZERO\n805 ISZERO\n806 PUSH2 0x032e\n809 JUMPI\n810 PUSH1 0x00\n812 DUP1\n813 REVERT\n814 JUMPDEST\n815 CALLVALUE\n816 PUSH1 0x00\n818 DUP1\n819 CALLER\n820 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n841 AND\n842 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n892 STOP\n"
  },
  {
    "path": "tests/testdata/outputs_expected/ether_send.sol.o.graph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    \n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    \n\n    <script>\n        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%\"};\n        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\"}];\n        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\"}];\n    </script>\n</head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>"
  },
  {
    "path": "tests/testdata/outputs_expected/exceptions.sol.o.easm",
    "content": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x008e\n12 JUMPI\n13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x01d4277c\n60 EQ\n61 PUSH2 0x0093\n64 JUMPI\n65 DUP1\n66 PUSH4 0x546455b5\n71 EQ\n72 PUSH2 0x00b6\n75 JUMPI\n76 DUP1\n77 PUSH4 0x78375f14\n82 EQ\n83 PUSH2 0x00d9\n86 JUMPI\n87 DUP1\n88 PUSH4 0x92dd38ea\n93 EQ\n94 PUSH2 0x00fc\n97 JUMPI\n98 DUP1\n99 PUSH4 0xa08299f1\n104 EQ\n105 PUSH2 0x011f\n108 JUMPI\n109 DUP1\n110 PUSH4 0xb34c3610\n115 EQ\n116 PUSH2 0x0142\n119 JUMPI\n120 DUP1\n121 PUSH4 0xb630d706\n126 EQ\n127 PUSH2 0x0157\n130 JUMPI\n131 DUP1\n132 PUSH4 0xf44f13d8\n137 EQ\n138 PUSH2 0x017a\n141 JUMPI\n142 JUMPDEST\n143 PUSH1 0x00\n145 DUP1\n146 REVERT\n147 JUMPDEST\n148 CALLVALUE\n149 ISZERO\n150 PUSH2 0x009e\n153 JUMPI\n154 PUSH1 0x00\n156 DUP1\n157 REVERT\n158 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\n180 JUMPDEST\n181 STOP\n182 JUMPDEST\n183 CALLVALUE\n184 ISZERO\n185 PUSH2 0x00c1\n188 JUMPI\n189 PUSH1 0x00\n191 DUP1\n192 REVERT\n193 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\n215 JUMPDEST\n216 STOP\n217 JUMPDEST\n218 CALLVALUE\n219 ISZERO\n220 PUSH2 0x00e4\n223 JUMPI\n224 PUSH1 0x00\n226 DUP1\n227 REVERT\n228 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\n250 JUMPDEST\n251 STOP\n252 JUMPDEST\n253 CALLVALUE\n254 ISZERO\n255 PUSH2 0x0107\n258 JUMPI\n259 PUSH1 0x00\n261 DUP1\n262 REVERT\n263 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\n285 JUMPDEST\n286 STOP\n287 JUMPDEST\n288 CALLVALUE\n289 ISZERO\n290 PUSH2 0x012a\n293 JUMPI\n294 PUSH1 0x00\n296 DUP1\n297 REVERT\n298 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\n320 JUMPDEST\n321 STOP\n322 JUMPDEST\n323 CALLVALUE\n324 ISZERO\n325 PUSH2 0x014d\n328 JUMPI\n329 PUSH1 0x00\n331 DUP1\n332 REVERT\n333 JUMPDEST\n334 PUSH2 0x0155\n337 PUSH2 0x0202\n340 JUMP\n341 JUMPDEST\n342 STOP\n343 JUMPDEST\n344 CALLVALUE\n345 ISZERO\n346 PUSH2 0x0162\n349 JUMPI\n350 PUSH1 0x00\n352 DUP1\n353 REVERT\n354 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\n376 JUMPDEST\n377 STOP\n378 JUMPDEST\n379 CALLVALUE\n380 ISZERO\n381 PUSH2 0x0185\n384 JUMPI\n385 PUSH1 0x00\n387 DUP1\n388 REVERT\n389 JUMPDEST\n390 PUSH2 0x018d\n393 PUSH2 0x0235\n396 JUMP\n397 JUMPDEST\n398 STOP\n399 JUMPDEST\n400 PUSH1 0x00\n402 PUSH1 0x08\n404 DUP3\n405 LT\n406 ISZERO\n407 PUSH2 0x01ae\n410 JUMPI\n411 PUSH1 0x00\n413 DUP3\n414 PUSH1 0x08\n416 DUP2\n417 LT\n418 ISZERO\n419 ISZERO\n420 PUSH2 0x01a9\n423 JUMPI\n424 ASSERT_FAIL\n425 JUMPDEST\n426 ADD\n427 SLOAD\n428 SWAP1\n429 POP\n430 JUMPDEST\n431 POP\n432 POP\n433 JUMP\n434 JUMPDEST\n435 PUSH1 0x17\n437 DUP2\n438 EQ\n439 ISZERO\n440 ISZERO\n441 ISZERO\n442 PUSH2 0x01bf\n445 JUMPI\n446 ASSERT_FAIL\n447 JUMPDEST\n448 POP\n449 JUMP\n450 JUMPDEST\n451 PUSH1 0x17\n453 DUP2\n454 EQ\n455 ISZERO\n456 ISZERO\n457 ISZERO\n458 PUSH2 0x01d2\n461 JUMPI\n462 PUSH1 0x00\n464 DUP1\n465 REVERT\n466 JUMPDEST\n467 POP\n468 JUMP\n469 JUMPDEST\n470 PUSH1 0x00\n472 DUP1\n473 DUP3\n474 PUSH1 0x08\n476 DUP2\n477 LT\n478 ISZERO\n479 ISZERO\n480 PUSH2 0x01e5\n483 JUMPI\n484 ASSERT_FAIL\n485 JUMPDEST\n486 ADD\n487 SLOAD\n488 SWAP1\n489 POP\n490 POP\n491 POP\n492 JUMP\n493 JUMPDEST\n494 PUSH1 0x00\n496 DUP2\n497 PUSH1 0x01\n499 DUP2\n500 ISZERO\n501 ISZERO\n502 PUSH2 0x01fb\n505 JUMPI\n506 ASSERT_FAIL\n507 JUMPDEST\n508 DIV\n509 SWAP1\n510 POP\n511 POP\n512 POP\n513 JUMP\n514 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\n531 ASSERT_FAIL\n532 JUMPDEST\n533 POP\n534 JUMP\n535 JUMPDEST\n536 PUSH1 0x00\n538 DUP1\n539 DUP3\n540 GT\n541 ISZERO\n542 PUSH2 0x0231\n545 JUMPI\n546 DUP2\n547 PUSH1 0x01\n549 DUP2\n550 ISZERO\n551 ISZERO\n552 PUSH2 0x022d\n555 JUMPI\n556 ASSERT_FAIL\n557 JUMPDEST\n558 DIV\n559 SWAP1\n560 POP\n561 JUMPDEST\n562 POP\n563 POP\n564 JUMP\n565 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\n582 ASSERT_FAIL\n583 JUMPDEST\n584 POP\n585 JUMP\n586 STOP\n"
  },
  {
    "path": "tests/testdata/outputs_expected/exceptions.sol.o.graph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    \n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    \n\n    <script>\n        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%\"};\n        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\"}];\n        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\"}];\n    </script>\n</head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "tests/testdata/outputs_expected/kinds_of_calls.sol.o.easm",
    "content": "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 0x0100000000000000000000000000000000000000000000000000000000\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x141f32ff\n60 EQ\n61 PUSH2 0x0072\n64 JUMPI\n65 DUP1\n66 PUSH4 0x2e52d606\n71 EQ\n72 PUSH2 0x00b4\n75 JUMPI\n76 DUP1\n77 PUSH4 0x67e404ce\n82 EQ\n83 PUSH2 0x00dd\n86 JUMPI\n87 DUP1\n88 PUSH4 0x9b58bc26\n93 EQ\n94 PUSH2 0x0132\n97 JUMPI\n98 DUP1\n99 PUSH4 0xeea4c864\n104 EQ\n105 PUSH2 0x0174\n108 JUMPI\n109 JUMPDEST\n110 PUSH1 0x00\n112 DUP1\n113 REVERT\n114 JUMPDEST\n115 CALLVALUE\n116 ISZERO\n117 PUSH2 0x007d\n120 JUMPI\n121 PUSH1 0x00\n123 DUP1\n124 REVERT\n125 JUMPDEST\n126 PUSH2 0x00b2\n129 PUSH1 0x04\n131 DUP1\n132 DUP1\n133 CALLDATALOAD\n134 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n178 JUMPDEST\n179 STOP\n180 JUMPDEST\n181 CALLVALUE\n182 ISZERO\n183 PUSH2 0x00bf\n186 JUMPI\n187 PUSH1 0x00\n189 DUP1\n190 REVERT\n191 JUMPDEST\n192 PUSH2 0x00c7\n195 PUSH2 0x0273\n198 JUMP\n199 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\n221 JUMPDEST\n222 CALLVALUE\n223 ISZERO\n224 PUSH2 0x00e8\n227 JUMPI\n228 PUSH1 0x00\n230 DUP1\n231 REVERT\n232 JUMPDEST\n233 PUSH2 0x00f0\n236 PUSH2 0x0279\n239 JUMP\n240 JUMPDEST\n241 PUSH1 0x40\n243 MLOAD\n244 DUP1\n245 DUP3\n246 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n267 AND\n268 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n306 JUMPDEST\n307 CALLVALUE\n308 ISZERO\n309 PUSH2 0x013d\n312 JUMPI\n313 PUSH1 0x00\n315 DUP1\n316 REVERT\n317 JUMPDEST\n318 PUSH2 0x0172\n321 PUSH1 0x04\n323 DUP1\n324 DUP1\n325 CALLDATALOAD\n326 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n370 JUMPDEST\n371 STOP\n372 JUMPDEST\n373 CALLVALUE\n374 ISZERO\n375 PUSH2 0x017f\n378 JUMPI\n379 PUSH1 0x00\n381 DUP1\n382 REVERT\n383 JUMPDEST\n384 PUSH2 0x01b4\n387 PUSH1 0x04\n389 DUP1\n390 DUP1\n391 CALLDATALOAD\n392 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n436 JUMPDEST\n437 STOP\n438 JUMPDEST\n439 DUP2\n440 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n461 AND\n462 PUSH1 0x40\n464 MLOAD\n465 DUP1\n466 DUP1\n467 PUSH32 0x7365744e2875696e743235362900000000000000000000000000000000000000\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 0x0100000000000000000000000000000000000000000000000000000000\n546 SWAP1\n547 DIV\n548 DUP3\n549 PUSH1 0x40\n551 MLOAD\n552 DUP3\n553 PUSH4 0xffffffff\n558 AND\n559 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\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\n619 SWAP3\n620 POP\n621 POP\n622 POP\n623 POP\n624 POP\n625 POP\n626 JUMP\n627 JUMPDEST\n628 PUSH1 0x00\n630 SLOAD\n631 DUP2\n632 JUMP\n633 JUMPDEST\n634 PUSH1 0x01\n636 PUSH1 0x00\n638 SWAP1\n639 SLOAD\n640 SWAP1\n641 PUSH2 0x0100\n644 EXP\n645 SWAP1\n646 DIV\n647 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n668 AND\n669 DUP2\n670 JUMP\n671 JUMPDEST\n672 DUP2\n673 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n694 AND\n695 PUSH1 0x40\n697 MLOAD\n698 DUP1\n699 DUP1\n700 PUSH32 0x7365744e2875696e743235362900000000000000000000000000000000000000\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 0x0100000000000000000000000000000000000000000000000000000000\n779 SWAP1\n780 DIV\n781 DUP3\n782 PUSH1 0x40\n784 MLOAD\n785 DUP3\n786 PUSH4 0xffffffff\n791 AND\n792 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\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\n850 SWAP3\n851 POP\n852 POP\n853 POP\n854 POP\n855 POP\n856 POP\n857 JUMP\n858 JUMPDEST\n859 DUP2\n860 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n881 AND\n882 PUSH1 0x40\n884 MLOAD\n885 DUP1\n886 DUP1\n887 PUSH32 0x7365744e2875696e743235362900000000000000000000000000000000000000\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 0x0100000000000000000000000000000000000000000000000000000000\n966 SWAP1\n967 DIV\n968 DUP3\n969 PUSH1 0x40\n971 MLOAD\n972 DUP3\n973 PUSH4 0xffffffff\n978 AND\n979 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\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\n1039 SWAP3\n1040 POP\n1041 POP\n1042 POP\n1043 POP\n1044 POP\n1045 POP\n1046 JUMP\n1047 STOP\n"
  },
  {
    "path": "tests/testdata/outputs_expected/kinds_of_calls.sol.o.graph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    \n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    \n\n    <script>\n        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%\"};\n        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\"}];\n        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\"}];\n    </script>\n</head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "tests/testdata/outputs_expected/metacoin.sol.o.easm",
    "content": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x004c\n12 JUMPI\n13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x27e235e3\n60 EQ\n61 PUSH2 0x0051\n64 JUMPI\n65 DUP1\n66 PUSH4 0x412664ae\n71 EQ\n72 PUSH2 0x009e\n75 JUMPI\n76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT\n81 JUMPDEST\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI\n88 PUSH1 0x00\n90 DUP1\n91 REVERT\n92 JUMPDEST\n93 PUSH2 0x0088\n96 PUSH1 0x04\n98 DUP1\n99 DUP1\n100 CALLDATALOAD\n101 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n122 AND\n123 SWAP1\n124 PUSH1 0x20\n126 ADD\n127 SWAP1\n128 SWAP2\n129 SWAP1\n130 POP\n131 POP\n132 PUSH2 0x00f8\n135 JUMP\n136 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\n158 JUMPDEST\n159 CALLVALUE\n160 ISZERO\n161 PUSH2 0x00a9\n164 JUMPI\n165 PUSH1 0x00\n167 DUP1\n168 REVERT\n169 JUMPDEST\n170 PUSH2 0x00de\n173 PUSH1 0x04\n175 DUP1\n176 DUP1\n177 CALLDATALOAD\n178 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n222 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\n248 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\n272 JUMPDEST\n273 PUSH1 0x00\n275 DUP2\n276 PUSH1 0x00\n278 DUP1\n279 CALLER\n280 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n301 AND\n302 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n345 PUSH1 0x00\n347 SWAP1\n348 POP\n349 PUSH2 0x01fe\n352 JUMP\n353 JUMPDEST\n354 DUP2\n355 PUSH1 0x00\n357 DUP1\n358 CALLER\n359 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n380 AND\n381 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n429 POP\n430 DUP2\n431 PUSH1 0x00\n433 DUP1\n434 DUP6\n435 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n456 AND\n457 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n505 POP\n506 PUSH1 0x00\n508 SWAP1\n509 POP\n510 JUMPDEST\n511 SWAP3\n512 SWAP2\n513 POP\n514 POP\n515 JUMP\n516 STOP\n"
  },
  {
    "path": "tests/testdata/outputs_expected/metacoin.sol.o.graph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    \n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    \n\n    <script>\n        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%\"};\n        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 +)\"}];\n        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\"}];\n    </script>\n</head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "tests/testdata/outputs_expected/multi_contracts.sol.o.easm",
    "content": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH1 0x3f\n11 JUMPI\n12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n52 AND\n53 DUP1\n54 PUSH4 0x8a4068dd\n59 EQ\n60 PUSH1 0x44\n62 JUMPI\n63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT\n68 JUMPDEST\n69 CALLVALUE\n70 ISZERO\n71 PUSH1 0x4e\n73 JUMPI\n74 PUSH1 0x00\n76 DUP1\n77 REVERT\n78 JUMPDEST\n79 PUSH1 0x54\n81 PUSH1 0x56\n83 JUMP\n84 JUMPDEST\n85 STOP\n86 JUMPDEST\n87 CALLER\n88 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n109 AND\n110 PUSH2 0x08fc\n113 PUSH8 0x1bc16d674ec80000\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\n143 SWAP4\n144 POP\n145 POP\n146 POP\n147 POP\n148 ISZERO\n149 ISZERO\n150 PUSH1 0x9d\n152 JUMPI\n153 PUSH1 0x00\n155 DUP1\n156 REVERT\n157 JUMPDEST\n158 JUMP\n159 STOP\n"
  },
  {
    "path": "tests/testdata/outputs_expected/multi_contracts.sol.o.graph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    \n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    \n\n    <script>\n        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%\"};\n        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\"}];\n        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\"}];\n    </script>\n</head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>"
  },
  {
    "path": "tests/testdata/outputs_expected/nonascii.sol.o.easm",
    "content": "0 PUSH1 0x80\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0041\n12 JUMPI\n13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x24ff38a2\n60 EQ\n61 PUSH2 0x0046\n64 JUMPI\n65 JUMPDEST\n66 PUSH1 0x00\n68 DUP1\n69 REVERT\n70 JUMPDEST\n71 CALLVALUE\n72 DUP1\n73 ISZERO\n74 PUSH2 0x0052\n77 JUMPI\n78 PUSH1 0x00\n80 DUP1\n81 REVERT\n82 JUMPDEST\n83 POP\n84 PUSH2 0x005b\n87 PUSH2 0x00d6\n90 JUMP\n91 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\n137 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\n155 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\n175 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\n214 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 0xd0a5d18dd0bbd0bbd0bed18320d092d0bed180d0bbd0b4000000000000000000\n268 DUP2\n269 MSTORE\n270 POP\n271 SWAP1\n272 POP\n273 SWAP1\n274 JUMP\n275 STOP\n"
  },
  {
    "path": "tests/testdata/outputs_expected/nonascii.sol.o.graph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    \n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    \n\n    <script>\n        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%\"};\n        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 +)\"}];\n        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\"}];\n    </script>\n</head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "tests/testdata/outputs_expected/origin.sol.o.easm",
    "content": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x004c\n12 JUMPI\n13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x8da5cb5b\n60 EQ\n61 PUSH2 0x0051\n64 JUMPI\n65 DUP1\n66 PUSH4 0xf2fde38b\n71 EQ\n72 PUSH2 0x00a6\n75 JUMPI\n76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT\n81 JUMPDEST\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI\n88 PUSH1 0x00\n90 DUP1\n91 REVERT\n92 JUMPDEST\n93 PUSH2 0x0064\n96 PUSH2 0x00df\n99 JUMP\n100 JUMPDEST\n101 PUSH1 0x40\n103 MLOAD\n104 DUP1\n105 DUP3\n106 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n127 AND\n128 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n166 JUMPDEST\n167 CALLVALUE\n168 ISZERO\n169 PUSH2 0x00b1\n172 JUMPI\n173 PUSH1 0x00\n175 DUP1\n176 REVERT\n177 JUMPDEST\n178 PUSH2 0x00dd\n181 PUSH1 0x04\n183 DUP1\n184 DUP1\n185 CALLDATALOAD\n186 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n207 AND\n208 SWAP1\n209 PUSH1 0x20\n211 ADD\n212 SWAP1\n213 SWAP2\n214 SWAP1\n215 POP\n216 POP\n217 PUSH2 0x0104\n220 JUMP\n221 JUMPDEST\n222 STOP\n223 JUMPDEST\n224 PUSH1 0x00\n226 DUP1\n227 SWAP1\n228 SLOAD\n229 SWAP1\n230 PUSH2 0x0100\n233 EXP\n234 SWAP1\n235 DIV\n236 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n257 AND\n258 DUP2\n259 JUMP\n260 JUMPDEST\n261 PUSH1 0x00\n263 DUP1\n264 SWAP1\n265 SLOAD\n266 SWAP1\n267 PUSH2 0x0100\n270 EXP\n271 SWAP1\n272 DIV\n273 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n294 AND\n295 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n316 AND\n317 ORIGIN\n318 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n339 AND\n340 EQ\n341 ISZERO\n342 ISZERO\n343 PUSH2 0x015f\n346 JUMPI\n347 PUSH1 0x00\n349 DUP1\n350 REVERT\n351 JUMPDEST\n352 PUSH1 0x00\n354 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n375 AND\n376 DUP2\n377 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n398 AND\n399 EQ\n400 ISZERO\n401 ISZERO\n402 PUSH2 0x01d6\n405 JUMPI\n406 DUP1\n407 PUSH1 0x00\n409 DUP1\n410 PUSH2 0x0100\n413 EXP\n414 DUP2\n415 SLOAD\n416 DUP2\n417 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n438 MUL\n439 NOT\n440 AND\n441 SWAP1\n442 DUP4\n443 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n464 AND\n465 MUL\n466 OR\n467 SWAP1\n468 SSTORE\n469 POP\n470 JUMPDEST\n471 POP\n472 JUMP\n473 STOP\n"
  },
  {
    "path": "tests/testdata/outputs_expected/origin.sol.o.graph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    \n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    \n\n    <script>\n        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%\"};\n        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\"}];\n        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\"}];\n    </script>\n</head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "tests/testdata/outputs_expected/overflow.sol.o.easm",
    "content": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0062\n12 JUMPI\n13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x18160ddd\n60 EQ\n61 PUSH2 0x0067\n64 JUMPI\n65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI\n76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI\n87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI\n98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT\n103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI\n110 PUSH1 0x00\n112 DUP1\n113 REVERT\n114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP\n122 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\n144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI\n151 PUSH1 0x00\n153 DUP1\n154 REVERT\n155 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\n177 JUMPDEST\n178 STOP\n179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI\n186 PUSH1 0x00\n188 DUP1\n189 REVERT\n190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n199 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n220 AND\n221 SWAP1\n222 PUSH1 0x20\n224 ADD\n225 SWAP1\n226 SWAP2\n227 SWAP1\n228 POP\n229 POP\n230 PUSH2 0x01ab\n233 JUMP\n234 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\n256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI\n263 PUSH1 0x00\n265 DUP1\n266 REVERT\n267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n276 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n320 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\n346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP\n352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n359 PUSH1 0x00\n361 DUP1\n362 CALLER\n363 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n384 AND\n385 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n455 AND\n456 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n507 CALLER\n508 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n529 AND\n530 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n576 PUSH1 0x00\n578 DUP1\n579 REVERT\n580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n607 AND\n608 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n683 AND\n684 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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 0x02\n735 PUSH1 0x00\n737 DUP1\n738 DUP6\n739 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n760 AND\n761 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n800 POP\n801 PUSH1 0x01\n803 SWAP1\n804 POP\n805 SWAP3\n806 SWAP2\n807 POP\n808 POP\n809 JUMP\n810 STOP\n"
  },
  {
    "path": "tests/testdata/outputs_expected/overflow.sol.o.graph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    \n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    \n\n    <script>\n        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%\"};\n        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 +)\"}];\n        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\"}];\n    </script>\n</head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>\n"
  },
  {
    "path": "tests/testdata/outputs_expected/returnvalue.sol.o.easm",
    "content": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x004c\n12 JUMPI\n13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x633ab5e0\n60 EQ\n61 PUSH2 0x0051\n64 JUMPI\n65 DUP1\n66 PUSH4 0xe3bea282\n71 EQ\n72 PUSH2 0x0066\n75 JUMPI\n76 JUMPDEST\n77 PUSH1 0x00\n79 DUP1\n80 REVERT\n81 JUMPDEST\n82 CALLVALUE\n83 ISZERO\n84 PUSH2 0x005c\n87 JUMPI\n88 PUSH1 0x00\n90 DUP1\n91 REVERT\n92 JUMPDEST\n93 PUSH2 0x0064\n96 PUSH2 0x007b\n99 JUMP\n100 JUMPDEST\n101 STOP\n102 JUMPDEST\n103 CALLVALUE\n104 ISZERO\n105 PUSH2 0x0071\n108 JUMPI\n109 PUSH1 0x00\n111 DUP1\n112 REVERT\n113 JUMPDEST\n114 PUSH2 0x0079\n117 PUSH2 0x00d4\n120 JUMP\n121 JUMPDEST\n122 STOP\n123 JUMPDEST\n124 PUSH1 0x00\n126 DUP1\n127 SWAP1\n128 SLOAD\n129 SWAP1\n130 PUSH2 0x0100\n133 EXP\n134 SWAP1\n135 DIV\n136 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n157 AND\n158 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n206 PUSH1 0x00\n208 DUP1\n209 REVERT\n210 JUMPDEST\n211 JUMP\n212 JUMPDEST\n213 PUSH1 0x00\n215 DUP1\n216 SWAP1\n217 SLOAD\n218 SWAP1\n219 PUSH2 0x0100\n222 EXP\n223 SWAP1\n224 DIV\n225 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n246 AND\n247 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n291 STOP\n"
  },
  {
    "path": "tests/testdata/outputs_expected/returnvalue.sol.o.graph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    \n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    \n\n    <script>\n        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%\"};\n        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\"}];\n        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\"}];\n    </script>\n</head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>"
  },
  {
    "path": "tests/testdata/outputs_expected/suicide.sol.o.easm",
    "content": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH1 0x3f\n11 JUMPI\n12 PUSH1 0x00\n14 CALLDATALOAD\n15 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n45 SWAP1\n46 DIV\n47 PUSH4 0xffffffff\n52 AND\n53 DUP1\n54 PUSH4 0xcbf0b0c0\n59 EQ\n60 PUSH1 0x44\n62 JUMPI\n63 JUMPDEST\n64 PUSH1 0x00\n66 DUP1\n67 REVERT\n68 JUMPDEST\n69 CALLVALUE\n70 ISZERO\n71 PUSH1 0x4e\n73 JUMPI\n74 PUSH1 0x00\n76 DUP1\n77 REVERT\n78 JUMPDEST\n79 PUSH1 0x78\n81 PUSH1 0x04\n83 DUP1\n84 DUP1\n85 CALLDATALOAD\n86 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n107 AND\n108 SWAP1\n109 PUSH1 0x20\n111 ADD\n112 SWAP1\n113 SWAP2\n114 SWAP1\n115 POP\n116 POP\n117 PUSH1 0x7a\n119 JUMP\n120 JUMPDEST\n121 STOP\n122 JUMPDEST\n123 DUP1\n124 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n145 AND\n146 SUICIDE\n147 STOP\n"
  },
  {
    "path": "tests/testdata/outputs_expected/suicide.sol.o.graph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    \n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    \n\n    <script>\n        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%\"};\n        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\"}];\n        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\"}];\n    </script>\n</head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>"
  },
  {
    "path": "tests/testdata/outputs_expected/underflow.sol.o.easm",
    "content": "0 PUSH1 0x60\n2 PUSH1 0x40\n4 MSTORE\n5 PUSH1 0x04\n7 CALLDATASIZE\n8 LT\n9 PUSH2 0x0062\n12 JUMPI\n13 PUSH1 0x00\n15 CALLDATALOAD\n16 PUSH29 0x0100000000000000000000000000000000000000000000000000000000\n46 SWAP1\n47 DIV\n48 PUSH4 0xffffffff\n53 AND\n54 DUP1\n55 PUSH4 0x18160ddd\n60 EQ\n61 PUSH2 0x0067\n64 JUMPI\n65 DUP1\n66 PUSH4 0x6241bfd1\n71 EQ\n72 PUSH2 0x0090\n75 JUMPI\n76 DUP1\n77 PUSH4 0x70a08231\n82 EQ\n83 PUSH2 0x00b3\n86 JUMPI\n87 DUP1\n88 PUSH4 0xa3210e87\n93 EQ\n94 PUSH2 0x0100\n97 JUMPI\n98 JUMPDEST\n99 PUSH1 0x00\n101 DUP1\n102 REVERT\n103 JUMPDEST\n104 CALLVALUE\n105 ISZERO\n106 PUSH2 0x0072\n109 JUMPI\n110 PUSH1 0x00\n112 DUP1\n113 REVERT\n114 JUMPDEST\n115 PUSH2 0x007a\n118 PUSH2 0x015a\n121 JUMP\n122 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\n144 JUMPDEST\n145 CALLVALUE\n146 ISZERO\n147 PUSH2 0x009b\n150 JUMPI\n151 PUSH1 0x00\n153 DUP1\n154 REVERT\n155 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\n177 JUMPDEST\n178 STOP\n179 JUMPDEST\n180 CALLVALUE\n181 ISZERO\n182 PUSH2 0x00be\n185 JUMPI\n186 PUSH1 0x00\n188 DUP1\n189 REVERT\n190 JUMPDEST\n191 PUSH2 0x00ea\n194 PUSH1 0x04\n196 DUP1\n197 DUP1\n198 CALLDATALOAD\n199 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n220 AND\n221 SWAP1\n222 PUSH1 0x20\n224 ADD\n225 SWAP1\n226 SWAP2\n227 SWAP1\n228 POP\n229 POP\n230 PUSH2 0x01ab\n233 JUMP\n234 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\n256 JUMPDEST\n257 CALLVALUE\n258 ISZERO\n259 PUSH2 0x010b\n262 JUMPI\n263 PUSH1 0x00\n265 DUP1\n266 REVERT\n267 JUMPDEST\n268 PUSH2 0x0140\n271 PUSH1 0x04\n273 DUP1\n274 DUP1\n275 CALLDATALOAD\n276 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n320 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\n346 JUMPDEST\n347 PUSH1 0x01\n349 SLOAD\n350 DUP2\n351 JUMP\n352 JUMPDEST\n353 DUP1\n354 PUSH1 0x01\n356 DUP2\n357 SWAP1\n358 SSTORE\n359 PUSH1 0x00\n361 DUP1\n362 CALLER\n363 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n384 AND\n385 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n427 JUMPDEST\n428 PUSH1 0x00\n430 DUP1\n431 PUSH1 0x00\n433 DUP4\n434 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n455 AND\n456 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n499 JUMPDEST\n500 PUSH1 0x00\n502 DUP1\n503 DUP3\n504 PUSH1 0x00\n506 DUP1\n507 CALLER\n508 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n529 AND\n530 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n576 PUSH1 0x00\n578 DUP1\n579 REVERT\n580 JUMPDEST\n581 DUP2\n582 PUSH1 0x00\n584 DUP1\n585 CALLER\n586 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n607 AND\n608 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n656 POP\n657 DUP2\n658 PUSH1 0x00\n660 DUP1\n661 DUP6\n662 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\n683 AND\n684 PUSH20 0xffffffffffffffffffffffffffffffffffffffff\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\n742 STOP\n"
  },
  {
    "path": "tests/testdata/outputs_expected/underflow.sol.o.graph.html",
    "content": "<!DOCTYPE html>\n<html>\n<head>\n    <title>Call Graph</title>\n    <link rel=\"stylesheet\" href=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.css\" integrity=\"sha256-iq5ygGJ7021Pi7H5S+QAUXCPUfaBzfqeplbg/KlEssg=\" crossorigin=\"anonymous\" />\n    <script src=\"https://cdnjs.cloudflare.com/ajax/libs/vis/4.21.0/vis.min.js\" integrity=\"sha256-JuQeAGbk9rG/EoRMixuy5X8syzICcvB0dj3KindZkY0=\" crossorigin=\"anonymous\"></script>\n\n    \n    <style type=\"text/css\">\n        #mynetwork {\n          height: 100%;\n            background-color: #232625;\n        }\n        body {\n            background-color: #232625;\n            color: #ffffff;\n            font-size: 10px;\n        }\n        html, body {\n          height: 95%;\n        }\n    </style>\n    \n\n    <script>\n        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%\"};\n        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 +)\"}];\n        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\"}];\n    </script>\n</head>\n<body>\n<p>Mythril / Ethereum LASER Symbolic VM</p>\n<div id=\"mynetwork\"></div>\n<script type=\"text/javascript\">\n    var container = document.getElementById('mynetwork');\n\n    var nodesSet = new vis.DataSet(nodes);\n    var edgesSet = new vis.DataSet(edges);\n    var data = {'nodes': nodesSet, 'edges': edgesSet}\n\n    var gph = new vis.Network(container, data, options);\n    gph.on(\"click\", function (params) {\n        // parse node id\n        var nodeID = params['nodes']['0'];\n        if (nodeID) {\n            var clickedNode = nodesSet.get(nodeID);\n\n            if(clickedNode.isExpanded) {\n                clickedNode.label = clickedNode.truncLabel;\n            }\n            else {\n                clickedNode.label = clickedNode.fullLabel;\n            }\n\n            clickedNode.isExpanded = !clickedNode.isExpanded;\n\n            nodesSet.update(clickedNode);\n        }\n    });\n</script>\n</body>\n</html>"
  },
  {
    "path": "tests/teststorage/contractstorage.fs.tmp",
    "content": ""
  },
  {
    "path": "tests/util_tests.py",
    "content": "import pytest\n\nfrom mythril.ethereum.util import extract_version\n\ntest_data = (\n    (\"pragma solidity 0.5.0\\n\", [\"0.5.0\"]),\n    (\"pragma solidity =0.5.0\\n\", [\"0.5.0\"]),\n    (\"pragma solidity ^0.4.26\\n\", [\"0.4.26\"]),\n    (\"pragma solidity ^0.6.3;\\n\", [f\"0.6.{x}\" for x in range(3, 13)]),\n    (\"pragma solidity ^0.6.3              ;\\n\", [f\"0.6.{x}\" for x in range(3, 13)]),\n    (\n        \"pragma solidity ^0.6.3;                       \\n\",\n        [f\"0.6.{x}\" for x in range(3, 13)],\n    ),\n    (\n        \"pragma solidity ^0.6.3       ;                       \\n\",\n        [f\"0.6.{x}\" for x in range(3, 13)],\n    ),\n    (\n        \"\"\"pragma solidity >=0.4.0 <0.6.0             ;               \n        contract SimpleStorage {\n            uint storedData;\n            function set(uint x) public {\n                storedData = x;\n            }\n            function get() public view returns (uint) {\n                return storedData;\n            }\n        }\"\"\",\n        [f\"0.4.{x}\" for x in range(11, 27)] + [f\"0.5.{x}\" for x in range(0, 18)],\n    ),\n    (\n        \"\"\"\n        pragma solidity >=0.4.0 <0.6.0\n        ;contract SimpleStorage {\n            uint storedData;\n            function set(uint x) public {\n                storedData = x;\n            }\n            function get() public view returns (uint) {\n                return storedData;\n            }\n        }\"\"\",\n        [f\"0.4.{x}\" for x in range(11, 27)] + [f\"0.5.{x}\" for x in range(0, 18)],\n    ),\n    (\n        \"\"\"\n        pragma solidity >=0.4.0 <0.6.0\n        ;contract SimpleStorage {\n            uint storedData;\n            function set(uint x) public {\n                storedData = x;\n            }\n            function get() public view returns (uint) {\n                return storedData;\n            }\n        }\"\"\",\n        [f\"0.4.{x}\" for x in range(11, 27)] + [f\"0.5.{x}\" for x in range(0, 18)],\n    ),\n    (\n        \"\"\"\n        pragma solidity >= 0.5.0 < 0.6.0;\n        ;contract SimpleStorage {\n            uint storedData;\n            function set(uint x) public {\n                storedData = x;\n            }\n            function get() public view returns (uint) {\n                return storedData;\n            }\n        }\"\"\",\n        [f\"0.5.{x}\" for x in range(0, 18)],\n    ),\n    (\n        \"\"\"\n        pragma solidity   >=   0  .  4  .0 <  0  .  6  .         0\n        ;contract SimpleStorage {\n            uint storedData;\n            function set(uint x) public {\n                storedData = x;\n            }\n            function get() public view returns (uint) {\n                return storedData;\n            }\n        }\"\"\",\n        [f\"0.4.{x}\" for x in range(11, 27)] + [f\"0.5.{x}\" for x in range(0, 18)],\n    ),\n)\n\n\n@pytest.mark.parametrize(\"input_,output\", test_data)\ndef test_sar(input_, output):\n    assert extract_version(input_) in output\n"
  },
  {
    "path": "tox.ini",
    "content": "[tox]\nenvlist = python3.7, python3.10, python3.12\n\n[testenv]\ndeps =\n    pytest\n    pytest-mock\npassenv = MYTHRIL_DIR,INFURA_ID\nallowlist_externals = mkdir\ncommands =\n    mkdir -p {toxinidir}/tests/testdata/outputs_current/\n    mkdir -p {toxinidir}/tests/testdata/outputs_current_laser_result/\n    py.test -v \\\n        --junitxml={toxworkdir}/output/{envname}/junit.xml \\\n        --disable-pytest-warnings \\\n        {posargs}\n\n[testenv:py37]\nbasepython = python3.7\nsetenv =\n    COVERAGE_FILE = .coverage.{envname}\ndeps =\n    mypy==0.782\n    pytest\n    pytest-mock\n    pytest-cov\n    \nallowlist_externals = mkdir\ncommands =\n    mypy --follow-imports=silent --warn-unused-ignores --ignore-missing-imports --no-strict-optional mythril\n    mkdir -p {toxinidir}/tests/testdata/outputs_current/\n    mkdir -p {toxinidir}/tests/testdata/outputs_current_laser_result/\n    py.test -v \\\n        --cov=mythril \\\n        --cov-config=tox.ini \\\n        --cov-report=xml:{toxworkdir}/output/{envname}/coverage.xml \\\n        --cov-report=html:{toxworkdir}/output/{envname}/covhtml \\\n        --junitxml={toxworkdir}/output/{envname}/junit.xml \\\n        --disable-pytest-warnings \\\n        {posargs}\n\n[testenv:py38]\nbasepython = python3.8\nsetenv =\n    COVERAGE_FILE = .coverage.{envname}\ndeps =\n    mypy==0.782\n    pytest\n    pytest-mock\n    pytest-cov\n    \npassenv = MYTHRIL_DIR,INFURA_ID\nallowlist_externals = mkdir\ncommands =\n    mypy --follow-imports=silent --warn-unused-ignores --ignore-missing-imports --no-strict-optional mythril\n    mkdir -p {toxinidir}/tests/testdata/outputs_current/\n    mkdir -p {toxinidir}/tests/testdata/outputs_current_laser_result/\n    py.test -v \\\n        --cov=mythril \\\n        --cov-config=tox.ini \\\n        --cov-report=xml:{toxworkdir}/output/{envname}/coverage.xml \\\n        --cov-report=html:{toxworkdir}/output/{envname}/covhtml \\\n        --junitxml={toxworkdir}/output/{envname}/junit.xml \\\n        --disable-pytest-warnings \\\n        {posargs}\n\n[testenv:py39]\nbasepython = python3.9\nsetenv =\n    COVERAGE_FILE = .coverage.{envname}\ndeps =\n    mypy==0.782\n    pytest\n    pytest-mock\n    pytest-cov\n    \npassenv = MYTHRIL_DIR,INFURA_ID\nallowlist_externals = mkdir\ncommands =\n    mypy --follow-imports=silent --warn-unused-ignores --ignore-missing-imports --no-strict-optional mythril\n    mkdir -p {toxinidir}/tests/testdata/outputs_current/\n    mkdir -p {toxinidir}/tests/testdata/outputs_current_laser_result/\n    py.test -v \\\n        --cov=mythril \\\n        --cov-config=tox.ini \\\n        --cov-report=xml:{toxworkdir}/output/{envname}/coverage.xml \\\n        --cov-report=html:{toxworkdir}/output/{envname}/covhtml \\\n        --junitxml={toxworkdir}/output/{envname}/junit.xml \\\n        --disable-pytest-warnings \\\n        {posargs}\n\n\n[coverage:report]\nomit =\n    *__init__.py\n    /usr/*\n    *_test.py\n    setup.py\n"
  }
]