Copy ; Function Attrs: nofree null_pointer_is_valid
define i256 @__entry(ptr addrspace(3) %0, i256 %1, i256 %2, i256 %3, i256 %4, i256 %5, i256 %6, i256 %7, i256 %8, i256 %9, i256 %10, i256 %11) #8 personality ptr @__personality {
entry:
store i256 0, ptr @memory_pointer, align 32
store i256 0, ptr @calldatasize, align 32
store i256 0, ptr @returndatasize, align 32
store i256 0, ptr @call_flags, align 32
store [10 x i256] zeroinitializer, ptr @extra_abi_data, align 32
store ptr addrspace(3) %0, ptr @ptr_calldata, align 32
%abi_pointer_value = ptrtoint ptr addrspace(3) %0 to i256
%abi_pointer_value_shifted = lshr i256 %abi_pointer_value, 96
%abi_length_value = and i256 %abi_pointer_value_shifted, 4294967295
store i256 %abi_length_value, ptr @calldatasize, align 32
%calldatasize = load i256, ptr @calldatasize, align 32
%return_data_abi_initializer = getelementptr i8, ptr addrspace(3) %0, i256 %calldatasize
store ptr addrspace(3) %return_data_abi_initializer, ptr @ptr_return_data, align 32
store ptr addrspace(3) %return_data_abi_initializer, ptr @ptr_active, align 32
store i256 %1, ptr @call_flags, align 32
store i256 %2, ptr @extra_abi_data, align 32
store i256 %3, ptr getelementptr inbounds ([10 x i256], ptr @extra_abi_data, i256 0, i32 1), align 32
store i256 %4, ptr getelementptr inbounds ([10 x i256], ptr @extra_abi_data, i256 0, i32 2), align 32
store i256 %5, ptr getelementptr inbounds ([10 x i256], ptr @extra_abi_data, i256 0, i32 3), align 32
store i256 %6, ptr getelementptr inbounds ([10 x i256], ptr @extra_abi_data, i256 0, i32 4), align 32
store i256 %7, ptr getelementptr inbounds ([10 x i256], ptr @extra_abi_data, i256 0, i32 5), align 32
store i256 %8, ptr getelementptr inbounds ([10 x i256], ptr @extra_abi_data, i256 0, i32 6), align 32
store i256 %9, ptr getelementptr inbounds ([10 x i256], ptr @extra_abi_data, i256 0, i32 7), align 32
store i256 %10, ptr getelementptr inbounds ([10 x i256], ptr @extra_abi_data, i256 0, i32 8), align 32
store i256 %11, ptr getelementptr inbounds ([10 x i256], ptr @extra_abi_data, i256 0, i32 9), align 32
%is_deploy_code_call_flag_truncated = and i256 %1, 1
%is_deploy_code_call_flag = icmp eq i256 %is_deploy_code_call_flag_truncated, 1
br i1 %is_deploy_code_call_flag, label %deploy_code_call_block, label %runtime_code_call_block
return: ; preds = %runtime_code_call_block, %deploy_code_call_block
ret i256 0
deploy_code_call_block: ; preds = %entry
call void @__deploy()
br label %return
runtime_code_call_block: ; preds = %entry
call void @__runtime()
br label %return
}
; Function Attrs: nofree null_pointer_is_valid
define private void @__deploy() #8 personality ptr @__personality {
entry:
call void @main(i1 true)
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: nofree null_pointer_is_valid
define private void @__runtime() #8 personality ptr @__personality {
entry:
call void @main(i1 false)
br label %return
return: ; preds = %entry
ret void
}
; Function Attrs: nofree null_pointer_is_valid
define private void @main(i1 %0) #8 personality ptr @__personality { ; 6 cells are allocated at the beginning of the function.
entry:
%stack_var_000 = alloca i256, align 32
store i256 0, ptr %stack_var_000, align 32
%stack_var_001 = alloca i256, align 32
store i256 0, ptr %stack_var_001, align 32
%stack_var_002 = alloca i256, align 32
store i256 0, ptr %stack_var_002, align 32
%stack_var_003 = alloca i256, align 32
store i256 0, ptr %stack_var_003, align 32
%stack_var_004 = alloca i256, align 32
store i256 0, ptr %stack_var_004, align 32
%stack_var_005 = alloca i256, align 32
store i256 0, ptr %stack_var_005, align 32
br i1 %0, label %"block_dt_0/0", label %"block_rt_0/0"
return: ; No predecessors!
ret void
"block_dt_0/0": ; preds = %entry
store i256 128, ptr %stack_var_000, align 32
store i256 64, ptr %stack_var_001, align 32
%argument_0 = load i256, ptr %stack_var_001, align 32
%argument_1 = load i256, ptr %stack_var_000, align 32
%memory_store_pointer = inttoptr i256 %argument_0 to ptr addrspace(1)
store i256 %argument_1, ptr addrspace(1) %memory_store_pointer, align 1
%get_u128_value = call i256 @llvm.syncvm.getu128()
store i256 %get_u128_value, ptr %stack_var_000, align 32
%dup1 = load i256, ptr %stack_var_000, align 32
store i256 %dup1, ptr %stack_var_001, align 32
%argument_01 = load i256, ptr %stack_var_001, align 32
%comparison_result = icmp eq i256 %argument_01, 0
%comparison_result_extended = zext i1 %comparison_result to i256
store i256 %comparison_result_extended, ptr %stack_var_001, align 32
store i256 1, ptr %stack_var_002, align 32
%conditional_dt_1_condition = load i256, ptr %stack_var_001, align 32
%conditional_dt_1_condition_compared = icmp ne i256 %conditional_dt_1_condition, 0
br i1 %conditional_dt_1_condition_compared, label %"block_dt_1/0", label %conditional_dt_1_join_block
"block_dt_1/0": ; preds = %"block_dt_0/0"
store i256 0, ptr %stack_var_000, align 32
%dup15 = load i256, ptr %stack_var_000, align 32
store i256 %dup15, ptr %stack_var_001, align 32
store i256 0, ptr %stack_var_002, align 32
store i256 0, ptr %stack_var_003, align 32
%argument_06 = load i256, ptr %stack_var_003, align 32
%argument_17 = load i256, ptr %stack_var_002, align 32
%argument_2 = load i256, ptr %stack_var_001, align 32
%calldata_copy_destination_pointer = inttoptr i256 %argument_06 to ptr addrspace(1)
%calldata_pointer = load ptr addrspace(3), ptr @ptr_calldata, align 32
%calldata_source_pointer = getelementptr i8, ptr addrspace(3) %calldata_pointer, i256 %argument_17
call void @llvm.memcpy.p1.p3.i256(ptr addrspace(1) align 1 %calldata_copy_destination_pointer, ptr addrspace(3) align 1 %calldata_source_pointer, i256 %argument_2, i1 false)
store i256 0, ptr %stack_var_001, align 32
%argument_08 = load i256, ptr %stack_var_001, align 32
%argument_19 = load i256, ptr %stack_var_000, align 32
store i256 32, ptr addrspace(2) inttoptr (i256 256 to ptr addrspace(2)), align 1
store i256 0, ptr addrspace(2) inttoptr (i256 288 to ptr addrspace(2)), align 1
call void @__return(i256 256, i256 64, i256 2)
unreachable
"block_rt_0/0": ; preds = %entry
store i256 128, ptr %stack_var_000, align 32
store i256 64, ptr %stack_var_001, align 32
%argument_010 = load i256, ptr %stack_var_001, align 32
%argument_111 = load i256, ptr %stack_var_000, align 32
%memory_store_pointer12 = inttoptr i256 %argument_010 to ptr addrspace(1)
store i256 %argument_111, ptr addrspace(1) %memory_store_pointer12, align 1
%get_u128_value13 = call i256 @llvm.syncvm.getu128()
store i256 %get_u128_value13, ptr %stack_var_000, align 32
%dup114 = load i256, ptr %stack_var_000, align 32
store i256 %dup114, ptr %stack_var_001, align 32
%argument_015 = load i256, ptr %stack_var_001, align 32
%comparison_result16 = icmp eq i256 %argument_015, 0
%comparison_result_extended17 = zext i1 %comparison_result16 to i256
store i256 %comparison_result_extended17, ptr %stack_var_001, align 32
store i256 1, ptr %stack_var_002, align 32
%conditional_rt_1_condition = load i256, ptr %stack_var_001, align 32
%conditional_rt_1_condition_compared = icmp ne i256 %conditional_rt_1_condition, 0
br i1 %conditional_rt_1_condition_compared, label %"block_rt_1/0", label %conditional_rt_1_join_block
"block_rt_1/0": ; preds = %"block_rt_0/0"
store i256 4, ptr %stack_var_000, align 32
%calldatasize = load i256, ptr @calldatasize, align 32
store i256 %calldatasize, ptr %stack_var_001, align 32
%argument_021 = load i256, ptr %stack_var_001, align 32
%argument_122 = load i256, ptr %stack_var_000, align 32
%comparison_result23 = icmp ult i256 %argument_021, %argument_122
%comparison_result_extended24 = zext i1 %comparison_result23 to i256
store i256 %comparison_result_extended24, ptr %stack_var_000, align 32
store i256 2, ptr %stack_var_001, align 32
%conditional_rt_2_condition = load i256, ptr %stack_var_000, align 32
%conditional_rt_2_condition_compared = icmp ne i256 %conditional_rt_2_condition, 0
br i1 %conditional_rt_2_condition_compared, label %"block_rt_2/0", label %conditional_rt_2_join_block
"block_rt_2/0": ; preds = %"block_rt_1/0"
store i256 0, ptr %stack_var_000, align 32
%dup134 = load i256, ptr %stack_var_000, align 32
store i256 %dup134, ptr %stack_var_001, align 32
%argument_035 = load i256, ptr %stack_var_001, align 32
%argument_136 = load i256, ptr %stack_var_000, align 32
call void @__revert(i256 %argument_035, i256 %argument_136, i256 0)
unreachable
"block_rt_2/1": ; preds = %conditional_rt_3_join_block
store i256 0, ptr %stack_var_001, align 32
%dup137 = load i256, ptr %stack_var_001, align 32
store i256 %dup137, ptr %stack_var_002, align 32
%argument_038 = load i256, ptr %stack_var_002, align 32
%argument_139 = load i256, ptr %stack_var_001, align 32
call void @__revert(i256 %argument_038, i256 %argument_139, i256 0)
unreachable
"block_rt_3/0": ; preds = %conditional_rt_2_join_block
store i256 4, ptr %stack_var_001, align 32
store i256 5, ptr %stack_var_002, align 32
br label %"block_rt_5/0"
"block_rt_4/0": ; preds = %"block_rt_5/0"
store i256 64, ptr %stack_var_002, align 32
%dup140 = load i256, ptr %stack_var_002, align 32
store i256 %dup140, ptr %stack_var_003, align 32
%argument_041 = load i256, ptr %stack_var_003, align 32
%memory_load_pointer = inttoptr i256 %argument_041 to ptr addrspace(1)
%memory_load_result = load i256, ptr addrspace(1) %memory_load_pointer, align 1
store i256 %memory_load_result, ptr %stack_var_003, align 32
%swap2_top_value = load i256, ptr %stack_var_003, align 32
%swap2_swap_value = load i256, ptr %stack_var_001, align 32
store i256 %swap2_swap_value, ptr %stack_var_003, align 32
store i256 %swap2_top_value, ptr %stack_var_001, align 32
%dup3 = load i256, ptr %stack_var_001, align 32
store i256 %dup3, ptr %stack_var_004, align 32
%argument_042 = load i256, ptr %stack_var_004, align 32
%argument_143 = load i256, ptr %stack_var_003, align 32
%memory_store_pointer44 = inttoptr i256 %argument_042 to ptr addrspace(1)
store i256 %argument_143, ptr addrspace(1) %memory_store_pointer44, align 1
%argument_045 = load i256, ptr %stack_var_002, align 32
%memory_load_pointer46 = inttoptr i256 %argument_045 to ptr addrspace(1)
%memory_load_result47 = load i256, ptr addrspace(1) %memory_load_pointer46, align 1
store i256 %memory_load_result47, ptr %stack_var_002, align 32
%swap1_top_value = load i256, ptr %stack_var_002, align 32
%swap1_swap_value = load i256, ptr %stack_var_001, align 32
store i256 %swap1_swap_value, ptr %stack_var_002, align 32
store i256 %swap1_top_value, ptr %stack_var_001, align 32
%dup2 = load i256, ptr %stack_var_001, align 32
store i256 %dup2, ptr %stack_var_003, align 32
%swap1_top_value48 = load i256, ptr %stack_var_003, align 32
%swap1_swap_value49 = load i256, ptr %stack_var_002, align 32
store i256 %swap1_swap_value49, ptr %stack_var_003, align 32
store i256 %swap1_top_value48, ptr %stack_var_002, align 32
%argument_050 = load i256, ptr %stack_var_003, align 32
%argument_151 = load i256, ptr %stack_var_002, align 32
%subtraction_result = sub i256 %argument_050, %argument_151
store i256 %subtraction_result, ptr %stack_var_002, align 32
store i256 32, ptr %stack_var_003, align 32
%argument_052 = load i256, ptr %stack_var_003, align 32
%argument_153 = load i256, ptr %stack_var_002, align 32
%addition_result = add i256 %argument_052, %argument_153
store i256 %addition_result, ptr %stack_var_002, align 32
%swap1_top_value54 = load i256, ptr %stack_var_002, align 32
%swap1_swap_value55 = load i256, ptr %stack_var_001, align 32
store i256 %swap1_swap_value55, ptr %stack_var_002, align 32
store i256 %swap1_top_value54, ptr %stack_var_001, align 32
%argument_056 = load i256, ptr %stack_var_002, align 32
%argument_157 = load i256, ptr %stack_var_001, align 32
call void @__return(i256 %argument_056, i256 %argument_157, i256 0)
unreachable
"block_rt_5/0": ; preds = %"block_rt_3/0"
store i256 42, ptr %stack_var_002, align 32
%swap1_top_value58 = load i256, ptr %stack_var_002, align 32
%swap1_swap_value59 = load i256, ptr %stack_var_001, align 32
store i256 %swap1_swap_value59, ptr %stack_var_002, align 32
store i256 %swap1_top_value58, ptr %stack_var_001, align 32
br label %"block_rt_4/0"
conditional_dt_1_join_block: ; preds = %"block_dt_0/0"
store i256 0, ptr %stack_var_001, align 32
%dup12 = load i256, ptr %stack_var_001, align 32
store i256 %dup12, ptr %stack_var_002, align 32
%argument_03 = load i256, ptr %stack_var_002, align 32
%argument_14 = load i256, ptr %stack_var_001, align 32
call void @__revert(i256 %argument_03, i256 %argument_14, i256 0)
unreachable
conditional_rt_1_join_block: ; preds = %"block_rt_0/0"
store i256 0, ptr %stack_var_001, align 32
%dup118 = load i256, ptr %stack_var_001, align 32
store i256 %dup118, ptr %stack_var_002, align 32
%argument_019 = load i256, ptr %stack_var_002, align 32
%argument_120 = load i256, ptr %stack_var_001, align 32
call void @__revert(i256 %argument_019, i256 %argument_120, i256 0)
unreachable
conditional_rt_2_join_block: ; preds = %"block_rt_1/0"
store i256 0, ptr %stack_var_000, align 32
%argument_025 = load i256, ptr %stack_var_000, align 32
%calldata_pointer26 = load ptr addrspace(3), ptr @ptr_calldata, align 32
%calldata_pointer_with_offset = getelementptr i8, ptr addrspace(3) %calldata_pointer26, i256 %argument_025
%calldata_value = load i256, ptr addrspace(3) %calldata_pointer_with_offset, align 32
store i256 %calldata_value, ptr %stack_var_000, align 32
store i256 224, ptr %stack_var_001, align 32
%argument_027 = load i256, ptr %stack_var_001, align 32
%argument_128 = load i256, ptr %stack_var_000, align 32
%shr_call = call i256 @__shr(i256 %argument_027, i256 %argument_128)
store i256 %shr_call, ptr %stack_var_000, align 32
%dup129 = load i256, ptr %stack_var_000, align 32
store i256 %dup129, ptr %stack_var_001, align 32
store i256 1519042605, ptr %stack_var_002, align 32
%argument_030 = load i256, ptr %stack_var_002, align 32
%argument_131 = load i256, ptr %stack_var_001, align 32
%comparison_result32 = icmp eq i256 %argument_030, %argument_131
%comparison_result_extended33 = zext i1 %comparison_result32 to i256
store i256 %comparison_result_extended33, ptr %stack_var_001, align 32
store i256 3, ptr %stack_var_002, align 32
%conditional_rt_3_condition = load i256, ptr %stack_var_001, align 32
%conditional_rt_3_condition_compared = icmp ne i256 %conditional_rt_3_condition, 0
br i1 %conditional_rt_3_condition_compared, label %"block_rt_3/0", label %conditional_rt_3_join_block
conditional_rt_3_join_block: ; preds = %conditional_rt_2_join_block
br label %"block_rt_2/1"
}
attributes #0 = { nounwind }
attributes #1 = { nounwind readnone }
attributes #2 = { nounwind readonly }
attributes #3 = { writeonly }
attributes #4 = { argmemonly nocallback nofree nounwind willreturn }
attributes #5 = { noprofile }
attributes #6 = { mustprogress nofree nounwind null_pointer_is_valid readnone willreturn }
attributes #7 = { mustprogress nofree nounwind null_pointer_is_valid willreturn }
attributes #8 = { nofree null_pointer_is_valid }