Command
tpmccallum$ solc/solc --ir ~/simple_storage/simple_storage.solOutput
object "SimpleStorage_22" {
code {
mstore(64, 128)
// Begin state variable initialization for contract "SimpleStorage" (1 variables)
// End state variable initialization for contract "SimpleStorage".
codecopy(0, dataoffset("SimpleStorage_22_deployed"), datasize("SimpleStorage_22_deployed"))
return(0, datasize("SimpleStorage_22_deployed"))
function cleanup_from_storage_t_uint256(value) -> cleaned {
cleaned := value
}
function extract_from_storage_value_offset_0t_uint256(slot_value) -> value {
value := cleanup_from_storage_t_uint256(shift_right_0_unsigned(slot_value))
}
function fun_get_21() -> vloc__16 {
for { let return_flag := 1 } return_flag {} {
let expr_18 := read_from_storage_offset_0_t_uint256(0x0)
vloc__16 := expr_18
return_flag := 0
break
break
}
}
function fun_set_13(vloc_x_5) {
for { let return_flag := 1 } return_flag {} {
let expr_9 := vloc_x_5
let _1 := expr_9
update_storage_value_offset_0t_uint256(0x0, _1)
let expr_10 := _1
break
}
}
function prepare_store_t_uint256(value) -> ret {
ret := value
}
function read_from_storage_offset_0_t_uint256(slot) -> value {
value := extract_from_storage_value_offset_0t_uint256(sload(slot))
}
function shift_left_0(value) -> newValue {
newValue :=
shl(0, value)
}
function shift_right_0_unsigned(value) -> newValue {
newValue :=
shr(0, value)
}
function update_byte_slice_32_shift_0(value, toInsert) -> result {
let mask := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
toInsert := shift_left_0(toInsert)
value := and(value, not(mask))
result := or(value, and(toInsert, mask))
}
function update_storage_value_offset_0t_uint256(slot, value) {
sstore(slot, update_byte_slice_32_shift_0(sload(slot), prepare_store_t_uint256(value)))
}
}
object "SimpleStorage_22_deployed" {
code {
mstore(64, 128)
if iszero(lt(calldatasize(), 4))
{
let selector := shift_right_224_unsigned(calldataload(0))
switch selector
case 0x60fe47b1
{
// set(uint256)
if callvalue() { revert(0, 0) }
let param_0 := abi_decode_tuple_t_uint256(4, calldatasize())
fun_set_13(param_0)
let memPos := allocateMemory(0)
let memEnd := abi_encode_tuple__to__fromStack(memPos )
return(memPos, sub(memEnd, memPos))
}
case 0x6d4ce63c
{
// get()
if callvalue() { revert(0, 0) }
abi_decode_tuple_(4, calldatasize())
let ret_0 := fun_get_21()
let memPos := allocateMemory(0)
let memEnd := abi_encode_tuple_t_uint256__to_t_uint256__fromStack(memPos , ret_0)
return(memPos, sub(memEnd, memPos))
}
default {}
}
revert(0, 0)
function abi_decode_t_uint256(offset, end) -> value {
value := calldataload(offset)
validator_revert_t_uint256(value)
}
function abi_decode_tuple_(headStart, dataEnd) {
if slt(sub(dataEnd, headStart), 0) { revert(0, 0) }
}
function abi_decode_tuple_t_uint256(headStart, dataEnd) -> value0 {
if slt(sub(dataEnd, headStart), 32) { revert(0, 0) }
{
let offset := 0
value0 := abi_decode_t_uint256(add(headStart, offset), dataEnd)
}
}
function abi_encode_t_uint256_to_t_uint256_fromStack(value, pos) {
mstore(pos, cleanup_t_uint256(value))
}
function abi_encode_tuple__to__fromStack(headStart ) -> tail {
tail := add(headStart, 0)
}
function abi_encode_tuple_t_uint256__to_t_uint256__fromStack(headStart , value0) -> tail {
tail := add(headStart, 32)
abi_encode_t_uint256_to_t_uint256_fromStack(value0, add(headStart, 0))
}
function allocateMemory(size) -> memPtr {
memPtr := mload(64)
let newFreePtr := add(memPtr, size)
// protect against overflow
if or(gt(newFreePtr, 0xffffffffffffffff), lt(newFreePtr, memPtr)) { revert(0, 0) }
mstore(64, newFreePtr)
}
function cleanup_from_storage_t_uint256(value) -> cleaned {
cleaned := value
}
function cleanup_t_uint256(value) -> cleaned {
cleaned := value
}
function extract_from_storage_value_offset_0t_uint256(slot_value) -> value {
value := cleanup_from_storage_t_uint256(shift_right_0_unsigned(slot_value))
}
function fun_get_21() -> vloc__16 {
for { let return_flag := 1 } return_flag {} {
let expr_18 := read_from_storage_offset_0_t_uint256(0x0)
vloc__16 := expr_18
return_flag := 0
break
break
}
}
function fun_set_13(vloc_x_5) {
for { let return_flag := 1 } return_flag {} {
let expr_9 := vloc_x_5
let _1 := expr_9
update_storage_value_offset_0t_uint256(0x0, _1)
let expr_10 := _1
break
}
}
function prepare_store_t_uint256(value) -> ret {
ret := value
}
function read_from_storage_offset_0_t_uint256(slot) -> value {
value := extract_from_storage_value_offset_0t_uint256(sload(slot))
}
function shift_left_0(value) -> newValue {
newValue :=
shl(0, value)
}
function shift_right_0_unsigned(value) -> newValue {
newValue :=
shr(0, value)
}
function shift_right_224_unsigned(value) -> newValue {
newValue :=
shr(224, value)
}
function update_byte_slice_32_shift_0(value, toInsert) -> result {
let mask := 0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
toInsert := shift_left_0(toInsert)
value := and(value, not(mask))
result := or(value, and(toInsert, mask))
}
function update_storage_value_offset_0t_uint256(slot, value) {
sstore(slot, update_byte_slice_32_shift_0(sload(slot), prepare_store_t_uint256(value)))
}
function validator_revert_t_uint256(value) {
if iszero(eq(value, cleanup_t_uint256(value))) { revert(0, 0) }
}
}
}
}