Contract A
Contract I
Contract Test
	Function Test.ether_unit() (*)
		Expression: 1
		IRs:
		Expression: 1000000000000000000
		IRs:
	Function Test.time_unit() (*)
		Expression: 1
		IRs:
		Expression: 60
		IRs:
		Expression: 3600
		IRs:
		Expression: 86400
		IRs:
		Expression: 604800
		IRs:
	Function Test.block_and_transactions() (*)
		Expression: blockhash(uint256)(0)
		IRs:
			TMP_0(uint256) = SOLIDITY_CALL blockhash(uint256)(0)
		Expression: block.chainid
		IRs:
		Expression: block.coinbase
		IRs:
		Expression: block.difficulty
		IRs:
		Expression: block.gaslimit
		IRs:
		Expression: block.number
		IRs:
		Expression: block.timestamp
		IRs:
		Expression: gasleft()()
		IRs:
			TMP_1(uint256) = SOLIDITY_CALL gasleft()()
		Expression: msg.data
		IRs:
		Expression: msg.sender
		IRs:
		Expression: msg.sig
		IRs:
		Expression: msg.value
		IRs:
		Expression: block.timestamp
		IRs:
		Expression: tx.gasprice
		IRs:
		Expression: tx.origin
		IRs:
	Function Test.abi_encode() (*)
		Expression: abi.decode(m,(uint256,uint256))
		IRs:
			TUPLE_0(uint256,uint256) = SOLIDITY_CALL abi.decode()(m(uint256,uint256))
		Expression: abi.encode(10)
		IRs:
			TMP_2(bytes) = SOLIDITY_CALL abi.encode()(10)
		Expression: abi.encodePacked(uint256(10))
		IRs:
			TMP_3 = CONVERT 10 to uint256
			TMP_4(bytes) = SOLIDITY_CALL abi.encodePacked()(TMP_3)
		Expression: abi.encodeWithSelector(selector,10)
		IRs:
			TMP_5(bytes) = SOLIDITY_CALL abi.encodeWithSelector()(selector,10)
		Expression: abi.encodeWithSignature(signature,10)
		IRs:
			TMP_6(bytes) = SOLIDITY_CALL abi.encodeWithSignature()(signature,10)
	Function Test.error_handling() (*)
		Expression: assert(bool)(true)
		IRs:
			TMP_7(None) = SOLIDITY_CALL assert(bool)(True)
		Expression: require(bool)(true)
		IRs:
			TMP_8(None) = SOLIDITY_CALL require(bool)(True)
		Expression: require(bool,string)(true,something)
		IRs:
			TMP_9(None) = SOLIDITY_CALL require(bool,string)(True,something)
		Expression: revert()()
		IRs:
			TMP_10(None) = SOLIDITY_CALL revert()()
		Expression: revert(string)(something)
		IRs:
			TMP_11(None) = SOLIDITY_CALL revert(string)(something)
	Function Test.math_and_crypto() (*)
		Expression: addmod(uint256,uint256,uint256)(0,0,1)
		IRs:
			TMP_12(uint256) = SOLIDITY_CALL addmod(uint256,uint256,uint256)(0,0,1)
		Expression: mulmod(uint256,uint256,uint256)(0,0,1)
		IRs:
			TMP_13(uint256) = SOLIDITY_CALL mulmod(uint256,uint256,uint256)(0,0,1)
		Expression: keccak256(bytes)()
		IRs:
			TMP_14(bytes32) = SOLIDITY_CALL keccak256(bytes)()
		Expression: sha256(bytes)()
		IRs:
			TMP_15(bytes32) = SOLIDITY_CALL sha256(bytes)()
		Expression: ripemd160(bytes)()
		IRs:
			TMP_16(bytes32) = SOLIDITY_CALL ripemd160(bytes)()
		Expression: ecrecover(bytes32,uint8,bytes32,bytes32)(hash,v,r,s)
		IRs:
			TMP_17(address) = SOLIDITY_CALL ecrecover(bytes32,uint8,bytes32,bytes32)(hash,v,r,s)
	Function Test.address_related() (*)
		Expression: a.balance
		IRs:
			TMP_18(uint256) = SOLIDITY_CALL balance(address)(a)
		Expression: a.code
		IRs:
			TMP_19(bytes) = SOLIDITY_CALL code(address)(a)
		Expression: a.codehash
		IRs:
			TMP_20(bytes32) = SOLIDITY_CALL codehash(address)(a)
		Expression: a.send(0)
		IRs:
			TMP_21 = SEND dest:a value:0
		Expression: a.transfer(0)
		IRs:
			Transfer dest:a value:0
		Expression: a.call()
		IRs:
			TUPLE_1(bool,bytes) = LOW_LEVEL_CALL, dest:a, function:call, arguments:['']  
		Expression: a.delegatecall()
		IRs:
			TUPLE_2(bool,bytes) = LOW_LEVEL_CALL, dest:a, function:delegatecall, arguments:['']  
		Expression: a.staticcall()
		IRs:
			TUPLE_3(bool,bytes) = LOW_LEVEL_CALL, dest:a, function:staticcall, arguments:['']  
	Function Test.return_addr() (*)
	Function Test.address_edge_case() (*)
		Expression: return_addr().balance
		IRs:
			TMP_23(address) = INTERNAL_CALL, Test.return_addr()()
			REF_10(uint256) = SOLIDITY_CALL balance(address)(TMP_23)
		Expression: return_addr().code
		IRs:
			TMP_24(address) = INTERNAL_CALL, Test.return_addr()()
			REF_11(bytes) = SOLIDITY_CALL code(address)(TMP_24)
		Expression: return_addr().codehash
		IRs:
			TMP_25(address) = INTERNAL_CALL, Test.return_addr()()
			REF_12(bytes32) = SOLIDITY_CALL codehash(address)(TMP_25)
	Function Test.contract_related() (*)
		Expression: this
		IRs:
		Expression: selfdestruct(address)(a)
		IRs:
			TMP_26(None) = SOLIDITY_CALL selfdestruct(address)(a)
	Function Test.type_related() (*)
		Expression: type()(A).name
		IRs:
			TMP_27(type(A)) = SOLIDITY_CALL type()(A)
			REF_13(string) (->None) := A(string)
		Expression: type()(A).creationCode
		IRs:
			TMP_28(type(A)) = SOLIDITY_CALL type()(A)
			REF_14(bytes) (->None) := 6080604052348015600f57600080fd5b50603f80601d6000396000f3fe6080604052600080fdfea26469706673582212206213b9c5b8ebef4a5a16be67bf75f4031184fb4c87a046b4d24564d5efba773c64736f6c634300080c0033(string)
		Expression: type()(A).runtimeCode
		IRs:
			TMP_29(type(A)) = SOLIDITY_CALL type()(A)
			REF_15(bytes) (->None) := 6080604052600080fdfea26469706673582212206213b9c5b8ebef4a5a16be67bf75f4031184fb4c87a046b4d24564d5efba773c64736f6c634300080c0033(string)
		Expression: type()(I).interfaceId
		IRs:
			TMP_30(type(I)) = SOLIDITY_CALL type()(I)
			REF_16(bytes4) (->None) := 0(bytes4)
		Expression: type()(uint256).min
		IRs:
			TMP_32(uint256) := 0(uint256)
		Expression: type()(uint256).min
		IRs:
			TMP_34(uint256) := 0(uint256)

