{
  "id": "dccef664829fe4937eb44bfbb0fe4205",
  "_format": "hh-sol-build-info-1",
  "solcVersion": "0.5.12",
  "solcLongVersion": "0.5.12+commit.7709ece9",
  "input": {
    "language": "Solidity",
    "sources": {
      "zksync-src/Opcodes.sol": {
        "content": "pragma solidity >=0.4.21 <0.6.0;\n\ncontract Test1 {\n    function isSameAddress(address a, address b) public returns(bool){  //Simply add the two arguments and return\n        if (a == b) return true;\n        return false;\n    }\n}\n\ncontract OpCodes {\n\n    Test1 test1;\n\n    constructor() public {  //Constructor function\n        test1 = new Test1();  //Create new \"Test1\" function\n    }\n\n    modifier onlyOwner(address _owner) {\n        require(msg.sender == _owner);\n        _;\n    }\n    // Add a todo to the list\n    function test() public {\n\n        //simple_instructions\n        /*assembly { pop(sub(dup1, mul(dup1, dup1))) }*/\n\n        //keywords\n        assembly { pop(address) return(2, byte(2,1)) }\n\n    //label_complex\n    /*assembly { 7 abc: 8 eq jump(abc) jumpi(eq(7, 8), abc) pop }\n    assembly { pop(jumpi(eq(7, 8), abc)) jump(abc) }*/\n\n    //functional\n    /*assembly { let x := 2 add(7, mul(6, x)) mul(7, 8) add =: x }*/\n\n    //for_statement\n    assembly { for { let i := 1 } lt(i, 5) { i := add(i, 1) } {} }\n    assembly { for { let i := 6 } gt(i, 5) { i := add(i, 1) } {} }\n    assembly { for { let i := 1 } slt(i, 5) { i := add(i, 1) } {} }\n    assembly { for { let i := 6 } sgt(i, 5) { i := add(i, 1) } {} }\n\n    //no_opcodes_in_strict\n    assembly { pop(callvalue()) }\n\n        //no_dup_swap_in_strict\n        /*assembly { swap1() }*/\n\n        //print_functional\n        assembly { let x := mul(sload(0x12), 7) }\n\n        //print_if\n        assembly { if 2 { pop(mload(0)) }}\n\n        //function_definitions_multiple_args\n        assembly { function f(a, d){ mstore(a, d) } function g(a, d) -> x, y {}}\n\n        //sstore\n        assembly { function f(a, d){ sstore(a, d) } function g(a, d) -> x, y {}}\n\n        //mstore8\n        assembly { function f(a, d){ mstore8(a, d) } function g(a, d) -> x, y {}}\n\n        //calldatacopy\n        assembly {\n        let a := mload(0x40)\n        let b := add(a, 32)\n        calldatacopy(a, 4, 32)\n        /*calldatacopy(b, add(4, 32), 32)*/\n        /*result := add(mload(a), mload(b))*/\n        }\n\n        //codecopy\n        assembly {\n        let a := mload(0x40)\n        let b := add(a, 32)\n        codecopy(a, 4, 32)\n        }\n\n        //codecopy\n        assembly {\n        let a := mload(0x40)\n        let b := add(a, 32)\n        extcodecopy(0, a, 4, 32)\n        }\n\n        //for_statement\n        assembly { let x := calldatasize() for { let i := 0} lt(i, x) { i := add(i, 1) } { mstore(i, 2) } }\n\n        //keccak256\n        assembly { pop(keccak256(0,0)) }\n\n        //returndatasize\n        assembly { let r := returndatasize }\n\n        //returndatacopy\n        assembly { returndatacopy(64, 32, 0) }\n        //byzantium vs const Constantinople\n        //staticcall\n        assembly { pop(staticcall(10000, 0x123, 64, 0x10, 128, 0x10)) }\n\n        /*//create2 Constantinople\n        assembly { pop(create2(10, 0x123, 32, 64)) }*/\n\n        //create Constantinople\n        assembly { pop(create(10, 0x123, 32)) }\n\n        //shift Constantinople\n        /*assembly { pop(shl(10, 32)) }\n        assembly { pop(shr(10, 32)) }\n        assembly { pop(sar(10, 32)) }*/\n\n\n        //not\n        assembly { pop( not(0x1f)) }\n\n        //exp\n        assembly { pop( exp(2, 226)) }\n\n        //mod\n        assembly { pop( mod(3, 9)) }\n\n        //smod\n        assembly { pop( smod(3, 9)) }\n\n        //div\n        assembly { pop( div(4, 2)) }\n\n        //sdiv\n        assembly { pop( sdiv(4, 2)) }\n\n        //iszero\n        assembly { pop(iszero(1)) }\n\n        //and\n        assembly { pop(and(2,3)) }\n\n        //or\n        assembly { pop(or(3,3)) }\n\n        //xor\n        assembly { pop(xor(3,3)) }\n\n        //addmod\n        assembly { pop(addmod(3,3,6)) }\n\n        //mulmod\n        assembly { pop(mulmod(3,3,3)) }\n\n        //signextend\n        assembly { pop(signextend(1, 10)) }\n\n        //sha3\n        assembly { pop(calldataload(0)) }\n\n        //blockhash\n        assembly { pop(blockhash(sub(number(), 1))) }\n\n        //balance\n        assembly { pop(balance(0x0)) }\n\n        //caller\n        assembly { pop(caller()) }\n\n        //codesize\n        assembly { pop(codesize()) }\n\n        //extcodesize\n        assembly { pop(extcodesize(0x1)) }\n\n        //origin\n        assembly { pop(origin()) }\n\n        //gas\n        assembly {  pop(gas())}\n\n        //msize\n        assembly {  pop(msize())}\n\n        //pc\n        assembly {  pop(pc())}\n\n        //gasprice\n        assembly {  pop(gasprice())}\n\n        //coinbase\n        assembly {  pop(coinbase())}\n\n        //timestamp\n        assembly {  pop(timestamp())}\n\n        //number\n        assembly {  pop(number())}\n\n        //difficulty\n        assembly {  pop(difficulty())}\n\n        //gaslimit\n        assembly {  pop(gaslimit())}\n\n        //call\n        address contractAddr = address(test1);\n        bytes4 sig = bytes4(keccak256(\"isSameAddress(address,address)\")); //Function signature\n        address a = msg.sender;\n\n        assembly {\n            let x := mload(0x40)   //Find empty storage location using \"free memory pointer\"\n            mstore(x,sig) //Place signature at beginning of empty storage\n            mstore(add(x,0x04),a) // first address parameter. just after signature\n            mstore(add(x,0x24),a) // 2nd address parameter - first padded. add 32 bytes (not 20 bytes)\n            mstore(0x40,add(x,0x64)) // this is missing in other examples. Set free pointer before function call. so it is used by called function.\n        // new free pointer position after the output values of the called function.\n\n            let success := call(\n                5000, //5k gas\n                contractAddr, //To addr\n                0,    //No wei passed\n                x,    // Inputs are at location x\n                0x44, //Inputs size two padded, so 68 bytes\n                x,    //Store output over input\n                0x20) //Output is 32 bytes long\n        }\n\n        //callcode\n        assembly {\n            let x := mload(0x40)   //Find empty storage location using \"free memory pointer\"\n            mstore(x,sig) //Place signature at beginning of empty storage\n            mstore(add(x,0x04),a) // first address parameter. just after signature\n            mstore(add(x,0x24),a) // 2nd address parameter - first padded. add 32 bytes (not 20 bytes)\n            mstore(0x40,add(x,0x64)) // this is missing in other examples. Set free pointer before function call. so it is used by called function.\n        // new free pointer position after the output values of the called function.\n\n            let success := callcode(\n                5000, //5k gas\n                contractAddr, //To addr\n                0,    //No wei passed\n                x,    // Inputs are at location x\n                0x44, //Inputs size two padded, so 68 bytes\n                x,    //Store output over input\n                0x20) //Output is 32 bytes long\n        }\n\n        //delegatecall\n        assembly {\n            let x := mload(0x40)   //Find empty storage location using \"free memory pointer\"\n            mstore(x,sig) //Place signature at beginning of empty storage\n            mstore(add(x,0x04),a) // first address parameter. just after signature\n            mstore(add(x,0x24),a) // 2nd address parameter - first padded. add 32 bytes (not 20 bytes)\n            mstore(0x40,add(x,0x64)) // this is missing in other examples. Set free pointer before function call. so it is used by called function.\n        // new free pointer position after the output values of the called function.\n\n            let success := delegatecall(\n                5000, //5k gas\n                contractAddr, //To addr\n                x,    // Inputs are at location x\n                0x44, //Inputs size two padded, so 68 bytes\n                x,    //Store output over input\n                0x20) //Output is 32 bytes long\n        }\n\n        uint256 _id = 0x420042;\n\n        //log0\n        log0(\n            bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20)\n        );\n\n        //log1\n        log1(\n            bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),\n            bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20)\n        );\n\n        //log2\n        log2(\n            bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),\n            bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),\n            bytes32(uint256(msg.sender))\n        );\n\n        //log3\n        log3(\n            bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),\n            bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),\n            bytes32(uint256(msg.sender)),\n            bytes32(_id)\n        );\n\n        //log4\n        log4(\n            bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),\n            bytes32(0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20),\n            bytes32(uint256(msg.sender)),\n            bytes32(_id),\n            bytes32(_id)\n\n        );\n\n        //selfdestruct\n        assembly { selfdestruct(0x02) }\n    }\n\n    function test_revert() public {\n\n        //revert\n        assembly{ revert(0, 0) }\n    }\n\n    function test_invalid() public {\n\n        //revert\n        assembly{ invalid() }\n    }\n\n    function test_stop() public {\n\n        //revert\n        assembly{ stop() }\n    }\n\n}"
      }
    },
    "settings": {
      "optimizer": {
        "enabled": true,
        "mode": "3"
      },
      "outputSelection": {
        "*": {
          "*": [
            "abi",
            "evm.methodIdentifiers",
            "metadata"
          ],
          "": [
            "ast"
          ]
        }
      },
      "libraries": {}
    }
  },
  "output": {
    "errors": [
      {
        "component": "general",
        "errorCode": null,
        "formattedMessage": "zksync-src/Opcodes.sol:4:5: Warning: Function state mutability can be restricted to pure\n    function isSameAddress(address a, address b) public returns(bool){  //Simply add the two arguments and return\n    ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "file": "zksync-src/Opcodes.sol",
          "start": 55,
          "end": 225
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": null,
        "formattedMessage": "zksync-src/Opcodes.sol:304:5: Warning: Function state mutability can be restricted to pure\n    function test_revert() public {\n    ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "file": "zksync-src/Opcodes.sol",
          "start": 9146,
          "end": 9234
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": null,
        "formattedMessage": "zksync-src/Opcodes.sol:310:5: Warning: Function state mutability can be restricted to pure\n    function test_invalid() public {\n    ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "file": "zksync-src/Opcodes.sol",
          "start": 9240,
          "end": 9326
        },
        "type": "Warning"
      },
      {
        "component": "general",
        "errorCode": null,
        "formattedMessage": "zksync-src/Opcodes.sol:316:5: Warning: Function state mutability can be restricted to pure\n    function test_stop() public {\n    ^ (Relevant source part starts here and spans across multiple lines).\n",
        "message": "Function state mutability can be restricted to pure",
        "severity": "warning",
        "sourceLocation": {
          "file": "zksync-src/Opcodes.sol",
          "start": 9332,
          "end": 9412
        },
        "type": "Warning"
      }
    ],
    "version": "0.5.12",
    "long_version": "0.5.12+commit.7709ece9.Darwin.appleclang",
    "zk_version": "1.3.14",
    "sources": {
      "zksync-src/Opcodes.sol": {
        "id": 0,
        "ast": {
          "absolutePath": "zksync-src/Opcodes.sol",
          "exportedSymbols": {
            "OpCodes": [
              210
            ],
            "Test1": [
              20
            ]
          },
          "id": 211,
          "nodeType": "SourceUnit",
          "nodes": [
            {
              "id": 1,
              "literals": [
                "solidity",
                ">=",
                "0.4",
                ".21",
                "<",
                "0.6",
                ".0"
              ],
              "nodeType": "PragmaDirective",
              "src": "0:32:0"
            },
            {
              "baseContracts": [],
              "contractDependencies": [],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 20,
              "linearizedBaseContracts": [
                20
              ],
              "name": "Test1",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "body": {
                    "id": 18,
                    "nodeType": "Block",
                    "src": "120:105:0",
                    "statements": [
                      {
                        "condition": {
                          "argumentTypes": null,
                          "commonType": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          },
                          "id": 12,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftExpression": {
                            "argumentTypes": null,
                            "id": 10,
                            "name": "a",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 3,
                            "src": "177:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "nodeType": "BinaryOperation",
                          "operator": "==",
                          "rightExpression": {
                            "argumentTypes": null,
                            "id": 11,
                            "name": "b",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 5,
                            "src": "182:1:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            }
                          },
                          "src": "177:6:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "falseBody": null,
                        "id": 15,
                        "nodeType": "IfStatement",
                        "src": "173:23:0",
                        "trueBody": {
                          "expression": {
                            "argumentTypes": null,
                            "hexValue": "74727565",
                            "id": 13,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "kind": "bool",
                            "lValueRequested": false,
                            "nodeType": "Literal",
                            "src": "192:4:0",
                            "subdenomination": null,
                            "typeDescriptions": {
                              "typeIdentifier": "t_bool",
                              "typeString": "bool"
                            },
                            "value": "true"
                          },
                          "functionReturnParameters": 9,
                          "id": 14,
                          "nodeType": "Return",
                          "src": "185:11:0"
                        }
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "hexValue": "66616c7365",
                          "id": 16,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "bool",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "213:5:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          },
                          "value": "false"
                        },
                        "functionReturnParameters": 9,
                        "id": 17,
                        "nodeType": "Return",
                        "src": "206:12:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 19,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "isSameAddress",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 6,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 3,
                        "name": "a",
                        "nodeType": "VariableDeclaration",
                        "scope": 19,
                        "src": "78:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 2,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "78:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      },
                      {
                        "constant": false,
                        "id": 5,
                        "name": "b",
                        "nodeType": "VariableDeclaration",
                        "scope": 19,
                        "src": "89:9:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 4,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "89:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "77:22:0"
                  },
                  "returnParameters": {
                    "id": 9,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 8,
                        "name": "",
                        "nodeType": "VariableDeclaration",
                        "scope": 19,
                        "src": "115:4:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_bool",
                          "typeString": "bool"
                        },
                        "typeName": {
                          "id": 7,
                          "name": "bool",
                          "nodeType": "ElementaryTypeName",
                          "src": "115:4:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bool",
                            "typeString": "bool"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "114:6:0"
                  },
                  "scope": 20,
                  "src": "55:170:0",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 211,
              "src": "34:193:0"
            },
            {
              "baseContracts": [],
              "contractDependencies": [
                20
              ],
              "contractKind": "contract",
              "documentation": null,
              "fullyImplemented": true,
              "id": 210,
              "linearizedBaseContracts": [
                210
              ],
              "name": "OpCodes",
              "nodeType": "ContractDefinition",
              "nodes": [
                {
                  "constant": false,
                  "id": 22,
                  "name": "test1",
                  "nodeType": "VariableDeclaration",
                  "scope": 210,
                  "src": "253:11:0",
                  "stateVariable": true,
                  "storageLocation": "default",
                  "typeDescriptions": {
                    "typeIdentifier": "t_contract$_Test1_$20",
                    "typeString": "contract Test1"
                  },
                  "typeName": {
                    "contractScope": null,
                    "id": 21,
                    "name": "Test1",
                    "nodeType": "UserDefinedTypeName",
                    "referencedDeclaration": 20,
                    "src": "253:5:0",
                    "typeDescriptions": {
                      "typeIdentifier": "t_contract$_Test1_$20",
                      "typeString": "contract Test1"
                    }
                  },
                  "value": null,
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 31,
                    "nodeType": "Block",
                    "src": "292:91:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "id": 29,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "leftHandSide": {
                            "argumentTypes": null,
                            "id": 25,
                            "name": "test1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 22,
                            "src": "326:5:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Test1_$20",
                              "typeString": "contract Test1"
                            }
                          },
                          "nodeType": "Assignment",
                          "operator": "=",
                          "rightHandSide": {
                            "argumentTypes": null,
                            "arguments": [],
                            "expression": {
                              "argumentTypes": [],
                              "id": 27,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "nodeType": "NewExpression",
                              "src": "334:9:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_function_creation_nonpayable$__$returns$_t_contract$_Test1_$20_$",
                                "typeString": "function () returns (contract Test1)"
                              },
                              "typeName": {
                                "contractScope": null,
                                "id": 26,
                                "name": "Test1",
                                "nodeType": "UserDefinedTypeName",
                                "referencedDeclaration": 20,
                                "src": "338:5:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_contract$_Test1_$20",
                                  "typeString": "contract Test1"
                                }
                              }
                            },
                            "id": 28,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": false,
                            "kind": "functionCall",
                            "lValueRequested": false,
                            "names": [],
                            "nodeType": "FunctionCall",
                            "src": "334:11:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_contract$_Test1_$20",
                              "typeString": "contract Test1"
                            }
                          },
                          "src": "326:19:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_contract$_Test1_$20",
                            "typeString": "contract Test1"
                          }
                        },
                        "id": 30,
                        "nodeType": "ExpressionStatement",
                        "src": "326:19:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 32,
                  "implemented": true,
                  "kind": "constructor",
                  "modifiers": [],
                  "name": "",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 23,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "282:2:0"
                  },
                  "returnParameters": {
                    "id": 24,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "292:0:0"
                  },
                  "scope": 210,
                  "src": "271:112:0",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 44,
                    "nodeType": "Block",
                    "src": "424:57:0",
                    "statements": [
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "commonType": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              },
                              "id": 40,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "lValueRequested": false,
                              "leftExpression": {
                                "argumentTypes": null,
                                "expression": {
                                  "argumentTypes": null,
                                  "id": 37,
                                  "name": "msg",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 225,
                                  "src": "442:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_magic_message",
                                    "typeString": "msg"
                                  }
                                },
                                "id": 38,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": false,
                                "lValueRequested": false,
                                "memberName": "sender",
                                "nodeType": "MemberAccess",
                                "referencedDeclaration": null,
                                "src": "442:10:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address_payable",
                                  "typeString": "address payable"
                                }
                              },
                              "nodeType": "BinaryOperation",
                              "operator": "==",
                              "rightExpression": {
                                "argumentTypes": null,
                                "id": 39,
                                "name": "_owner",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 34,
                                "src": "456:6:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_address",
                                  "typeString": "address"
                                }
                              },
                              "src": "442:20:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bool",
                                "typeString": "bool"
                              }
                            ],
                            "id": 36,
                            "name": "require",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [
                              228,
                              229
                            ],
                            "referencedDeclaration": 228,
                            "src": "434:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_require_pure$_t_bool_$returns$__$",
                              "typeString": "function (bool) pure"
                            }
                          },
                          "id": 41,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "434:29:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 42,
                        "nodeType": "ExpressionStatement",
                        "src": "434:29:0"
                      },
                      {
                        "id": 43,
                        "nodeType": "PlaceholderStatement",
                        "src": "473:1:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 45,
                  "name": "onlyOwner",
                  "nodeType": "ModifierDefinition",
                  "parameters": {
                    "id": 35,
                    "nodeType": "ParameterList",
                    "parameters": [
                      {
                        "constant": false,
                        "id": 34,
                        "name": "_owner",
                        "nodeType": "VariableDeclaration",
                        "scope": 45,
                        "src": "408:14:0",
                        "stateVariable": false,
                        "storageLocation": "default",
                        "typeDescriptions": {
                          "typeIdentifier": "t_address",
                          "typeString": "address"
                        },
                        "typeName": {
                          "id": 33,
                          "name": "address",
                          "nodeType": "ElementaryTypeName",
                          "src": "408:7:0",
                          "stateMutability": "nonpayable",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "value": null,
                        "visibility": "internal"
                      }
                    ],
                    "src": "407:16:0"
                  },
                  "src": "389:92:0",
                  "visibility": "internal"
                },
                {
                  "body": {
                    "id": 193,
                    "nodeType": "Block",
                    "src": "539:8601:0",
                    "statements": [
                      {
                        "externalReferences": [],
                        "id": 48,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    pop(address())\n    return(2, byte(2, 1))\n}",
                        "src": "657:46:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 49,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    for { let i := 1 } lt(i, 5) { i := add(i, 1) }\n    { }\n}",
                        "src": "958:62:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 50,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    for { let i := 6 } gt(i, 5) { i := add(i, 1) }\n    { }\n}",
                        "src": "1025:62:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 51,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    for { let i := 1 } slt(i, 5) { i := add(i, 1) }\n    { }\n}",
                        "src": "1092:63:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 52,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    for { let i := 6 } sgt(i, 5) { i := add(i, 1) }\n    { }\n}",
                        "src": "1160:63:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 53,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(callvalue()) }",
                        "src": "1256:29:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 54,
                        "nodeType": "InlineAssembly",
                        "operations": "{ let x := mul(sload(0x12), 7) }",
                        "src": "1388:41:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 55,
                        "nodeType": "InlineAssembly",
                        "operations": "{ if 2 { pop(mload(0)) } }",
                        "src": "1458:34:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 56,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    function f(a, d)\n    { mstore(a, d) }\n    function g(a, d) -> x, y\n    { }\n}",
                        "src": "1547:72:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 57,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    function f(a, d)\n    { sstore(a, d) }\n    function g(a, d) -> x, y\n    { }\n}",
                        "src": "1646:72:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 58,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    function f(a, d)\n    { mstore8(a, d) }\n    function g(a, d) -> x, y\n    { }\n}",
                        "src": "1746:73:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 59,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    let a := mload(0x40)\n    let b := add(a, 32)\n    calldatacopy(a, 4, 32)\n}",
                        "src": "1852:198:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 60,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    let a := mload(0x40)\n    let b := add(a, 32)\n    codecopy(a, 4, 32)\n}",
                        "src": "2079:104:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 61,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    let a := mload(0x40)\n    let b := add(a, 32)\n    extcodecopy(0, a, 4, 32)\n}",
                        "src": "2212:110:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 62,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    let x := calldatasize()\n    for { let i := 0 } lt(i, x) { i := add(i, 1) }\n    { mstore(i, 2) }\n}",
                        "src": "2356:99:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 63,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(keccak256(0, 0)) }",
                        "src": "2485:32:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 64,
                        "nodeType": "InlineAssembly",
                        "operations": "{ let r := returndatasize() }",
                        "src": "2552:36:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 65,
                        "nodeType": "InlineAssembly",
                        "operations": "{ returndatacopy(64, 32, 0) }",
                        "src": "2623:38:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 66,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    pop(staticcall(10000, 0x123, 64, 0x10, 128, 0x10))\n}",
                        "src": "2735:63:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 67,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(create(10, 0x123, 32)) }",
                        "src": "2931:39:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 68,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(not(0x1f)) }",
                        "src": "3145:28:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 69,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(exp(2, 226)) }",
                        "src": "3197:30:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 70,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(mod(3, 9)) }",
                        "src": "3251:28:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 71,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(smod(3, 9)) }",
                        "src": "3304:29:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 72,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(div(4, 2)) }",
                        "src": "3357:28:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 73,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(sdiv(4, 2)) }",
                        "src": "3410:29:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 74,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(iszero(1)) }",
                        "src": "3466:27:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 75,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(and(2, 3)) }",
                        "src": "3517:26:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 76,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(or(3, 3)) }",
                        "src": "3566:25:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 77,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(xor(3, 3)) }",
                        "src": "3615:26:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 78,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(addmod(3, 3, 6)) }",
                        "src": "3668:31:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 79,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(mulmod(3, 3, 3)) }",
                        "src": "3726:31:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 80,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(signextend(1, 10)) }",
                        "src": "3788:35:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 81,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(calldataload(0)) }",
                        "src": "3848:33:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 82,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    pop(blockhash(sub(number(), 1)))\n}",
                        "src": "3911:45:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 83,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(balance(0x0)) }",
                        "src": "3984:30:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 84,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(caller()) }",
                        "src": "4041:26:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 85,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(codesize()) }",
                        "src": "4096:28:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 86,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(extcodesize(0x1)) }",
                        "src": "4156:34:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 87,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(origin()) }",
                        "src": "4217:26:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 88,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(gas()) }",
                        "src": "4267:23:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 89,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(msize()) }",
                        "src": "4316:25:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 90,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(pc()) }",
                        "src": "4364:22:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 91,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(gasprice()) }",
                        "src": "4415:28:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 92,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(coinbase()) }",
                        "src": "4472:28:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 93,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(timestamp()) }",
                        "src": "4530:29:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 94,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(number()) }",
                        "src": "4586:26:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 95,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(difficulty()) }",
                        "src": "4643:30:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 96,
                        "nodeType": "InlineAssembly",
                        "operations": "{ pop(gaslimit()) }",
                        "src": "4702:28:0"
                      },
                      {
                        "assignments": [
                          98
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 98,
                            "name": "contractAddr",
                            "nodeType": "VariableDeclaration",
                            "scope": 193,
                            "src": "4755:20:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 97,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4755:7:0",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 102,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "id": 100,
                              "name": "test1",
                              "nodeType": "Identifier",
                              "overloadedDeclarations": [],
                              "referencedDeclaration": 22,
                              "src": "4786:5:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_contract$_Test1_$20",
                                "typeString": "contract Test1"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_contract$_Test1_$20",
                                "typeString": "contract Test1"
                              }
                            ],
                            "id": 99,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4778:7:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_address_$",
                              "typeString": "type(address)"
                            },
                            "typeName": "address"
                          },
                          "id": 101,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4778:14:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address",
                            "typeString": "address"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4755:37:0"
                      },
                      {
                        "assignments": [
                          104
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 104,
                            "name": "sig",
                            "nodeType": "VariableDeclaration",
                            "scope": 193,
                            "src": "4802:10:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_bytes4",
                              "typeString": "bytes4"
                            },
                            "typeName": {
                              "id": 103,
                              "name": "bytes4",
                              "nodeType": "ElementaryTypeName",
                              "src": "4802:6:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes4",
                                "typeString": "bytes4"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 110,
                        "initialValue": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "697353616d654164647265737328616464726573732c6164647265737329",
                                  "id": 107,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "string",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "4832:32:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_stringliteral_161e71502cfa7ac78ebef094d81dd09ef9cf93cf206fa05a6d6410c0861e3d96",
                                    "typeString": "literal_string \"isSameAddress(address,address)\""
                                  },
                                  "value": "isSameAddress(address,address)"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_stringliteral_161e71502cfa7ac78ebef094d81dd09ef9cf93cf206fa05a6d6410c0861e3d96",
                                    "typeString": "literal_string \"isSameAddress(address,address)\""
                                  }
                                ],
                                "id": 106,
                                "name": "keccak256",
                                "nodeType": "Identifier",
                                "overloadedDeclarations": [],
                                "referencedDeclaration": 219,
                                "src": "4822:9:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_function_keccak256_pure$_t_bytes_memory_ptr_$returns$_t_bytes32_$",
                                  "typeString": "function (bytes memory) pure returns (bytes32)"
                                }
                              },
                              "id": 108,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "functionCall",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "4822:43:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 105,
                            "isConstant": false,
                            "isLValue": false,
                            "isPure": true,
                            "lValueRequested": false,
                            "nodeType": "ElementaryTypeNameExpression",
                            "src": "4815:6:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_type$_t_bytes4_$",
                              "typeString": "type(bytes4)"
                            },
                            "typeName": "bytes4"
                          },
                          "id": 109,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "typeConversion",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "4815:51:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_bytes4",
                            "typeString": "bytes4"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4802:64:0"
                      },
                      {
                        "assignments": [
                          112
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 112,
                            "name": "a",
                            "nodeType": "VariableDeclaration",
                            "scope": 193,
                            "src": "4897:9:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_address",
                              "typeString": "address"
                            },
                            "typeName": {
                              "id": 111,
                              "name": "address",
                              "nodeType": "ElementaryTypeName",
                              "src": "4897:7:0",
                              "stateMutability": "nonpayable",
                              "typeDescriptions": {
                                "typeIdentifier": "t_address",
                                "typeString": "address"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 115,
                        "initialValue": {
                          "argumentTypes": null,
                          "expression": {
                            "argumentTypes": null,
                            "id": 113,
                            "name": "msg",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 225,
                            "src": "4909:3:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_magic_message",
                              "typeString": "msg"
                            }
                          },
                          "id": 114,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "lValueRequested": false,
                          "memberName": "sender",
                          "nodeType": "MemberAccess",
                          "referencedDeclaration": null,
                          "src": "4909:10:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_address_payable",
                            "typeString": "address payable"
                          }
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "4897:22:0"
                      },
                      {
                        "externalReferences": [
                          {
                            "sig": {
                              "declaration": 104,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "5055:3:0",
                              "valueSize": 1
                            }
                          },
                          {
                            "a": {
                              "declaration": 112,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "5139:1:0",
                              "valueSize": 1
                            }
                          },
                          {
                            "a": {
                              "declaration": 112,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "5222:1:0",
                              "valueSize": 1
                            }
                          },
                          {
                            "contractAddr": {
                              "declaration": 98,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "5608:12:0",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 116,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    let x := mload(0x40)\n    mstore(x, sig)\n    mstore(add(x, 0x04), a)\n    mstore(add(x, 0x24), a)\n    mstore(0x40, add(x, 0x64))\n    let success := call(5000, contractAddr, 0, x, 0x44, x, 0x20)\n}",
                        "src": "4930:955:0"
                      },
                      {
                        "externalReferences": [
                          {
                            "sig": {
                              "declaration": 104,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "6039:3:0",
                              "valueSize": 1
                            }
                          },
                          {
                            "a": {
                              "declaration": 112,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "6123:1:0",
                              "valueSize": 1
                            }
                          },
                          {
                            "a": {
                              "declaration": 112,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "6206:1:0",
                              "valueSize": 1
                            }
                          },
                          {
                            "contractAddr": {
                              "declaration": 98,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "6596:12:0",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 117,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    let x := mload(0x40)\n    mstore(x, sig)\n    mstore(add(x, 0x04), a)\n    mstore(add(x, 0x24), a)\n    mstore(0x40, add(x, 0x64))\n    let success := callcode(5000, contractAddr, 0, x, 0x44, x, 0x20)\n}",
                        "src": "5914:959:0"
                      },
                      {
                        "externalReferences": [
                          {
                            "sig": {
                              "declaration": 104,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "7031:3:0",
                              "valueSize": 1
                            }
                          },
                          {
                            "a": {
                              "declaration": 112,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "7115:1:0",
                              "valueSize": 1
                            }
                          },
                          {
                            "a": {
                              "declaration": 112,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "7198:1:0",
                              "valueSize": 1
                            }
                          },
                          {
                            "contractAddr": {
                              "declaration": 98,
                              "isOffset": false,
                              "isSlot": false,
                              "src": "7592:12:0",
                              "valueSize": 1
                            }
                          }
                        ],
                        "id": 118,
                        "nodeType": "InlineAssembly",
                        "operations": "{\n    let x := mload(0x40)\n    mstore(x, sig)\n    mstore(add(x, 0x04), a)\n    mstore(add(x, 0x24), a)\n    mstore(0x40, add(x, 0x64))\n    let success := delegatecall(5000, contractAddr, x, 0x44, x, 0x20)\n}",
                        "src": "6906:925:0"
                      },
                      {
                        "assignments": [
                          120
                        ],
                        "declarations": [
                          {
                            "constant": false,
                            "id": 120,
                            "name": "_id",
                            "nodeType": "VariableDeclaration",
                            "scope": 193,
                            "src": "7841:11:0",
                            "stateVariable": false,
                            "storageLocation": "default",
                            "typeDescriptions": {
                              "typeIdentifier": "t_uint256",
                              "typeString": "uint256"
                            },
                            "typeName": {
                              "id": 119,
                              "name": "uint256",
                              "nodeType": "ElementaryTypeName",
                              "src": "7841:7:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_uint256",
                                "typeString": "uint256"
                              }
                            },
                            "value": null,
                            "visibility": "internal"
                          }
                        ],
                        "id": 122,
                        "initialValue": {
                          "argumentTypes": null,
                          "hexValue": "3078343230303432",
                          "id": 121,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": true,
                          "kind": "number",
                          "lValueRequested": false,
                          "nodeType": "Literal",
                          "src": "7855:8:0",
                          "subdenomination": null,
                          "typeDescriptions": {
                            "typeIdentifier": "t_rational_4325442_by_1",
                            "typeString": "int_const 4325442"
                          },
                          "value": "0x420042"
                        },
                        "nodeType": "VariableDeclarationStatement",
                        "src": "7841:22:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307835306362396665353364616139373337623738366162333634366630346430313530646335306566346537356635393530396438333636376164356164623230",
                                  "id": 125,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "7915:66:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  },
                                  "value": "0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  }
                                ],
                                "id": 124,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "7907:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 126,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "7907:75:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 123,
                            "name": "log0",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 220,
                            "src": "7889:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_log0_nonpayable$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32)"
                            }
                          },
                          "id": 127,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "7889:103:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 128,
                        "nodeType": "ExpressionStatement",
                        "src": "7889:103:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307835306362396665353364616139373337623738366162333634366630346430313530646335306566346537356635393530396438333636376164356164623230",
                                  "id": 131,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8044:66:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  },
                                  "value": "0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  }
                                ],
                                "id": 130,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8036:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 132,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8036:75:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307835306362396665353364616139373337623738366162333634366630346430313530646335306566346537356635393530396438333636376164356164623230",
                                  "id": 134,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8133:66:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  },
                                  "value": "0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  }
                                ],
                                "id": 133,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8125:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 135,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8125:75:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 129,
                            "name": "log1",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 221,
                            "src": "8018:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_log1_nonpayable$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32)"
                            }
                          },
                          "id": 136,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8018:192:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 137,
                        "nodeType": "ExpressionStatement",
                        "src": "8018:192:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307835306362396665353364616139373337623738366162333634366630346430313530646335306566346537356635393530396438333636376164356164623230",
                                  "id": 140,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8262:66:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  },
                                  "value": "0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  }
                                ],
                                "id": 139,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8254:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 141,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8254:75:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307835306362396665353364616139373337623738366162333634366630346430313530646335306566346537356635393530396438333636376164356164623230",
                                  "id": 143,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8351:66:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  },
                                  "value": "0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  }
                                ],
                                "id": 142,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8343:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 144,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8343:75:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 147,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 225,
                                        "src": "8448:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 148,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "8448:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    ],
                                    "id": 146,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "8440:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": "uint256"
                                  },
                                  "id": 149,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8440:19:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 145,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8432:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 150,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8432:28:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 138,
                            "name": "log2",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 222,
                            "src": "8236:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_log2_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32,bytes32)"
                            }
                          },
                          "id": 151,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8236:234:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 152,
                        "nodeType": "ExpressionStatement",
                        "src": "8236:234:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307835306362396665353364616139373337623738366162333634366630346430313530646335306566346537356635393530396438333636376164356164623230",
                                  "id": 155,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8522:66:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  },
                                  "value": "0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  }
                                ],
                                "id": 154,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8514:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 156,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8514:75:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307835306362396665353364616139373337623738366162333634366630346430313530646335306566346537356635393530396438333636376164356164623230",
                                  "id": 158,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8611:66:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  },
                                  "value": "0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  }
                                ],
                                "id": 157,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8603:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 159,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8603:75:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 162,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 225,
                                        "src": "8708:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 163,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "8708:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    ],
                                    "id": 161,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "8700:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": "uint256"
                                  },
                                  "id": 164,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8700:19:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 160,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8692:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 165,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8692:28:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 167,
                                  "name": "_id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 120,
                                  "src": "8742:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 166,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8734:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 168,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8734:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 153,
                            "name": "log3",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 223,
                            "src": "8496:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_log3_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32,bytes32,bytes32)"
                            }
                          },
                          "id": 169,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8496:260:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 170,
                        "nodeType": "ExpressionStatement",
                        "src": "8496:260:0"
                      },
                      {
                        "expression": {
                          "argumentTypes": null,
                          "arguments": [
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307835306362396665353364616139373337623738366162333634366630346430313530646335306566346537356635393530396438333636376164356164623230",
                                  "id": 173,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8808:66:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  },
                                  "value": "0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  }
                                ],
                                "id": 172,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8800:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 174,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8800:75:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "hexValue": "307835306362396665353364616139373337623738366162333634366630346430313530646335306566346537356635393530396438333636376164356164623230",
                                  "id": 176,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": true,
                                  "kind": "number",
                                  "lValueRequested": false,
                                  "nodeType": "Literal",
                                  "src": "8897:66:0",
                                  "subdenomination": null,
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  },
                                  "value": "0x50cb9fe53daa9737b786ab3646f04d0150dc50ef4e75f59509d83667ad5adb20"
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_rational_36544801398802476298763521163789802214445152522789254076924655058611456367392_by_1",
                                    "typeString": "int_const 3654...(69 digits omitted)...7392"
                                  }
                                ],
                                "id": 175,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8889:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 177,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": true,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8889:75:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "arguments": [
                                    {
                                      "argumentTypes": null,
                                      "expression": {
                                        "argumentTypes": null,
                                        "id": 180,
                                        "name": "msg",
                                        "nodeType": "Identifier",
                                        "overloadedDeclarations": [],
                                        "referencedDeclaration": 225,
                                        "src": "8994:3:0",
                                        "typeDescriptions": {
                                          "typeIdentifier": "t_magic_message",
                                          "typeString": "msg"
                                        }
                                      },
                                      "id": 181,
                                      "isConstant": false,
                                      "isLValue": false,
                                      "isPure": false,
                                      "lValueRequested": false,
                                      "memberName": "sender",
                                      "nodeType": "MemberAccess",
                                      "referencedDeclaration": null,
                                      "src": "8994:10:0",
                                      "typeDescriptions": {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    }
                                  ],
                                  "expression": {
                                    "argumentTypes": [
                                      {
                                        "typeIdentifier": "t_address_payable",
                                        "typeString": "address payable"
                                      }
                                    ],
                                    "id": 179,
                                    "isConstant": false,
                                    "isLValue": false,
                                    "isPure": true,
                                    "lValueRequested": false,
                                    "nodeType": "ElementaryTypeNameExpression",
                                    "src": "8986:7:0",
                                    "typeDescriptions": {
                                      "typeIdentifier": "t_type$_t_uint256_$",
                                      "typeString": "type(uint256)"
                                    },
                                    "typeName": "uint256"
                                  },
                                  "id": 182,
                                  "isConstant": false,
                                  "isLValue": false,
                                  "isPure": false,
                                  "kind": "typeConversion",
                                  "lValueRequested": false,
                                  "names": [],
                                  "nodeType": "FunctionCall",
                                  "src": "8986:19:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 178,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "8978:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 183,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "8978:28:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 185,
                                  "name": "_id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 120,
                                  "src": "9028:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 184,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9020:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 186,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9020:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            },
                            {
                              "argumentTypes": null,
                              "arguments": [
                                {
                                  "argumentTypes": null,
                                  "id": 188,
                                  "name": "_id",
                                  "nodeType": "Identifier",
                                  "overloadedDeclarations": [],
                                  "referencedDeclaration": 120,
                                  "src": "9054:3:0",
                                  "typeDescriptions": {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                }
                              ],
                              "expression": {
                                "argumentTypes": [
                                  {
                                    "typeIdentifier": "t_uint256",
                                    "typeString": "uint256"
                                  }
                                ],
                                "id": 187,
                                "isConstant": false,
                                "isLValue": false,
                                "isPure": true,
                                "lValueRequested": false,
                                "nodeType": "ElementaryTypeNameExpression",
                                "src": "9046:7:0",
                                "typeDescriptions": {
                                  "typeIdentifier": "t_type$_t_bytes32_$",
                                  "typeString": "type(bytes32)"
                                },
                                "typeName": "bytes32"
                              },
                              "id": 189,
                              "isConstant": false,
                              "isLValue": false,
                              "isPure": false,
                              "kind": "typeConversion",
                              "lValueRequested": false,
                              "names": [],
                              "nodeType": "FunctionCall",
                              "src": "9046:12:0",
                              "typeDescriptions": {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            }
                          ],
                          "expression": {
                            "argumentTypes": [
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              },
                              {
                                "typeIdentifier": "t_bytes32",
                                "typeString": "bytes32"
                              }
                            ],
                            "id": 171,
                            "name": "log4",
                            "nodeType": "Identifier",
                            "overloadedDeclarations": [],
                            "referencedDeclaration": 224,
                            "src": "8782:4:0",
                            "typeDescriptions": {
                              "typeIdentifier": "t_function_log4_nonpayable$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$_t_bytes32_$returns$__$",
                              "typeString": "function (bytes32,bytes32,bytes32,bytes32,bytes32)"
                            }
                          },
                          "id": 190,
                          "isConstant": false,
                          "isLValue": false,
                          "isPure": false,
                          "kind": "functionCall",
                          "lValueRequested": false,
                          "names": [],
                          "nodeType": "FunctionCall",
                          "src": "8782:287:0",
                          "typeDescriptions": {
                            "typeIdentifier": "t_tuple$__$",
                            "typeString": "tuple()"
                          }
                        },
                        "id": 191,
                        "nodeType": "ExpressionStatement",
                        "src": "8782:287:0"
                      },
                      {
                        "externalReferences": [],
                        "id": 192,
                        "nodeType": "InlineAssembly",
                        "operations": "{ selfdestruct(0x02) }",
                        "src": "9103:31:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 194,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "test",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 46,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "529:2:0"
                  },
                  "returnParameters": {
                    "id": 47,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "539:0:0"
                  },
                  "scope": 210,
                  "src": "516:8624:0",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 198,
                    "nodeType": "Block",
                    "src": "9176:58:0",
                    "statements": [
                      {
                        "externalReferences": [],
                        "id": 197,
                        "nodeType": "InlineAssembly",
                        "operations": "{ revert(0, 0) }",
                        "src": "9204:24:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 199,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "test_revert",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 195,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9166:2:0"
                  },
                  "returnParameters": {
                    "id": 196,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9176:0:0"
                  },
                  "scope": 210,
                  "src": "9146:88:0",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 203,
                    "nodeType": "Block",
                    "src": "9271:55:0",
                    "statements": [
                      {
                        "externalReferences": [],
                        "id": 202,
                        "nodeType": "InlineAssembly",
                        "operations": "{ invalid() }",
                        "src": "9299:21:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 204,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "test_invalid",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 200,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9261:2:0"
                  },
                  "returnParameters": {
                    "id": 201,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9271:0:0"
                  },
                  "scope": 210,
                  "src": "9240:86:0",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                },
                {
                  "body": {
                    "id": 208,
                    "nodeType": "Block",
                    "src": "9360:52:0",
                    "statements": [
                      {
                        "externalReferences": [],
                        "id": 207,
                        "nodeType": "InlineAssembly",
                        "operations": "{ stop() }",
                        "src": "9388:18:0"
                      }
                    ]
                  },
                  "documentation": null,
                  "id": 209,
                  "implemented": true,
                  "kind": "function",
                  "modifiers": [],
                  "name": "test_stop",
                  "nodeType": "FunctionDefinition",
                  "parameters": {
                    "id": 205,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9350:2:0"
                  },
                  "returnParameters": {
                    "id": 206,
                    "nodeType": "ParameterList",
                    "parameters": [],
                    "src": "9360:0:0"
                  },
                  "scope": 210,
                  "src": "9332:80:0",
                  "stateMutability": "nonpayable",
                  "superFunction": null,
                  "visibility": "public"
                }
              ],
              "scope": 211,
              "src": "229:9186:0"
            }
          ],
          "src": "0:9415:0"
        }
      }
    },
    "contracts": {
      "zksync-src/Opcodes.sol": {
        "OpCodes": {
          "abi": [
            {
              "inputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "constructor"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "test",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "test_invalid",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "test_revert",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            },
            {
              "constant": false,
              "inputs": [],
              "name": "test_stop",
              "outputs": [],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "metadata": {
            "optimizer_settings": "M3B3",
            "solc_metadata": "{\"compiler\":{\"version\":\"0.5.12+commit.7709ece9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"inputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"constructor\"},{\"constant\":false,\"inputs\":[],\"name\":\"test\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"test_invalid\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"test_revert\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"},{\"constant\":false,\"inputs\":[],\"name\":\"test_stop\",\"outputs\":[],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"zksync-src/Opcodes.sol\":\"OpCodes\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":true,\"deduplicate\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"zksync-src/Opcodes.sol\":{\"keccak256\":\"0x176e5d5347dddaf3ec94b32a9b7f7480b7b12645bc149624f3ec464b49309072\",\"urls\":[\"bzz-raw://434eb6dff0bde92f726fbe82386b16644bccc9cc2b0ad52d15de8e2f780e011c\",\"dweb:/ipfs/QmV5senSDGuPfSBfdcvZzdk7xJ63mA4Pce2Scg4qzYXjmU\"]}},\"version\":1}",
            "zk_version": "1.3.14"
          },
          "evm": {
            "legacyAssembly": null,
            "assembly": "\t.text\n\t.file\t\"Opcodes.sol:OpCodes\"\n\t.globl\t__entry\n__entry:\n.func_begin0:\n\tnop\tstack+=[1]\n\tadd\tr1, r0, r3\n\tshr.s\t96, r3, r3\n\tand\t@CPI0_0[0], r3, r4\n\tptr.add\tr1, r4, stack[@ptr_return_data]\n\tptr.add\tr1, r0, stack[@ptr_calldata]\n\tand\t@CPI0_0[0], r3, stack[@calldatasize]\n\tadd\t0, r0, stack[@returndatasize]\n\tadd\t128, r0, r1\n\tst.1\t64, r1\n\tcontext.get_context_u128\tr1\n\tand!\t1, r2, r2\n\tjump.ne\t@.BB0_1\n\tsub!\tr1, r0, r1\n\tjump.ne\t@.BB0_7\n\tadd\tstack[@calldatasize], r0, r1\n\tsub.s!\t4, r1, r1\n\tjump.lt\t@.BB0_7\n\tptr.add\tstack[@ptr_calldata], r0, r1\n\tld\tr1, r1\n\tshr.s\t224, r1, r1\n\tsub.s!\t@CPI0_7[0], r1, r2\n\tjump.eq\t@.BB0_15\n\tsub.s!\t@CPI0_8[0], r1, r1\n\tjump.ne\t@.BB0_7\n.BB0_15:\n\tadd\tr0, r0, r1\n\tret.ok.to_label\tr1, @DEFAULT_FAR_RETURN\n.BB0_1:\n\tsub!\tr1, r0, r1\n\tjump.ne\t@.BB0_7\n\tld.1\t64, r1\n\tadd\t36, r1, r2\n\tadd\t@CPI0_1[0], r0, r3\n\tst.1\tr2, r3\n\tld.1\t64, r2\n\tadd\t68, r2, r3\n\tcontext.gas_left\tr4\n\tadd\t96, r0, r5\n\tadd\tr5, r0, stack-[1]\n\tst.1\tr3, r5\n\tadd\t@CPI0_2[0], r0, r3\n\tst.1\tr2, r3\n\tsub\tr1, r2, r1\n\tadd\t100, r2, r3\n\tst.1\tr3, r1\n\tadd\t4, r2, r3\n\tst.1\tr3, r0\n\tadd\t@CPI0_0[0], r0, r3\n\tsub.s!\t@CPI0_0[0], r2, r5\n\tadd.ge\tr3, r0, r2\n\tshl.s\t64, r2, r2\n\tadd\t132, r1, r1\n\tsub.s!\t@CPI0_0[0], r1, r5\n\tadd.ge\tr3, r0, r1\n\tshl.s\t96, r1, r1\n\tor\tr1, r2, r1\n\tsub.s!\t@CPI0_0[0], r4, r2\n\tadd\tr3, r0, r2\n\tadd.lt\tr4, r0, r2\n\tshl.s\t192, r2, r2\n\tor\tr1, r2, r1\n\tor\t@CPI0_3[0], r1, r1\n\tadd\t32774, r0, r2\n\tnear_call\tr0, @__farcall, @DEFAULT_UNWIND\n\tand!\t1, r2, r2\n\tjump.eq\t@.BB0_3\n\tld\tr1, r1\n\tsub!\tr1, r0, r2\n\tjump.ne\t@.BB0_6\n\tptr.add\tstack[@ptr_return_data], r0, r1\n\tadd\tstack[@returndatasize], r0, r2\n\tjump\t@.BB0_8\n.BB0_7:\n\tadd\tr0, r0, r1\n\tret.revert.to_label\tr1, @DEFAULT_FAR_REVERT\n.BB0_3:\n\tptr.add\tr1, r0, stack[@ptr_return_data]\n\tadd\tr1, r0, r2\n\tshr.s\t96, r2, r2\n\tand\t@CPI0_0[0], r2, stack[@returndatasize]\n\tand\t@CPI0_0[0], r2, r2\n.BB0_8:\n\tand\t31, r2, r3\n\tshr.s!\t5, r2, r2\n\tjump.eq\t@.BB0_18\n\tadd\tr0, r0, r4\n.BB0_10:\n\tshl.s\t5, r4, r5\n\tptr.add\tr1, r5, r6\n\tld\tr6, r6\n\tst.1\tr5, r6\n\tadd\t1, r4, r4\n\tsub!\tr4, r2, r5\n\tjump.lt\t@.BB0_10\n.BB0_18:\n\tsub!\tr3, r0, r4\n\tjump.eq\t@.BB0_12\n\tshl.s\t3, r3, r3\n\tshl.s\t5, r2, r2\n\tld.1\tr2, r4\n\tshl\tr4, r3, r4\n\tshr\tr4, r3, r4\n\tptr.add\tr1, r2, r1\n\tld\tr1, r1\n\tsub\t256, r3, r3\n\tshr\tr1, r3, r1\n\tshl\tr1, r3, r1\n\tor\tr1, r4, r1\n\tst.1\tr2, r1\n.BB0_12:\n\tadd\tstack-[1], r0, r1\n\tshl\tstack[@returndatasize], r1, r1\n\tret.revert.to_label\tr1, @DEFAULT_FAR_REVERT\n.BB0_6:\n\tand\t@CPI0_4[0], r1, r1\n\tsload\tr0, r2\n\tand\t@CPI0_5[0], r2, r2\n\tor\tr2, r1, r1\n\tsstore\tr0, r1\n\tadd\t32, r0, r1\n\tst.2\t256, r1\n\tst.2\t288, r0\n\tadd\t@CPI0_6[0], r0, r1\n\tret.ok.to_label\tr1, @DEFAULT_FAR_RETURN\n.func_end0:\n\n__farcall:\n.func_begin1:\n.tmp0:\n\tfar_call\tr1, r2, @.BB1_2\n.tmp1:\n\tadd\t1, r0, r2\n\tret\n.BB1_2:\n.tmp2:\n\tadd\tr0, r0, r2\n\tret\n.func_end1:\n\n\t.data\n\t.p2align\t5\ncalldatasize:\n\t.cell 0\n\n\t.p2align\t5\nreturndatasize:\n\t.cell 0\n\n\t.p2align\t5\nptr_calldata:\n.cell\t0\n\n\t.p2align\t5\nptr_return_data:\n.cell\t0\n\n\t.note.GNU-stack\n\t.rodata\nCPI0_0:\n\t.cell 4294967295\nCPI0_1:\n\t.cell 452313430685934096163906556557671801128433764753683557524165938801820411045\nCPI0_2:\n\t.cell -45094662312588414058508742492242807367897819822786606328124609013070528553987\nCPI0_3:\n\t.cell 904625697166532776746648320380374280103671755200316906558262375061821325312\nCPI0_4:\n\t.cell 1461501637330902918203684832716283019655932542975\nCPI0_5:\n\t.cell -1461501637330902918203684832716283019655932542976\nCPI0_6:\n\t.cell 53919893334301279589334030174039261352344891250716429051063678533632\nCPI0_7:\n\t.cell 1429290474\nCPI0_8:\n\t.cell 4171824493\n",
            "bytecode": {
              "object": "0004000000000002000100000000000200000000030100190000006003300270000000200430019700030000004103550002000000010355000000200030019d000100000000001f0000008001000039000000400010043f000000000100041600000001022001900000001c0000c13d000000000101004b000000480000c13d0000000001000031000000040110008c000000480000413d0000000201000367000000000101043b000000e001100270000000270210009c0000001a0000613d000000280110009c000000480000c13d00000000010000190000007b0001042e000000000101004b000000480000c13d000000400100043d000000240210003900000021030000410000000000320435000000400200043d000000440320003900000000040004140000006005000039000100000005001d000000000053043500000022030000410000000000320435000000000121004900000064032000390000000000130435000000040320003900000000000304350000002003000041000000200520009c000000000203801900000040022002100000008401100039000000200510009c00000000010380190000006001100210000000000121019f000000200240009c00000000020300190000000002044019000000c002200210000000000121019f00000023011001c70000800602000039007a00750000040f00000001022001900000004a0000613d000000000101043b000000000201004b0000006b0000c13d000000030100036700000001020000310000004f0000013d00000000010000190000007c00010430000300000001035500000000020100190000006002200270000100200020019d00000020022001970000001f0320018f00000005022002720000005a0000613d00000000040000190000000505400210000000000651034f000000000606043b00000000006504350000000104400039000000000524004b000000530000413d000000000403004b000000680000613d00000003033002100000000502200210000000000402043300000000043401cf000000000434022f000000000121034f000000000101043b0000010003300089000000000131022f00000000013101cf000000000141019f0000000000120435000000010100002900000001011001ff0000007c000104300000002401100197000000000200041a0000002502200197000000000112019f000000000010041b00000020010000390000010000100443000001200000044300000026010000410000007b0001042e00000078002104210000000102000039000000000001042d0000000002000019000000000001042d0000007a000004320000007b0001042e0000007c0001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff010000159765337163ea2044d099b446ad5e7ce351b71b4d766b7659fec5a4a59c4d535bdea7cd8a978f128b93471df48c7dbab89d703809115bdc118c235bfd0200000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff000000000000000000000000000000000000000000000002000000000000000000000000000000400000010000000000000000000000000000000000000000000000000000000000000000000000000055313dea00000000000000000000000000000000000000000000000000000000f8a8fd6d00000000000000000000000000000000000000000000000000000000000000008981177af902507bd02aa7da7c126e3eb8a3e9af598bfe90b438b9995e841e04"
            },
            "methodIdentifiers": {
              "test()": "f8a8fd6d",
              "test_invalid()": "b9d1e5aa",
              "test_revert()": "6d3d1416",
              "test_stop()": "55313dea"
            }
          },
          "hash": "0100002be138b68e32751ad02f95b936d81ceb655a3b1a4f607f032ff2a53903",
          "factoryDependencies": {
            "010000159765337163ea2044d099b446ad5e7ce351b71b4d766b7659fec5a4a5": "zksync-src/Opcodes.sol:Test1"
          }
        },
        "Test1": {
          "abi": [
            {
              "constant": false,
              "inputs": [
                {
                  "internalType": "address",
                  "name": "a",
                  "type": "address"
                },
                {
                  "internalType": "address",
                  "name": "b",
                  "type": "address"
                }
              ],
              "name": "isSameAddress",
              "outputs": [
                {
                  "internalType": "bool",
                  "name": "",
                  "type": "bool"
                }
              ],
              "payable": false,
              "stateMutability": "nonpayable",
              "type": "function"
            }
          ],
          "metadata": {
            "optimizer_settings": "M3B3",
            "solc_metadata": "{\"compiler\":{\"version\":\"0.5.12+commit.7709ece9\"},\"language\":\"Solidity\",\"output\":{\"abi\":[{\"constant\":false,\"inputs\":[{\"internalType\":\"address\",\"name\":\"a\",\"type\":\"address\"},{\"internalType\":\"address\",\"name\":\"b\",\"type\":\"address\"}],\"name\":\"isSameAddress\",\"outputs\":[{\"internalType\":\"bool\",\"name\":\"\",\"type\":\"bool\"}],\"payable\":false,\"stateMutability\":\"nonpayable\",\"type\":\"function\"}],\"devdoc\":{\"methods\":{}},\"userdoc\":{\"methods\":{}}},\"settings\":{\"compilationTarget\":{\"zksync-src/Opcodes.sol\":\"Test1\"},\"evmVersion\":\"petersburg\",\"libraries\":{},\"optimizer\":{\"details\":{\"constantOptimizer\":false,\"cse\":true,\"deduplicate\":true,\"jumpdestRemover\":true,\"orderLiterals\":true,\"peephole\":true,\"yul\":false},\"runs\":200},\"remappings\":[]},\"sources\":{\"zksync-src/Opcodes.sol\":{\"keccak256\":\"0x176e5d5347dddaf3ec94b32a9b7f7480b7b12645bc149624f3ec464b49309072\",\"urls\":[\"bzz-raw://434eb6dff0bde92f726fbe82386b16644bccc9cc2b0ad52d15de8e2f780e011c\",\"dweb:/ipfs/QmV5senSDGuPfSBfdcvZzdk7xJ63mA4Pce2Scg4qzYXjmU\"]}},\"version\":1}",
            "zk_version": "1.3.14"
          },
          "evm": {
            "legacyAssembly": null,
            "assembly": "\t.text\n\t.file\t\"Opcodes.sol:Test1\"\n\t.globl\t__entry\n__entry:\n.func_begin0:\n\tptr.add\tr1, r0, stack[@ptr_calldata]\n\tshr.s\t96, r1, r1\n\tand\t@CPI0_0[0], r1, stack[@calldatasize]\n\tadd\t128, r0, r1\n\tst.1\t64, r1\n\tcontext.get_context_u128\tr1\n\tand!\t1, r2, r2\n\tjump.ne\t@.BB0_1\n\tsub!\tr1, r0, r1\n\tjump.ne\t@.BB0_3\n\tadd\tstack[@calldatasize], r0, r2\n\tsub.s!\t4, r2, r1\n\tjump.lt\t@.BB0_3\n\tptr.add\tstack[@ptr_calldata], r0, r1\n\tld\tr1, r3\n\tand\t@CPI0_2[0], r3, r3\n\tsub.s!\t@CPI0_3[0], r3, r3\n\tjump.ne\t@.BB0_3\n\tsub.s\t68, r2, r2\n\tsub.s\t64, r0, r3\n\tsub!\tr2, r3, r2\n\tjump.ge\t@.BB0_3\n\tptr.add.s\t4, r1, r2\n\tld\tr2, r2\n\tptr.add.s\t36, r1, r1\n\tld\tr1, r1\n\txor\tr1, r2, r1\n\tand!\t@CPI0_4[0], r1, r1\n\tadd\t0, r0, r1\n\tadd.eq\t1, r0, r1\n\tld.1\t64, r2\n\tst.1\tr2, r1\n\tld.1\t64, r1\n\tsub\tr2, r1, r2\n\tadd\t32, r2, r2\n\tadd\t@CPI0_0[0], r0, r3\n\tsub.s!\t@CPI0_0[0], r2, r4\n\tadd.ge\tr3, r0, r2\n\tsub.s!\t@CPI0_0[0], r1, r4\n\tadd.ge\tr3, r0, r1\n\tshl.s\t64, r1, r1\n\tshl.s\t96, r2, r2\n\tor\tr2, r1, r1\n\tret.ok.to_label\tr1, @DEFAULT_FAR_RETURN\n.BB0_1:\n\tsub!\tr1, r0, r1\n\tjump.ne\t@.BB0_3\n\tadd\t32, r0, r1\n\tst.2\t256, r1\n\tst.2\t288, r0\n\tadd\t@CPI0_1[0], r0, r1\n\tret.ok.to_label\tr1, @DEFAULT_FAR_RETURN\n.BB0_3:\n\tadd\tr0, r0, r1\n\tret.revert.to_label\tr1, @DEFAULT_FAR_REVERT\n.func_end0:\n\n\t.data\n\t.p2align\t5\ncalldatasize:\n\t.cell 0\n\n\t.p2align\t5\nptr_calldata:\n.cell\t0\n\n\t.note.GNU-stack\n\t.rodata\nCPI0_0:\n\t.cell 4294967295\nCPI0_1:\n\t.cell 53919893334301279589334030174039261352344891250716429051063678533632\nCPI0_2:\n\t.cell -26959946667150639794667015087019630673637144422540572481103610249216\nCPI0_3:\n\t.cell 10004670134908132779859794149980048902061794690395163597811066165244922429440\nCPI0_4:\n\t.cell 1461501637330902918203684832716283019655932542975\n",
            "bytecode": {
              "object": "0002000000000002000100000001035500000060011002700000000f0010019d0000008001000039000000400010043f000000000100041600000001022001900000002d0000c13d000000000101004b000000340000c13d0000000002000031000000040120008c000000340000413d0000000101000367000000000301043b0000001103300197000000120330009c000000340000c13d000000440220008a000000400300008a000000000232004b000000340000813d0000000402100370000000000202043b0000002401100370000000000101043b000000000121013f000000130110019800000000010000190000000101006039000000400200043d0000000000120435000000400100043d000000000212004900000020022000390000000f030000410000000f0420009c00000000020380190000000f0410009c000000000103801900000040011002100000006002200210000000000112019f000000370001042e000000000101004b000000340000c13d0000002001000039000001000010044300000120000004430000001001000041000000370001042e000000000100001900000038000104300000003600000432000000370001042e000000380001043000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffff0000000200000000000000000000000000000040000001000000000000000000ffffffff00000000000000000000000000000000000000000000000000000000161e715000000000000000000000000000000000000000000000000000000000000000000000000000000000ffffffffffffffffffffffffffffffffffffffff774292574e151744e350315998e280d3c5046ed073336f45878eb8da45b2d0e7"
            },
            "methodIdentifiers": {
              "isSameAddress(address,address)": "161e7150"
            }
          },
          "hash": "010000159765337163ea2044d099b446ad5e7ce351b71b4d766b7659fec5a4a5",
          "factoryDependencies": {}
        }
      }
    }
  }
}