diff --git a/tests/codegen/contr/TestCodegenContr.ml b/tests/codegen/contr/TestCodegenContr.ml index ddf39c0f..fe4ee64e 100644 --- a/tests/codegen/contr/TestCodegenContr.ml +++ b/tests/codegen/contr/TestCodegenContr.ml @@ -21,6 +21,8 @@ open Utils let contrlist = [ + "accounting_tests.scilla"; + "accounting_tests_support.scilla"; "crowdfunding.scilla"; "match_assign.scilla"; "match_assign2.scilla"; diff --git a/tests/codegen/contr/accounting_tests.init.json b/tests/codegen/contr/accounting_tests.init.json new file mode 100644 index 00000000..fc54c8ab --- /dev/null +++ b/tests/codegen/contr/accounting_tests.init.json @@ -0,0 +1,22 @@ +[ + { + "vname" : "_scilla_version", + "type" : "Uint32", + "value" : "0" + }, + { + "vname" : "_this_address", + "type" : "ByStr20", + "value" : "0x3620c286757a29985cee194eb90064270fb65414" + }, + { + "vname" : "_creation_block", + "type" : "BNum", + "value" : "1" + }, + { + "vname" : "support_contract", + "type" : "ByStr20", + "value" : "0xabfeccdc9012345678901234567890f777564323" + } +] diff --git a/tests/codegen/contr/accounting_tests.scilla b/tests/codegen/contr/accounting_tests.scilla new file mode 100644 index 00000000..d61a14bb --- /dev/null +++ b/tests/codegen/contr/accounting_tests.scilla @@ -0,0 +1,416 @@ +scilla_version 0 + +import ListUtils + +library Lib + +let one_msg : Message -> List Message = + fun (m : Message) => + let mty = Nil { Message } in + Cons { Message } m mty + +let list_head_string = @list_head String +let list_eq_string = + let string_eq = fun (x : String) => fun (y : String) => builtin eq x y in + let list_eq_string = @list_eq String in + list_eq_string string_eq + +contract AccountingTests(support_contract : ByStr20 with contract field stored_strings : List String end) + +field test_string_1 : String = "Hello" +field test_string_2 : String = "World" + +field outgoing_amount : Uint128 = Uint128 10 +field max_outgoing_msgs : Uint128 = Uint128 3 + +transition Reset() + msg = { _recipient : support_contract; + _tag : "Reset"; + _amount : Uint128 0 }; + msgs = one_msg msg; + send msgs; + accept +end + +procedure AssertReset() + ss <- & support_contract.stored_strings; + cur_head = list_head_string ss; + match cur_head with + | None => (* OK *) + | Some _ => + e = { _exception : "Support contract not reset" }; + throw e + end; + (* Ensure that sufficient balance is available *) + amount <- outgoing_amount; + max_msgs <- max_outgoing_msgs; + minimum = builtin mul amount max_msgs; + bal <- _balance; + insufficient_balance = builtin lt bal minimum; + match insufficient_balance with + | False => (* OK *) + | True => + e = { _exception : "Insufficient balance for tests" }; + throw e + end +end + +(* Simple test that an error is thrown on the Scilla side if the contract has insufficient balance to cover the outgoing amounts. + Ignore when testing at blockchain level. *) +transition Test_Insufficient_Balance() + amount <- outgoing_amount; + msg1 = { _recipient : support_contract; + _tag : "NonAccept"; + _amount : amount}; + msgs = one_msg msg1; + send msgs +end + +(* ********************************************************* *) +(* TESTS OF THE ORDER OF SENT MESSAGES *) +(* ********************************************************* *) + +(* Test that multiple sends result in messages being processed in the order of the sends *) +transition Test_Send_1() + AssertReset; + s1 <- test_string_1; + msg1 = { _recipient : support_contract; + _tag : "StoreString"; + _amount : Uint128 0; + s : s1}; + msgs1 = one_msg msg1; + send msgs1; + s2 <- test_string_2; + msg2 = { _recipient : support_contract; + _tag : "StoreString"; + _amount : Uint128 0; + s : s2}; + msgs2 = one_msg msg2; + send msgs2; + msg_final = { _recipient : _this_address; + _tag : "Finalize_Test_Send_1"; + _amount : Uint128 0}; + msgs_final = one_msg msg_final; + send msgs_final +end + +procedure Finalize_Test_Send_Helper_2_Msgs(test_no : Uint128) + s1 <- test_string_1; + s2 <- test_string_2; + expected = + let mty = Nil { String } in + let fst = Cons { String } s1 mty in + Cons { String } s2 fst; + actual <- & support_contract.stored_strings; + res = list_eq_string expected actual; + match res with + | True => (* Ok *) + | False => + e = { _exception : "Test_Send failed"; test_no: test_no; expected : expected; actual : actual }; + throw e + end +end + +(* Check that the stored strings at the support contract are in the correct order *) +transition Finalize_Test_Send_1() + x = Uint128 1; + Finalize_Test_Send_Helper_2_Msgs x +end + +(* Test that a send with multiple messages result in messages being processed in the order that the messages appear in in the argument list *) +transition Test_Send_2() + AssertReset; + s1 <- test_string_1; + msg1 = { _recipient : support_contract; + _tag : "StoreString"; + _amount : Uint128 0; + s : s1}; + s2 <- test_string_2; + msg2 = { _recipient : support_contract; + _tag : "StoreString"; + _amount : Uint128 0; + s : s2}; + msgs_tmp = one_msg msg2; + msgs = Cons { Message } msg1 msgs_tmp; + send msgs; + msg_final = { _recipient : _this_address; + _tag : "Finalize_Test_Send_2"; + _amount : Uint128 0}; + msgs_final = one_msg msg_final; + send msgs_final +end + +(* Check that the stored strings at the support contract are in the correct order *) +transition Finalize_Test_Send_2() + x = Uint128 2; + Finalize_Test_Send_Helper_2_Msgs x +end + +(* Test that outgoing messages are processed depth-first *) +transition Test_Send_3() + AssertReset; + s1 <- test_string_1; + msg1 = { _recipient : _this_address; + _tag : "Test_Send_3_Helper"; + _amount : Uint128 0}; + msgs1 = one_msg msg1; + send msgs1; + s2 <- test_string_2; + msg2 = { _recipient : support_contract; + _tag : "StoreString"; + _amount : Uint128 0; + s : s2}; + msgs2 = one_msg msg2; + send msgs2; + msg_final = { _recipient : _this_address; + _tag : "Finalize_Test_Send_3"; + _amount : Uint128 0}; + msgs_final = one_msg msg_final; + send msgs_final +end + +(* Test that outgoing messages are processed depth-first *) +transition Test_Send_3_Helper() + s1 <- test_string_1; + msg1 = { _recipient : support_contract; + _tag : "StoreString"; + _amount : Uint128 0; + s : s1}; + msgs1 = one_msg msg1; + send msgs1 +end + +(* Check that the stored strings at the support contract are in the correct order *) +transition Finalize_Test_Send_3() + x = Uint128 3; + Finalize_Test_Send_Helper_2_Msgs x +end + +(* ********************************************************* *) +(* TESTS OF SEND AND ACCEPT OF ZIL *) +(* ********************************************************* *) + +(* Send should deduct from the current contract's balance. Message construction should not *) +(* Send of multiple messages should deduct all sent money from the current contract's balance. *) +(* Remote read of current contract's balance should be identical to _balance at all times - THIS DOESN'T WORK AFTER ACCEPT BECAUSE OF A MISSING CORNER CASE IN EvalUtil.ml *) +(* Accept should increase current contract's balance, but not decrease sender's balance - THIS DOESN'T WORK BECAUSE OF A CORNER CASE THAT SHOULDN'T BE TREATED AS A CORNER CASE *) +(* Non-acceptance should result in an increase of the sender's balance by the amount in the message *) + +procedure CheckBalance(expected_balance : Uint128) + cur_balance <- _balance; + is_expected = builtin eq expected_balance cur_balance; + match is_expected with + | True => (* OK *) + | False => + e = { _exception : "Unexpected balance"; + expected : expected_balance; + actual : cur_balance }; + throw e + end +end + +transition CheckSenderBalance(expected_balance : Uint128) + CheckBalance expected_balance +end + +procedure CheckSupportBalance(expected_balance : Uint128) + cur_balance <- & support_contract._balance; + is_expected = builtin eq expected_balance cur_balance; + match is_expected with + | True => (* OK *) + | False => + e = { _exception : "Main contract read unexpected support contract balance"; + expected : expected_balance; + actual : cur_balance }; + throw e + end +end + +transition CheckRecipientBalance(expected_balance : Uint128) + CheckSupportBalance expected_balance +end + +(* Check that the current contract's balance is decreased when sending funds in single messages *) +transition Test_Send_4() + AssertReset; + amount <- outgoing_amount; + init_bal <- _balance; + msg1 = { _recipient : support_contract; + _tag : "Accept"; + _amount : amount}; + msgs1 = one_msg msg1; + send msgs1; + expected_intermediate_balance = builtin sub init_bal amount; + CheckBalance expected_intermediate_balance; + msg2 = { _recipient : support_contract; + _tag : "NonAccept"; + _amount : amount}; + msgs2 = one_msg msg2; + send msgs2; + expected_final_balance = builtin sub expected_intermediate_balance amount; + CheckBalance expected_final_balance +end + +(* Check that the current contract's balance is decreased when sending funds in multiple messages in a single send *) +transition Test_Send_5() + AssertReset; + amount <- outgoing_amount; + init_bal <- _balance; + msg1 = { _recipient : support_contract; + _tag : "Accept"; + _amount : amount}; + msg2 = { _recipient : support_contract; + _tag : "NonAccept"; + _amount : amount}; + msgs_tmp = one_msg msg2; + msgs = Cons {Message} msg1 msgs_tmp; + send msgs; + expected_intermediate_balance = builtin sub init_bal amount; + expected_final_balance = builtin sub expected_intermediate_balance amount; + CheckBalance expected_final_balance +end + +(* Check that funds are transferred on acceptance *) +transition Test_Send_6() + AssertReset; + amount <- outgoing_amount; + bal <- _balance; + msg1 = { _recipient : support_contract; + _tag : "Accept"; + _amount : amount}; + msgs1 = one_msg msg1; + send msgs1; + expected_balance = builtin sub bal amount; + msg2 = { _recipient : _this_address; + _tag : "CheckSenderBalance"; + _amount : Uint128 0; + expected_balance : expected_balance }; + msgs2 = one_msg msg2; + send msgs2 +end + +(* Check that funds are returned on non-acceptance *) +transition Test_Send_7() + AssertReset; + amount <- outgoing_amount; + bal <- _balance; + msg1 = { _recipient : support_contract; + _tag : "NonAccept"; + _amount : amount}; + msgs1 = one_msg msg1; + send msgs1; + msg2 = { _recipient : _this_address; + _tag : "CheckSenderBalance"; + _amount : Uint128 0; + expected_balance : bal }; + msgs2 = one_msg msg2; + send msgs2 +end + +(* Check that the recipient's balance isn't updated until the funds are accepted *) +transition Test_Send_8() + AssertReset; + amount <- outgoing_amount; + msg1 = { _recipient : support_contract; + _tag : "AcceptAndCheckBalance"; + _amount : amount}; + msgs1 = one_msg msg1; + send msgs1; + support_bal <- & support_contract._balance; + expected_balance = builtin add support_bal amount; + msg2 = { _recipient : _this_address; + _tag : "CheckRecipientBalance"; + _amount : Uint128 0; + expected_balance : expected_balance }; + msgs2 = one_msg msg2; + send msgs2 +end + +(* Check that the recipient's balance isn't updated if funds are not accepted *) +transition Test_Send_9() + AssertReset; + amount <- outgoing_amount; + msg1 = { _recipient : support_contract; + _tag : "NonAccept"; + _amount : amount}; + msgs1 = one_msg msg1; + send msgs1; + support_bal <- & support_contract._balance; + msg2 = { _recipient : _this_address; + _tag : "CheckRecipientBalance"; + _amount : Uint128 0; + expected_balance : support_bal }; + msgs2 = one_msg msg2; + send msgs2 +end + +(* Check that acceptance does not affect sender's balance *) +transition Test_Send_10() + AssertReset; + amount <- outgoing_amount; + msg1 = { _recipient : support_contract; + _tag : "AcceptAndCheckSenderBalance"; + _amount : amount}; + msgs = one_msg msg1; + send msgs +end + +(* Check that only the first accept affects the recipient's balance *) +transition Test_Send_11() + AssertReset; + amount <- outgoing_amount; + msg1 = { _recipient : support_contract; + _tag : "AcceptTwiceAndCheckBalance"; + _amount : amount}; + msgs = one_msg msg1; + send msgs +end + +(* Check that only one of multiple accepts decrease the sender's balance *) +transition Test_Send_12() + amount <- outgoing_amount; + bal <- _balance; + msg1 = { _recipient : support_contract; + _tag : "AcceptTwiceAndCheckBalance"; + _amount : amount}; + msgs1 = one_msg msg1; + send msgs1; + expected_balance = builtin sub bal amount; + msg2 = { _recipient : _this_address; + _tag : "CheckSenderBalance"; + _amount : Uint128 0; + expected_balance : expected_balance }; + msgs2 = one_msg msg2; + send msgs2 +end + +(* Check that only one of multiple accepts increase the recipient's balance *) +transition Test_Send_13() + (* Check that the recipient's balance isn't updated until the funds are accepted *) + AssertReset; + amount <- outgoing_amount; + msg1 = { _recipient : support_contract; + _tag : "AcceptTwiceAndCheckBalance"; + _amount : amount}; + msgs1 = one_msg msg1; + send msgs1; + support_bal <- & support_contract._balance; + expected_balance = builtin add support_bal amount; + msg2 = { _recipient : _this_address; + _tag : "CheckRecipientBalance"; + _amount : Uint128 0; + expected_balance : expected_balance }; + msgs2 = one_msg msg2; + send msgs2 +end + +(* Check that it is possible to transfer all funds (this ensures that the sender's balance isn't deducted more than once) *) +transition Test_Send_14() + AssertReset; + amount <- _balance; + msg1 = { _recipient : support_contract; + _tag : "Accept"; + _amount : amount}; + msgs = one_msg msg1; + send msgs +end \ No newline at end of file diff --git a/tests/codegen/contr/accounting_tests_support.scilla b/tests/codegen/contr/accounting_tests_support.scilla new file mode 100644 index 00000000..f2ad0ed8 --- /dev/null +++ b/tests/codegen/contr/accounting_tests_support.scilla @@ -0,0 +1,77 @@ +scilla_version 0 + +contract AccountingTestsSupport() + +field stored_strings : List String = Nil { String } + +transition Reset() + new_strings = Nil { String }; + stored_strings := new_strings +end + +transition StoreString (s : String) + old_strings <- stored_strings; + new_strings = Cons { String } s old_strings; + stored_strings := new_strings +end + +transition Accept() + accept +end + +transition AcceptTwice() + accept; + accept +end + +transition NonAccept() +end + +procedure CheckBalance(expected_balance : Uint128) + cur_balance <- _balance; + is_expected = builtin eq expected_balance cur_balance; + match is_expected with + | True => (* OK *) + | False => + e = { _exception : "Unexpected balance at support contract"; + expected : expected_balance; + actual : cur_balance }; + throw e + end +end + +procedure CheckSenderBalance(expected_balance : Uint128) + cur_balance <-& _sender._balance; + is_expected = builtin eq expected_balance cur_balance; + match is_expected with + | True => (* OK *) + | False => + e = { _exception : "Unexpected sender balance read by support contract"; + expected : expected_balance; + actual : cur_balance }; + throw e + end +end + +transition AcceptAndCheckBalance() + init_bal <- _balance; + accept; + expected_balance = builtin add init_bal _amount; + CheckBalance expected_balance +end + +transition AcceptTwiceAndCheckBalance() + init_bal <- _balance; + accept; + expected_balance = builtin add init_bal _amount; + CheckBalance expected_balance; + accept; + CheckBalance expected_balance +end + +transition AcceptAndCheckSenderBalance() + init_bal <- & _sender._balance; + accept; + CheckSenderBalance init_bal +end + diff --git a/tests/codegen/contr/dgold/accounting_tests.scilla.gold b/tests/codegen/contr/dgold/accounting_tests.scilla.gold new file mode 100644 index 00000000..abc63b8e --- /dev/null +++ b/tests/codegen/contr/dgold/accounting_tests.scilla.gold @@ -0,0 +1,8190 @@ + + +; gas_remaining: 4001332 +; ModuleID = 'AccountingTests' +source_filename = "AccountingTests" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +%"$TyDescrTy_PrimTyp_87" = type { i32, i32 } +%_TyDescrTy_Typ = type { i32, i8* } +%"$TyDescrTy_ADTTyp_119" = type { %TyDescrString, i32, i32, i32, %"$TyDescrTy_ADTTyp_Specl_118"** } +%TyDescrString = type { i8*, i32 } +%"$TyDescrTy_ADTTyp_Specl_118" = type { %_TyDescrTy_Typ**, %"$TyDescrTy_ADTTyp_Constr_120"**, %"$TyDescrTy_ADTTyp_119"* } +%"$TyDescrTy_ADTTyp_Constr_120" = type { %TyDescrString, i32, %_TyDescrTy_Typ** } +%"$TyDescr_AddrTyp_127" = type { i32, %"$TyDescr_AddrFieldTyp_126"* } +%"$TyDescr_AddrFieldTyp_126" = type { %TyDescrString, %_TyDescrTy_Typ* } +%TName_List_Message = type { i8, %CName_Cons_Message*, %CName_Nil_Message* } +%CName_Cons_Message = type <{ i8, i8*, %TName_List_Message* }> +%CName_Nil_Message = type <{ i8 }> +%TName_Option_String = type { i8, %CName_Some_String*, %CName_None_String* } +%CName_Some_String = type <{ i8, %String }> +%String = type { i8*, i32 } +%CName_None_String = type <{ i8 }> +%TName_List_String = type { i8, %CName_Cons_String*, %CName_Nil_String* } +%CName_Cons_String = type <{ i8, %String, %TName_List_String* }> +%CName_Nil_String = type <{ i8 }> +%TName_Bool = type { i8, %CName_True*, %CName_False* } +%CName_True = type <{ i8 }> +%CName_False = type <{ i8 }> +%Uint32 = type { i32 } +%"$ParamDescr_4259" = type { %ParamDescrString, %_TyDescrTy_Typ* } +%ParamDescrString = type { i8*, i32 } +%"$TransDescr_4260" = type { %ParamDescrString, i32, %"$ParamDescr_4259"* } +%"$$fundef_79_env_179" = type { %String } +%"$$fundef_77_env_180" = type {} +%"$$fundef_81_env_181" = type {} +%"$$fundef_71_env_182" = type { { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, %TName_List_String*, %String, %TName_List_String* } +%"$$fundef_69_env_183" = type { { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, %TName_List_String*, %TName_List_String* } +%"$$fundef_67_env_184" = type { { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, %TName_List_String* } +%"$$fundef_65_env_185" = type { { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, %TName_List_String*, { i8*, i8* }* } +%"$$fundef_63_env_186" = type { { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { i8*, i8* }* } +%"$$fundef_61_env_187" = type { { i8*, i8* }* } +%"$$fundef_59_env_188" = type { { i8*, i8* }* } +%"$$fundef_75_env_189" = type {} +%"$$fundef_73_env_190" = type {} +%"$$fundef_57_env_191" = type { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, %TName_List_String* } +%"$$fundef_55_env_192" = type { { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, %TName_List_String* } +%"$$fundef_53_env_193" = type { { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } } +%"$$fundef_51_env_194" = type {} +%"$$fundef_49_env_195" = type {} +%"$$fundef_47_env_196" = type {} +%Uint128 = type { i128 } + +@_execptr = global i8* null +@_gasrem = global i64 0 +@"$TyDescr_Int32_Prim_88" = global %"$TyDescrTy_PrimTyp_87" zeroinitializer +@"$TyDescr_Int32_89" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Int32_Prim_88" to i8*) } +@"$TyDescr_Uint32_Prim_90" = global %"$TyDescrTy_PrimTyp_87" { i32 1, i32 0 } +@"$TyDescr_Uint32_91" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Uint32_Prim_90" to i8*) } +@"$TyDescr_Int64_Prim_92" = global %"$TyDescrTy_PrimTyp_87" { i32 0, i32 1 } +@"$TyDescr_Int64_93" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Int64_Prim_92" to i8*) } +@"$TyDescr_Uint64_Prim_94" = global %"$TyDescrTy_PrimTyp_87" { i32 1, i32 1 } +@"$TyDescr_Uint64_95" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Uint64_Prim_94" to i8*) } +@"$TyDescr_Int128_Prim_96" = global %"$TyDescrTy_PrimTyp_87" { i32 0, i32 2 } +@"$TyDescr_Int128_97" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Int128_Prim_96" to i8*) } +@"$TyDescr_Uint128_Prim_98" = global %"$TyDescrTy_PrimTyp_87" { i32 1, i32 2 } +@"$TyDescr_Uint128_99" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Uint128_Prim_98" to i8*) } +@"$TyDescr_Int256_Prim_100" = global %"$TyDescrTy_PrimTyp_87" { i32 0, i32 3 } +@"$TyDescr_Int256_101" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Int256_Prim_100" to i8*) } +@"$TyDescr_Uint256_Prim_102" = global %"$TyDescrTy_PrimTyp_87" { i32 1, i32 3 } +@"$TyDescr_Uint256_103" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Uint256_Prim_102" to i8*) } +@"$TyDescr_String_Prim_104" = global %"$TyDescrTy_PrimTyp_87" { i32 2, i32 0 } +@"$TyDescr_String_105" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_String_Prim_104" to i8*) } +@"$TyDescr_Bnum_Prim_106" = global %"$TyDescrTy_PrimTyp_87" { i32 3, i32 0 } +@"$TyDescr_Bnum_107" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Bnum_Prim_106" to i8*) } +@"$TyDescr_Message_Prim_108" = global %"$TyDescrTy_PrimTyp_87" { i32 4, i32 0 } +@"$TyDescr_Message_109" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Message_Prim_108" to i8*) } +@"$TyDescr_Event_Prim_110" = global %"$TyDescrTy_PrimTyp_87" { i32 5, i32 0 } +@"$TyDescr_Event_111" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Event_Prim_110" to i8*) } +@"$TyDescr_Exception_Prim_112" = global %"$TyDescrTy_PrimTyp_87" { i32 6, i32 0 } +@"$TyDescr_Exception_113" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Exception_Prim_112" to i8*) } +@"$TyDescr_Bystr_Prim_114" = global %"$TyDescrTy_PrimTyp_87" { i32 7, i32 0 } +@"$TyDescr_Bystr_115" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Bystr_Prim_114" to i8*) } +@"$TyDescr_Bystr20_Prim_116" = global %"$TyDescrTy_PrimTyp_87" { i32 8, i32 20 } +@"$TyDescr_Bystr20_117" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Bystr20_Prim_116" to i8*) } +@"$TyDescr_ADT_List_Message_121" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_List_Message_ADTTyp_Specl_139" to i8*) } +@"$TyDescr_ADT_List_String_122" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_List_String_ADTTyp_Specl_148" to i8*) } +@"$TyDescr_ADT_Bool_123" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_Bool_ADTTyp_Specl_160" to i8*) } +@"$TyDescr_ADT_Option_String_124" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_Option_String_ADTTyp_Specl_172" to i8*) } +@"$TyDescr_Addr_128" = unnamed_addr constant %_TyDescrTy_Typ { i32 3, i8* bitcast (%"$TyDescr_AddrTyp_127"* @"$TyDescr_AddrFields_175" to i8*) } +@"$TyDescr_Addr_129" = unnamed_addr constant %_TyDescrTy_Typ { i32 3, i8* bitcast (%"$TyDescr_AddrTyp_127"* @"$TyDescr_AddrFields_178" to i8*) } +@"$TyDescr_List_ADTTyp_130" = unnamed_addr constant %"$TyDescrTy_ADTTyp_119" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_List_150", i32 0, i32 0), i32 4 }, i32 1, i32 2, i32 2, %"$TyDescrTy_ADTTyp_Specl_118"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Specl_118"*], [2 x %"$TyDescrTy_ADTTyp_Specl_118"*]* @"$TyDescr_List_ADTTyp_m_specls_149", i32 0, i32 0) } +@"$TyDescr_List_Cons_Message_Constr_m_args_131" = unnamed_addr constant [2 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Message_109", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121"] +@"$TyDescr_ADT_Cons_132" = unnamed_addr constant [4 x i8] c"Cons" +@"$TyDescr_List_Cons_Message_ADTTyp_Constr_133" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Cons_132", i32 0, i32 0), i32 4 }, i32 2, %_TyDescrTy_Typ** getelementptr inbounds ([2 x %_TyDescrTy_Typ*], [2 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Cons_Message_Constr_m_args_131", i32 0, i32 0) } +@"$TyDescr_List_Nil_Message_Constr_m_args_134" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_Nil_135" = unnamed_addr constant [3 x i8] c"Nil" +@"$TyDescr_List_Nil_Message_ADTTyp_Constr_136" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$TyDescr_ADT_Nil_135", i32 0, i32 0), i32 3 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Nil_Message_Constr_m_args_134", i32 0, i32 0) } +@"$TyDescr_List_Message_ADTTyp_Specl_m_constrs_137" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_120"*] [%"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_List_Cons_Message_ADTTyp_Constr_133", %"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_List_Nil_Message_ADTTyp_Constr_136"] +@"$TyDescr_List_Message_ADTTyp_Specl_m_TArgs_138" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Message_109"] +@"$TyDescr_List_Message_ADTTyp_Specl_139" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_118" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Message_ADTTyp_Specl_m_TArgs_138", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_120"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_120"*], [2 x %"$TyDescrTy_ADTTyp_Constr_120"*]* @"$TyDescr_List_Message_ADTTyp_Specl_m_constrs_137", i32 0, i32 0), %"$TyDescrTy_ADTTyp_119"* @"$TyDescr_List_ADTTyp_130" } +@"$TyDescr_List_Cons_String_Constr_m_args_140" = unnamed_addr constant [2 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122"] +@"$TyDescr_ADT_Cons_141" = unnamed_addr constant [4 x i8] c"Cons" +@"$TyDescr_List_Cons_String_ADTTyp_Constr_142" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Cons_141", i32 0, i32 0), i32 4 }, i32 2, %_TyDescrTy_Typ** getelementptr inbounds ([2 x %_TyDescrTy_Typ*], [2 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Cons_String_Constr_m_args_140", i32 0, i32 0) } +@"$TyDescr_List_Nil_String_Constr_m_args_143" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_Nil_144" = unnamed_addr constant [3 x i8] c"Nil" +@"$TyDescr_List_Nil_String_ADTTyp_Constr_145" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$TyDescr_ADT_Nil_144", i32 0, i32 0), i32 3 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Nil_String_Constr_m_args_143", i32 0, i32 0) } +@"$TyDescr_List_String_ADTTyp_Specl_m_constrs_146" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_120"*] [%"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_List_Cons_String_ADTTyp_Constr_142", %"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_List_Nil_String_ADTTyp_Constr_145"] +@"$TyDescr_List_String_ADTTyp_Specl_m_TArgs_147" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_105"] +@"$TyDescr_List_String_ADTTyp_Specl_148" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_118" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_List_String_ADTTyp_Specl_m_TArgs_147", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_120"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_120"*], [2 x %"$TyDescrTy_ADTTyp_Constr_120"*]* @"$TyDescr_List_String_ADTTyp_Specl_m_constrs_146", i32 0, i32 0), %"$TyDescrTy_ADTTyp_119"* @"$TyDescr_List_ADTTyp_130" } +@"$TyDescr_List_ADTTyp_m_specls_149" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Specl_118"*] [%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_List_Message_ADTTyp_Specl_139", %"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_List_String_ADTTyp_Specl_148"] +@"$TyDescr_ADT_List_150" = unnamed_addr constant [4 x i8] c"List" +@"$TyDescr_Bool_ADTTyp_151" = unnamed_addr constant %"$TyDescrTy_ADTTyp_119" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Bool_162", i32 0, i32 0), i32 4 }, i32 0, i32 2, i32 1, %"$TyDescrTy_ADTTyp_Specl_118"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_118"*], [1 x %"$TyDescrTy_ADTTyp_Specl_118"*]* @"$TyDescr_Bool_ADTTyp_m_specls_161", i32 0, i32 0) } +@"$TyDescr_Bool_True_Constr_m_args_152" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_True_153" = unnamed_addr constant [4 x i8] c"True" +@"$TyDescr_Bool_True_ADTTyp_Constr_154" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_True_153", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_True_Constr_m_args_152", i32 0, i32 0) } +@"$TyDescr_Bool_False_Constr_m_args_155" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_False_156" = unnamed_addr constant [5 x i8] c"False" +@"$TyDescr_Bool_False_ADTTyp_Constr_157" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$TyDescr_ADT_False_156", i32 0, i32 0), i32 5 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_False_Constr_m_args_155", i32 0, i32 0) } +@"$TyDescr_Bool_ADTTyp_Specl_m_constrs_158" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_120"*] [%"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_Bool_True_ADTTyp_Constr_154", %"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_Bool_False_ADTTyp_Constr_157"] +@"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_159" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_Bool_ADTTyp_Specl_160" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_118" { %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_159", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_120"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_120"*], [2 x %"$TyDescrTy_ADTTyp_Constr_120"*]* @"$TyDescr_Bool_ADTTyp_Specl_m_constrs_158", i32 0, i32 0), %"$TyDescrTy_ADTTyp_119"* @"$TyDescr_Bool_ADTTyp_151" } +@"$TyDescr_Bool_ADTTyp_m_specls_161" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_118"*] [%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_Bool_ADTTyp_Specl_160"] +@"$TyDescr_ADT_Bool_162" = unnamed_addr constant [4 x i8] c"Bool" +@"$TyDescr_Option_ADTTyp_163" = unnamed_addr constant %"$TyDescrTy_ADTTyp_119" { %TyDescrString { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$TyDescr_ADT_Option_174", i32 0, i32 0), i32 6 }, i32 1, i32 2, i32 1, %"$TyDescrTy_ADTTyp_Specl_118"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_118"*], [1 x %"$TyDescrTy_ADTTyp_Specl_118"*]* @"$TyDescr_Option_ADTTyp_m_specls_173", i32 0, i32 0) } +@"$TyDescr_Option_Some_String_Constr_m_args_164" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_105"] +@"$TyDescr_ADT_Some_165" = unnamed_addr constant [4 x i8] c"Some" +@"$TyDescr_Option_Some_String_ADTTyp_Constr_166" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_165", i32 0, i32 0), i32 4 }, i32 1, %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Some_String_Constr_m_args_164", i32 0, i32 0) } +@"$TyDescr_Option_None_String_Constr_m_args_167" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_None_168" = unnamed_addr constant [4 x i8] c"None" +@"$TyDescr_Option_None_String_ADTTyp_Constr_169" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_168", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_None_String_Constr_m_args_167", i32 0, i32 0) } +@"$TyDescr_Option_String_ADTTyp_Specl_m_constrs_170" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_120"*] [%"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_Option_Some_String_ADTTyp_Constr_166", %"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_Option_None_String_ADTTyp_Constr_169"] +@"$TyDescr_Option_String_ADTTyp_Specl_m_TArgs_171" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_105"] +@"$TyDescr_Option_String_ADTTyp_Specl_172" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_118" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_String_ADTTyp_Specl_m_TArgs_171", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_120"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_120"*], [2 x %"$TyDescrTy_ADTTyp_Constr_120"*]* @"$TyDescr_Option_String_ADTTyp_Specl_m_constrs_170", i32 0, i32 0), %"$TyDescrTy_ADTTyp_119"* @"$TyDescr_Option_ADTTyp_163" } +@"$TyDescr_Option_ADTTyp_m_specls_173" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_118"*] [%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_Option_String_ADTTyp_Specl_172"] +@"$TyDescr_ADT_Option_174" = unnamed_addr constant [6 x i8] c"Option" +@"$TyDescr_AddrFields_175" = unnamed_addr constant %"$TyDescr_AddrTyp_127" { i32 -1, %"$TyDescr_AddrFieldTyp_126"* null } +@"$TyDescr_AddrField_176" = unnamed_addr constant [14 x i8] c"stored_strings" +@"$TyDescr_AddrFields_177" = unnamed_addr constant [1 x %"$TyDescr_AddrFieldTyp_126"] [%"$TyDescr_AddrFieldTyp_126" { %TyDescrString { i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$TyDescr_AddrField_176", i32 0, i32 0), i32 14 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122" }] +@"$TyDescr_AddrFields_178" = unnamed_addr constant %"$TyDescr_AddrTyp_127" { i32 1, %"$TyDescr_AddrFieldTyp_126"* getelementptr inbounds ([1 x %"$TyDescr_AddrFieldTyp_126"], [1 x %"$TyDescr_AddrFieldTyp_126"]* @"$TyDescr_AddrFields_177", i32 0, i32 0) } +@list_foldk = global { i8*, i8* }* null +@ListUtils.list_head = global { i8*, i8* }* null +@ListUtils.list_eq = global { i8*, i8* }* null +@accounting_tests.one_msg = global { %TName_List_Message* (i8*, i8*)*, i8* } zeroinitializer +@accounting_tests.list_head_string = global { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } zeroinitializer +@accounting_tests.list_eq_string = global { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } zeroinitializer +@_cparam__scilla_version = global %Uint32 zeroinitializer +@_cparam__this_address = global [20 x i8] zeroinitializer +@_cparam__creation_block = global i8* null +@_cparam_support_contract = global [20 x i8] zeroinitializer +@"$stringlit_816" = unnamed_addr constant [5 x i8] c"Hello" +@"$test_string_1_818" = unnamed_addr constant [14 x i8] c"test_string_1\00" +@"$stringlit_827" = unnamed_addr constant [5 x i8] c"World" +@"$test_string_2_829" = unnamed_addr constant [14 x i8] c"test_string_2\00" +@"$outgoing_amount_839" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$max_outgoing_msgs_849" = unnamed_addr constant [18 x i8] c"max_outgoing_msgs\00" +@"$stringlit_867" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_875" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_880" = unnamed_addr constant [5 x i8] c"Reset" +@"$stringlit_883" = unnamed_addr constant [7 x i8] c"_amount" +@"$stored_strings_933" = unnamed_addr constant [15 x i8] c"stored_strings\00" +@"$stringlit_991" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_996" = unnamed_addr constant [26 x i8] c"Support contract not reset" +@"$outgoing_amount_1010" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$max_outgoing_msgs_1025" = unnamed_addr constant [18 x i8] c"max_outgoing_msgs\00" +@"$_balance_1048" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_1098" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_1103" = unnamed_addr constant [30 x i8] c"Insufficient balance for tests" +@"$outgoing_amount_1120" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$stringlit_1146" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1154" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1159" = unnamed_addr constant [9 x i8] c"NonAccept" +@"$stringlit_1162" = unnamed_addr constant [7 x i8] c"_amount" +@"$test_string_1_1214" = unnamed_addr constant [14 x i8] c"test_string_1\00" +@"$stringlit_1240" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1248" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1253" = unnamed_addr constant [11 x i8] c"StoreString" +@"$stringlit_1256" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_1263" = unnamed_addr constant [1 x i8] c"s" +@"$test_string_2_1298" = unnamed_addr constant [14 x i8] c"test_string_2\00" +@"$stringlit_1324" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1332" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1337" = unnamed_addr constant [11 x i8] c"StoreString" +@"$stringlit_1340" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_1347" = unnamed_addr constant [1 x i8] c"s" +@"$stringlit_1393" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1401" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1406" = unnamed_addr constant [20 x i8] c"Finalize_Test_Send_1" +@"$stringlit_1409" = unnamed_addr constant [7 x i8] c"_amount" +@"$test_string_1_1453" = unnamed_addr constant [14 x i8] c"test_string_1\00" +@"$test_string_2_1468" = unnamed_addr constant [14 x i8] c"test_string_2\00" +@"$stored_strings_1530" = unnamed_addr constant [15 x i8] c"stored_strings\00" +@"$stringlit_1591" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_1596" = unnamed_addr constant [16 x i8] c"Test_Send failed" +@"$stringlit_1599" = unnamed_addr constant [7 x i8] c"test_no" +@"$stringlit_1606" = unnamed_addr constant [8 x i8] c"expected" +@"$stringlit_1614" = unnamed_addr constant [6 x i8] c"actual" +@"$test_string_1_1671" = unnamed_addr constant [14 x i8] c"test_string_1\00" +@"$stringlit_1697" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1705" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1710" = unnamed_addr constant [11 x i8] c"StoreString" +@"$stringlit_1713" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_1720" = unnamed_addr constant [1 x i8] c"s" +@"$test_string_2_1729" = unnamed_addr constant [14 x i8] c"test_string_2\00" +@"$stringlit_1755" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1763" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1768" = unnamed_addr constant [11 x i8] c"StoreString" +@"$stringlit_1771" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_1778" = unnamed_addr constant [1 x i8] c"s" +@"$stringlit_1841" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1849" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1854" = unnamed_addr constant [20 x i8] c"Finalize_Test_Send_2" +@"$stringlit_1857" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_1953" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1961" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1966" = unnamed_addr constant [18 x i8] c"Test_Send_3_Helper" +@"$stringlit_1969" = unnamed_addr constant [7 x i8] c"_amount" +@"$test_string_2_2003" = unnamed_addr constant [14 x i8] c"test_string_2\00" +@"$stringlit_2029" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2037" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2042" = unnamed_addr constant [11 x i8] c"StoreString" +@"$stringlit_2045" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_2052" = unnamed_addr constant [1 x i8] c"s" +@"$stringlit_2098" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2106" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2111" = unnamed_addr constant [20 x i8] c"Finalize_Test_Send_3" +@"$stringlit_2114" = unnamed_addr constant [7 x i8] c"_amount" +@"$test_string_1_2158" = unnamed_addr constant [14 x i8] c"test_string_1\00" +@"$stringlit_2184" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2192" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2197" = unnamed_addr constant [11 x i8] c"StoreString" +@"$stringlit_2200" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_2207" = unnamed_addr constant [1 x i8] c"s" +@"$_balance_2280" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_2329" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_2334" = unnamed_addr constant [18 x i8] c"Unexpected balance" +@"$stringlit_2337" = unnamed_addr constant [8 x i8] c"expected" +@"$stringlit_2344" = unnamed_addr constant [6 x i8] c"actual" +@"$_balance_2385" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_2436" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_2441" = unnamed_addr constant [54 x i8] c"Main contract read unexpected support contract balance" +@"$stringlit_2444" = unnamed_addr constant [8 x i8] c"expected" +@"$stringlit_2451" = unnamed_addr constant [6 x i8] c"actual" +@"$outgoing_amount_2499" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$_balance_2514" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_2540" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2548" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2553" = unnamed_addr constant [6 x i8] c"Accept" +@"$stringlit_2556" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_2618" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2626" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2631" = unnamed_addr constant [9 x i8] c"NonAccept" +@"$stringlit_2634" = unnamed_addr constant [7 x i8] c"_amount" +@"$outgoing_amount_2702" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$_balance_2717" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_2743" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2751" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2756" = unnamed_addr constant [6 x i8] c"Accept" +@"$stringlit_2759" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_2779" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2787" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2792" = unnamed_addr constant [9 x i8] c"NonAccept" +@"$stringlit_2795" = unnamed_addr constant [7 x i8] c"_amount" +@"$outgoing_amount_2888" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$_balance_2903" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_2929" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2937" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2942" = unnamed_addr constant [6 x i8] c"Accept" +@"$stringlit_2945" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_2999" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3007" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3012" = unnamed_addr constant [18 x i8] c"CheckSenderBalance" +@"$stringlit_3015" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3022" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$outgoing_amount_3074" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$_balance_3089" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_3115" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3123" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3128" = unnamed_addr constant [9 x i8] c"NonAccept" +@"$stringlit_3131" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3177" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3185" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3190" = unnamed_addr constant [18 x i8] c"CheckSenderBalance" +@"$stringlit_3193" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3200" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$outgoing_amount_3252" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$stringlit_3278" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3286" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3291" = unnamed_addr constant [21 x i8] c"AcceptAndCheckBalance" +@"$stringlit_3294" = unnamed_addr constant [7 x i8] c"_amount" +@"$_balance_3329" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_3365" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3373" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3378" = unnamed_addr constant [21 x i8] c"CheckRecipientBalance" +@"$stringlit_3381" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3388" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$outgoing_amount_3440" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$stringlit_3466" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3474" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3479" = unnamed_addr constant [9 x i8] c"NonAccept" +@"$stringlit_3482" = unnamed_addr constant [7 x i8] c"_amount" +@"$_balance_3517" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_3545" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3553" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3558" = unnamed_addr constant [21 x i8] c"CheckRecipientBalance" +@"$stringlit_3561" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3568" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$outgoing_amount_3620" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$stringlit_3646" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3654" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3659" = unnamed_addr constant [27 x i8] c"AcceptAndCheckSenderBalance" +@"$stringlit_3662" = unnamed_addr constant [7 x i8] c"_amount" +@"$outgoing_amount_3714" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$stringlit_3740" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3748" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3753" = unnamed_addr constant [26 x i8] c"AcceptTwiceAndCheckBalance" +@"$stringlit_3756" = unnamed_addr constant [7 x i8] c"_amount" +@"$outgoing_amount_3801" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$_balance_3816" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_3842" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3850" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3855" = unnamed_addr constant [26 x i8] c"AcceptTwiceAndCheckBalance" +@"$stringlit_3858" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3912" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3920" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3925" = unnamed_addr constant [18 x i8] c"CheckSenderBalance" +@"$stringlit_3928" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3935" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$outgoing_amount_3987" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$stringlit_4013" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_4021" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_4026" = unnamed_addr constant [26 x i8] c"AcceptTwiceAndCheckBalance" +@"$stringlit_4029" = unnamed_addr constant [7 x i8] c"_amount" +@"$_balance_4064" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_4100" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_4108" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_4113" = unnamed_addr constant [21 x i8] c"CheckRecipientBalance" +@"$stringlit_4116" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_4123" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$_balance_4175" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_4201" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_4209" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_4214" = unnamed_addr constant [6 x i8] c"Accept" +@"$stringlit_4217" = unnamed_addr constant [7 x i8] c"_amount" +@_tydescr_table = constant [21 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %_TyDescrTy_Typ* @"$TyDescr_Event_111", %_TyDescrTy_Typ* @"$TyDescr_Int64_93", %_TyDescrTy_Typ* @"$TyDescr_Addr_128", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_123", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ* @"$TyDescr_Uint256_103", %_TyDescrTy_Typ* @"$TyDescr_Uint32_91", %_TyDescrTy_Typ* @"$TyDescr_Uint64_95", %_TyDescrTy_Typ* @"$TyDescr_Bnum_107", %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ* @"$TyDescr_Addr_129", %_TyDescrTy_Typ* @"$TyDescr_Exception_113", %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_124", %_TyDescrTy_Typ* @"$TyDescr_Int256_101", %_TyDescrTy_Typ* @"$TyDescr_Int128_97", %_TyDescrTy_Typ* @"$TyDescr_Bystr_115", %_TyDescrTy_Typ* @"$TyDescr_Message_109", %_TyDescrTy_Typ* @"$TyDescr_Int32_89"] +@_tydescr_table_length = constant i32 21 +@"$pname__scilla_version_4261" = unnamed_addr constant [15 x i8] c"_scilla_version" +@"$pname__this_address_4262" = unnamed_addr constant [13 x i8] c"_this_address" +@"$pname__creation_block_4263" = unnamed_addr constant [15 x i8] c"_creation_block" +@"$pname_support_contract_4264" = unnamed_addr constant [16 x i8] c"support_contract" +@_contract_parameters = constant [4 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__scilla_version_4261", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Uint32_91" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$pname__this_address_4262", i32 0, i32 0), i32 13 }, %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__creation_block_4263", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Bnum_107" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$pname_support_contract_4264", i32 0, i32 0), i32 16 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_129" }] +@_contract_parameters_length = constant i32 4 +@"$tpname__amount_4265" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4266" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4267" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Reset_4268" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4265", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4266", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4267", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Reset_4269" = unnamed_addr constant [5 x i8] c"Reset" +@"$tpname__amount_4270" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4271" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4272" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Insufficient_Balance_4273" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4270", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4271", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4272", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Insufficient_Balance_4274" = unnamed_addr constant [25 x i8] c"Test_Insufficient_Balance" +@"$tpname__amount_4275" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4276" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4277" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_1_4278" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4275", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4276", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4277", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_1_4279" = unnamed_addr constant [11 x i8] c"Test_Send_1" +@"$tpname__amount_4280" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4281" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4282" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Finalize_Test_Send_1_4283" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4280", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4281", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4282", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Finalize_Test_Send_1_4284" = unnamed_addr constant [20 x i8] c"Finalize_Test_Send_1" +@"$tpname__amount_4285" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4286" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4287" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_2_4288" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4285", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4286", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4287", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_2_4289" = unnamed_addr constant [11 x i8] c"Test_Send_2" +@"$tpname__amount_4290" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4291" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4292" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Finalize_Test_Send_2_4293" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4290", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4291", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4292", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Finalize_Test_Send_2_4294" = unnamed_addr constant [20 x i8] c"Finalize_Test_Send_2" +@"$tpname__amount_4295" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4296" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4297" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_3_4298" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4295", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4296", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4297", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_3_4299" = unnamed_addr constant [11 x i8] c"Test_Send_3" +@"$tpname__amount_4300" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4301" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4302" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_3_Helper_4303" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4300", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4301", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4302", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_3_Helper_4304" = unnamed_addr constant [18 x i8] c"Test_Send_3_Helper" +@"$tpname__amount_4305" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4306" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4307" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Finalize_Test_Send_3_4308" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4305", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4306", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4307", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Finalize_Test_Send_3_4309" = unnamed_addr constant [20 x i8] c"Finalize_Test_Send_3" +@"$tpname__amount_4310" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4311" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4312" = unnamed_addr constant [7 x i8] c"_sender" +@"$tpname_expected_balance_4313" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$tparams_CheckSenderBalance_4314" = unnamed_addr constant [4 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4310", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4311", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4312", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$tpname_expected_balance_4313", i32 0, i32 0), i32 16 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }] +@"$tname_CheckSenderBalance_4315" = unnamed_addr constant [18 x i8] c"CheckSenderBalance" +@"$tpname__amount_4316" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4317" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4318" = unnamed_addr constant [7 x i8] c"_sender" +@"$tpname_expected_balance_4319" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$tparams_CheckRecipientBalance_4320" = unnamed_addr constant [4 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4316", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4317", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4318", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$tpname_expected_balance_4319", i32 0, i32 0), i32 16 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }] +@"$tname_CheckRecipientBalance_4321" = unnamed_addr constant [21 x i8] c"CheckRecipientBalance" +@"$tpname__amount_4322" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4323" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4324" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_4_4325" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4322", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4323", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4324", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_4_4326" = unnamed_addr constant [11 x i8] c"Test_Send_4" +@"$tpname__amount_4327" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4328" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4329" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_5_4330" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4327", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4328", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4329", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_5_4331" = unnamed_addr constant [11 x i8] c"Test_Send_5" +@"$tpname__amount_4332" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4333" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4334" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_6_4335" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4332", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4333", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4334", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_6_4336" = unnamed_addr constant [11 x i8] c"Test_Send_6" +@"$tpname__amount_4337" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4338" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4339" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_7_4340" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4337", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4338", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4339", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_7_4341" = unnamed_addr constant [11 x i8] c"Test_Send_7" +@"$tpname__amount_4342" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4343" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4344" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_8_4345" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4342", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4343", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4344", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_8_4346" = unnamed_addr constant [11 x i8] c"Test_Send_8" +@"$tpname__amount_4347" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4348" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4349" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_9_4350" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4347", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4348", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4349", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_9_4351" = unnamed_addr constant [11 x i8] c"Test_Send_9" +@"$tpname__amount_4352" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4353" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4354" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_10_4355" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4352", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4353", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4354", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_10_4356" = unnamed_addr constant [12 x i8] c"Test_Send_10" +@"$tpname__amount_4357" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4358" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4359" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_11_4360" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4357", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4358", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4359", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_11_4361" = unnamed_addr constant [12 x i8] c"Test_Send_11" +@"$tpname__amount_4362" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4363" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4364" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_12_4365" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4362", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4363", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4364", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_12_4366" = unnamed_addr constant [12 x i8] c"Test_Send_12" +@"$tpname__amount_4367" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4368" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4369" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_13_4370" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4367", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4368", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4369", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_13_4371" = unnamed_addr constant [12 x i8] c"Test_Send_13" +@"$tpname__amount_4372" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4373" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4374" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_14_4375" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4372", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4373", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4374", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_14_4376" = unnamed_addr constant [12 x i8] c"Test_Send_14" +@_transition_parameters = constant [22 x %"$TransDescr_4260"] [%"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tname_Reset_4269", i32 0, i32 0), i32 5 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Reset_4268", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"$tname_Test_Insufficient_Balance_4274", i32 0, i32 0), i32 25 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Insufficient_Balance_4273", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_1_4279", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_1_4278", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$tname_Finalize_Test_Send_1_4284", i32 0, i32 0), i32 20 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Finalize_Test_Send_1_4283", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_2_4289", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_2_4288", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$tname_Finalize_Test_Send_2_4294", i32 0, i32 0), i32 20 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Finalize_Test_Send_2_4293", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_3_4299", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_3_4298", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$tname_Test_Send_3_Helper_4304", i32 0, i32 0), i32 18 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_3_Helper_4303", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$tname_Finalize_Test_Send_3_4309", i32 0, i32 0), i32 20 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Finalize_Test_Send_3_4308", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$tname_CheckSenderBalance_4315", i32 0, i32 0), i32 18 }, i32 4, %"$ParamDescr_4259"* getelementptr inbounds ([4 x %"$ParamDescr_4259"], [4 x %"$ParamDescr_4259"]* @"$tparams_CheckSenderBalance_4314", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$tname_CheckRecipientBalance_4321", i32 0, i32 0), i32 21 }, i32 4, %"$ParamDescr_4259"* getelementptr inbounds ([4 x %"$ParamDescr_4259"], [4 x %"$ParamDescr_4259"]* @"$tparams_CheckRecipientBalance_4320", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_4_4326", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_4_4325", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_5_4331", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_5_4330", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_6_4336", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_6_4335", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_7_4341", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_7_4340", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_8_4346", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_8_4345", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_9_4351", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_9_4350", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$tname_Test_Send_10_4356", i32 0, i32 0), i32 12 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_10_4355", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$tname_Test_Send_11_4361", i32 0, i32 0), i32 12 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_11_4360", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$tname_Test_Send_12_4366", i32 0, i32 0), i32 12 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_12_4365", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$tname_Test_Send_13_4371", i32 0, i32 0), i32 12 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_13_4370", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$tname_Test_Send_14_4376", i32 0, i32 0), i32 12 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_14_4375", i32 0, i32 0) }] +@_transition_parameters_length = constant i32 22 + +define internal %TName_Bool* @"$fundef_79"(%"$$fundef_79_env_179"* %0, %String %1) !dbg !4 { +entry: + %"$$fundef_79_env_x_707" = getelementptr inbounds %"$$fundef_79_env_179", %"$$fundef_79_env_179"* %0, i32 0, i32 0 + %"$x_envload_708" = load %String, %String* %"$$fundef_79_env_x_707", align 8 + %x = alloca %String, align 8 + store %String %"$x_envload_708", %String* %x, align 8 + %"$retval_80" = alloca %TName_Bool*, align 8 + %"$execptr_load_709" = load i8*, i8** @_execptr, align 8 + %"$x_710" = load %String, %String* %x, align 8 + %"$eq_call_711" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_709", %String %"$x_710", %String %1), !dbg !8 + store %TName_Bool* %"$eq_call_711", %TName_Bool** %"$retval_80", align 8, !dbg !8 + %"$$retval_80_713" = load %TName_Bool*, %TName_Bool** %"$retval_80", align 8 + ret %TName_Bool* %"$$retval_80_713" +} + +define internal { %TName_Bool* (i8*, %String)*, i8* } @"$fundef_77"(%"$$fundef_77_env_180"* %0, %String %1) !dbg !9 { +entry: + %"$retval_78" = alloca { %TName_Bool* (i8*, %String)*, i8* }, align 8 + %"$gasrem_696" = load i64, i64* @_gasrem, align 8 + %"$gascmp_697" = icmp ugt i64 1, %"$gasrem_696" + br i1 %"$gascmp_697", label %"$out_of_gas_698", label %"$have_gas_699" + +"$out_of_gas_698": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_699" + +"$have_gas_699": ; preds = %"$out_of_gas_698", %entry + %"$consume_700" = sub i64 %"$gasrem_696", 1 + store i64 %"$consume_700", i64* @_gasrem, align 8 + %"$$fundef_79_envp_701_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_79_envp_701_salloc" = call i8* @_salloc(i8* %"$$fundef_79_envp_701_load", i64 16) + %"$$fundef_79_envp_701" = bitcast i8* %"$$fundef_79_envp_701_salloc" to %"$$fundef_79_env_179"* + %"$$fundef_79_env_voidp_703" = bitcast %"$$fundef_79_env_179"* %"$$fundef_79_envp_701" to i8* + %"$$fundef_79_cloval_704" = insertvalue { %TName_Bool* (i8*, %String)*, i8* } { %TName_Bool* (i8*, %String)* bitcast (%TName_Bool* (%"$$fundef_79_env_179"*, %String)* @"$fundef_79" to %TName_Bool* (i8*, %String)*), i8* undef }, i8* %"$$fundef_79_env_voidp_703", 1 + %"$$fundef_79_env_x_705" = getelementptr inbounds %"$$fundef_79_env_179", %"$$fundef_79_env_179"* %"$$fundef_79_envp_701", i32 0, i32 0 + store %String %1, %String* %"$$fundef_79_env_x_705", align 8 + store { %TName_Bool* (i8*, %String)*, i8* } %"$$fundef_79_cloval_704", { %TName_Bool* (i8*, %String)*, i8* }* %"$retval_78", align 8, !dbg !10 + %"$$retval_78_706" = load { %TName_Bool* (i8*, %String)*, i8* }, { %TName_Bool* (i8*, %String)*, i8* }* %"$retval_78", align 8 + ret { %TName_Bool* (i8*, %String)*, i8* } %"$$retval_78_706" +} + +define internal %TName_List_Message* @"$fundef_81"(%"$$fundef_81_env_181"* %0, i8* %1) !dbg !11 { +entry: + %"$retval_82" = alloca %TName_List_Message*, align 8 + %"$gasrem_671" = load i64, i64* @_gasrem, align 8 + %"$gascmp_672" = icmp ugt i64 1, %"$gasrem_671" + br i1 %"$gascmp_672", label %"$out_of_gas_673", label %"$have_gas_674" + +"$out_of_gas_673": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_674" + +"$have_gas_674": ; preds = %"$out_of_gas_673", %entry + %"$consume_675" = sub i64 %"$gasrem_671", 1 + store i64 %"$consume_675", i64* @_gasrem, align 8 + %mty = alloca %TName_List_Message*, align 8 + %"$gasrem_676" = load i64, i64* @_gasrem, align 8 + %"$gascmp_677" = icmp ugt i64 1, %"$gasrem_676" + br i1 %"$gascmp_677", label %"$out_of_gas_678", label %"$have_gas_679" + +"$out_of_gas_678": ; preds = %"$have_gas_674" + call void @_out_of_gas() + br label %"$have_gas_679" + +"$have_gas_679": ; preds = %"$out_of_gas_678", %"$have_gas_674" + %"$consume_680" = sub i64 %"$gasrem_676", 1 + store i64 %"$consume_680", i64* @_gasrem, align 8 + %"$adtval_681_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_681_salloc" = call i8* @_salloc(i8* %"$adtval_681_load", i64 1) + %"$adtval_681" = bitcast i8* %"$adtval_681_salloc" to %CName_Nil_Message* + %"$adtgep_682" = getelementptr inbounds %CName_Nil_Message, %CName_Nil_Message* %"$adtval_681", i32 0, i32 0 + store i8 1, i8* %"$adtgep_682", align 1 + %"$adtptr_683" = bitcast %CName_Nil_Message* %"$adtval_681" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_683", %TName_List_Message** %mty, align 8, !dbg !12 + %"$gasrem_684" = load i64, i64* @_gasrem, align 8 + %"$gascmp_685" = icmp ugt i64 1, %"$gasrem_684" + br i1 %"$gascmp_685", label %"$out_of_gas_686", label %"$have_gas_687" + +"$out_of_gas_686": ; preds = %"$have_gas_679" + call void @_out_of_gas() + br label %"$have_gas_687" + +"$have_gas_687": ; preds = %"$out_of_gas_686", %"$have_gas_679" + %"$consume_688" = sub i64 %"$gasrem_684", 1 + store i64 %"$consume_688", i64* @_gasrem, align 8 + %"$mty_689" = load %TName_List_Message*, %TName_List_Message** %mty, align 8 + %"$adtval_690_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_690_salloc" = call i8* @_salloc(i8* %"$adtval_690_load", i64 17) + %"$adtval_690" = bitcast i8* %"$adtval_690_salloc" to %CName_Cons_Message* + %"$adtgep_691" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_690", i32 0, i32 0 + store i8 0, i8* %"$adtgep_691", align 1 + %"$adtgep_692" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_690", i32 0, i32 1 + store i8* %1, i8** %"$adtgep_692", align 8 + %"$adtgep_693" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_690", i32 0, i32 2 + store %TName_List_Message* %"$mty_689", %TName_List_Message** %"$adtgep_693", align 8 + %"$adtptr_694" = bitcast %CName_Cons_Message* %"$adtval_690" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_694", %TName_List_Message** %"$retval_82", align 8, !dbg !13 + %"$$retval_82_695" = load %TName_List_Message*, %TName_List_Message** %"$retval_82", align 8 + ret %TName_List_Message* %"$$retval_82_695" +} + +define internal %TName_List_String* @"$fundef_71"(%"$$fundef_71_env_182"* %0, { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %1) !dbg !14 { +entry: + %"$$fundef_71_env_equal_587" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %0, i32 0, i32 0 + %"$equal_envload_588" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_71_env_equal_587", align 8 + %equal = alloca { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_envload_588", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + %"$$fundef_71_env_l1_589" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %0, i32 0, i32 1 + %"$l1_envload_590" = load %TName_List_String*, %TName_List_String** %"$$fundef_71_env_l1_589", align 8 + %l1 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$l1_envload_590", %TName_List_String** %l1, align 8 + %"$$fundef_71_env_x1_591" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %0, i32 0, i32 2 + %"$x1_envload_592" = load %String, %String* %"$$fundef_71_env_x1_591", align 8 + %x1 = alloca %String, align 8 + store %String %"$x1_envload_592", %String* %x1, align 8 + %"$$fundef_71_env_xs2_593" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %0, i32 0, i32 3 + %"$xs2_envload_594" = load %TName_List_String*, %TName_List_String** %"$$fundef_71_env_xs2_593", align 8 + %xs2 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$xs2_envload_594", %TName_List_String** %xs2, align 8 + %"$retval_72" = alloca %TName_List_String*, align 8 + %"$gasrem_595" = load i64, i64* @_gasrem, align 8 + %"$gascmp_596" = icmp ugt i64 2, %"$gasrem_595" + br i1 %"$gascmp_596", label %"$out_of_gas_597", label %"$have_gas_598" + +"$out_of_gas_597": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_598" + +"$have_gas_598": ; preds = %"$out_of_gas_597", %entry + %"$consume_599" = sub i64 %"$gasrem_595", 2 + store i64 %"$consume_599", i64* @_gasrem, align 8 + %"$xs2_601" = load %TName_List_String*, %TName_List_String** %xs2, align 8 + %"$xs2_tag_602" = getelementptr inbounds %TName_List_String, %TName_List_String* %"$xs2_601", i32 0, i32 0 + %"$xs2_tag_603" = load i8, i8* %"$xs2_tag_602", align 1 + switch i8 %"$xs2_tag_603", label %"$empty_default_604" [ + i8 0, label %"$Cons_605" + i8 1, label %"$Nil_662" + ], !dbg !16 + +"$Cons_605": ; preds = %"$have_gas_598" + %"$xs2_606" = bitcast %TName_List_String* %"$xs2_601" to %CName_Cons_String* + %"$x2_gep_607" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$xs2_606", i32 0, i32 1 + %"$x2_load_608" = load %String, %String* %"$x2_gep_607", align 8 + %x2 = alloca %String, align 8 + store %String %"$x2_load_608", %String* %x2, align 8 + %"$tl2_gep_609" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$xs2_606", i32 0, i32 2 + %"$tl2_load_610" = load %TName_List_String*, %TName_List_String** %"$tl2_gep_609", align 8 + %tl2 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$tl2_load_610", %TName_List_String** %tl2, align 8 + %"$gasrem_611" = load i64, i64* @_gasrem, align 8 + %"$gascmp_612" = icmp ugt i64 1, %"$gasrem_611" + br i1 %"$gascmp_612", label %"$out_of_gas_613", label %"$have_gas_614" + +"$out_of_gas_613": ; preds = %"$Cons_605" + call void @_out_of_gas() + br label %"$have_gas_614" + +"$have_gas_614": ; preds = %"$out_of_gas_613", %"$Cons_605" + %"$consume_615" = sub i64 %"$gasrem_611", 1 + store i64 %"$consume_615", i64* @_gasrem, align 8 + %eq_x1_x2 = alloca %TName_Bool*, align 8 + %"$gasrem_616" = load i64, i64* @_gasrem, align 8 + %"$gascmp_617" = icmp ugt i64 1, %"$gasrem_616" + br i1 %"$gascmp_617", label %"$out_of_gas_618", label %"$have_gas_619" + +"$out_of_gas_618": ; preds = %"$have_gas_614" + call void @_out_of_gas() + br label %"$have_gas_619" + +"$have_gas_619": ; preds = %"$out_of_gas_618", %"$have_gas_614" + %"$consume_620" = sub i64 %"$gasrem_616", 1 + store i64 %"$consume_620", i64* @_gasrem, align 8 + %"$equal_8" = alloca { %TName_Bool* (i8*, %String)*, i8* }, align 8 + %"$equal_621" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + %"$equal_fptr_622" = extractvalue { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_621", 0 + %"$equal_envptr_623" = extractvalue { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_621", 1 + %"$x1_624" = load %String, %String* %x1, align 8 + %"$equal_call_625" = call { %TName_Bool* (i8*, %String)*, i8* } %"$equal_fptr_622"(i8* %"$equal_envptr_623", %String %"$x1_624"), !dbg !17 + store { %TName_Bool* (i8*, %String)*, i8* } %"$equal_call_625", { %TName_Bool* (i8*, %String)*, i8* }* %"$equal_8", align 8, !dbg !17 + %"$equal_9" = alloca %TName_Bool*, align 8 + %"$$equal_8_626" = load { %TName_Bool* (i8*, %String)*, i8* }, { %TName_Bool* (i8*, %String)*, i8* }* %"$equal_8", align 8 + %"$$equal_8_fptr_627" = extractvalue { %TName_Bool* (i8*, %String)*, i8* } %"$$equal_8_626", 0 + %"$$equal_8_envptr_628" = extractvalue { %TName_Bool* (i8*, %String)*, i8* } %"$$equal_8_626", 1 + %"$x2_629" = load %String, %String* %x2, align 8 + %"$$equal_8_call_630" = call %TName_Bool* %"$$equal_8_fptr_627"(i8* %"$$equal_8_envptr_628", %String %"$x2_629"), !dbg !17 + store %TName_Bool* %"$$equal_8_call_630", %TName_Bool** %"$equal_9", align 8, !dbg !17 + %"$$equal_9_631" = load %TName_Bool*, %TName_Bool** %"$equal_9", align 8 + store %TName_Bool* %"$$equal_9_631", %TName_Bool** %eq_x1_x2, align 8, !dbg !17 + %"$gasrem_632" = load i64, i64* @_gasrem, align 8 + %"$gascmp_633" = icmp ugt i64 2, %"$gasrem_632" + br i1 %"$gascmp_633", label %"$out_of_gas_634", label %"$have_gas_635" + +"$out_of_gas_634": ; preds = %"$have_gas_619" + call void @_out_of_gas() + br label %"$have_gas_635" + +"$have_gas_635": ; preds = %"$out_of_gas_634", %"$have_gas_619" + %"$consume_636" = sub i64 %"$gasrem_632", 2 + store i64 %"$consume_636", i64* @_gasrem, align 8 + %"$eq_x1_x2_638" = load %TName_Bool*, %TName_Bool** %eq_x1_x2, align 8 + %"$eq_x1_x2_tag_639" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_x1_x2_638", i32 0, i32 0 + %"$eq_x1_x2_tag_640" = load i8, i8* %"$eq_x1_x2_tag_639", align 1 + switch i8 %"$eq_x1_x2_tag_640", label %"$empty_default_641" [ + i8 0, label %"$True_642" + i8 1, label %"$False_654" + ], !dbg !20 + +"$True_642": ; preds = %"$have_gas_635" + %"$eq_x1_x2_643" = bitcast %TName_Bool* %"$eq_x1_x2_638" to %CName_True* + %"$gasrem_644" = load i64, i64* @_gasrem, align 8 + %"$gascmp_645" = icmp ugt i64 1, %"$gasrem_644" + br i1 %"$gascmp_645", label %"$out_of_gas_646", label %"$have_gas_647" + +"$out_of_gas_646": ; preds = %"$True_642" + call void @_out_of_gas() + br label %"$have_gas_647" + +"$have_gas_647": ; preds = %"$out_of_gas_646", %"$True_642" + %"$consume_648" = sub i64 %"$gasrem_644", 1 + store i64 %"$consume_648", i64* @_gasrem, align 8 + %"$recurse_10" = alloca %TName_List_String*, align 8 + %"$recurse_fptr_649" = extractvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %1, 0 + %"$recurse_envptr_650" = extractvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %1, 1 + %"$tl2_651" = load %TName_List_String*, %TName_List_String** %tl2, align 8 + %"$recurse_call_652" = call %TName_List_String* %"$recurse_fptr_649"(i8* %"$recurse_envptr_650", %TName_List_String* %"$tl2_651"), !dbg !21 + store %TName_List_String* %"$recurse_call_652", %TName_List_String** %"$recurse_10", align 8, !dbg !21 + %"$$recurse_10_653" = load %TName_List_String*, %TName_List_String** %"$recurse_10", align 8 + store %TName_List_String* %"$$recurse_10_653", %TName_List_String** %"$retval_72", align 8, !dbg !21 + br label %"$matchsucc_637" + +"$False_654": ; preds = %"$have_gas_635" + %"$eq_x1_x2_655" = bitcast %TName_Bool* %"$eq_x1_x2_638" to %CName_False* + %"$gasrem_656" = load i64, i64* @_gasrem, align 8 + %"$gascmp_657" = icmp ugt i64 1, %"$gasrem_656" + br i1 %"$gascmp_657", label %"$out_of_gas_658", label %"$have_gas_659" + +"$out_of_gas_658": ; preds = %"$False_654" + call void @_out_of_gas() + br label %"$have_gas_659" + +"$have_gas_659": ; preds = %"$out_of_gas_658", %"$False_654" + %"$consume_660" = sub i64 %"$gasrem_656", 1 + store i64 %"$consume_660", i64* @_gasrem, align 8 + %"$l1_661" = load %TName_List_String*, %TName_List_String** %l1, align 8 + store %TName_List_String* %"$l1_661", %TName_List_String** %"$retval_72", align 8, !dbg !24 + br label %"$matchsucc_637" + +"$empty_default_641": ; preds = %"$have_gas_635" + br label %"$matchsucc_637" + +"$matchsucc_637": ; preds = %"$have_gas_659", %"$have_gas_647", %"$empty_default_641" + br label %"$matchsucc_600" + +"$Nil_662": ; preds = %"$have_gas_598" + %"$xs2_663" = bitcast %TName_List_String* %"$xs2_601" to %CName_Nil_String* + %"$gasrem_664" = load i64, i64* @_gasrem, align 8 + %"$gascmp_665" = icmp ugt i64 1, %"$gasrem_664" + br i1 %"$gascmp_665", label %"$out_of_gas_666", label %"$have_gas_667" + +"$out_of_gas_666": ; preds = %"$Nil_662" + call void @_out_of_gas() + br label %"$have_gas_667" + +"$have_gas_667": ; preds = %"$out_of_gas_666", %"$Nil_662" + %"$consume_668" = sub i64 %"$gasrem_664", 1 + store i64 %"$consume_668", i64* @_gasrem, align 8 + %"$l1_669" = load %TName_List_String*, %TName_List_String** %l1, align 8 + store %TName_List_String* %"$l1_669", %TName_List_String** %"$retval_72", align 8, !dbg !26 + br label %"$matchsucc_600" + +"$empty_default_604": ; preds = %"$have_gas_598" + br label %"$matchsucc_600" + +"$matchsucc_600": ; preds = %"$have_gas_667", %"$matchsucc_637", %"$empty_default_604" + %"$$retval_72_670" = load %TName_List_String*, %TName_List_String** %"$retval_72", align 8 + ret %TName_List_String* %"$$retval_72_670" +} + +define internal { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } @"$fundef_69"(%"$$fundef_69_env_183"* %0, %String %1) !dbg !28 { +entry: + %"$$fundef_69_env_equal_564" = getelementptr inbounds %"$$fundef_69_env_183", %"$$fundef_69_env_183"* %0, i32 0, i32 0 + %"$equal_envload_565" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_69_env_equal_564", align 8 + %equal = alloca { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_envload_565", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + %"$$fundef_69_env_l1_566" = getelementptr inbounds %"$$fundef_69_env_183", %"$$fundef_69_env_183"* %0, i32 0, i32 1 + %"$l1_envload_567" = load %TName_List_String*, %TName_List_String** %"$$fundef_69_env_l1_566", align 8 + %l1 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$l1_envload_567", %TName_List_String** %l1, align 8 + %"$$fundef_69_env_xs2_568" = getelementptr inbounds %"$$fundef_69_env_183", %"$$fundef_69_env_183"* %0, i32 0, i32 2 + %"$xs2_envload_569" = load %TName_List_String*, %TName_List_String** %"$$fundef_69_env_xs2_568", align 8 + %xs2 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$xs2_envload_569", %TName_List_String** %xs2, align 8 + %"$retval_70" = alloca { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }, align 8 + %"$gasrem_570" = load i64, i64* @_gasrem, align 8 + %"$gascmp_571" = icmp ugt i64 1, %"$gasrem_570" + br i1 %"$gascmp_571", label %"$out_of_gas_572", label %"$have_gas_573" + +"$out_of_gas_572": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_573" + +"$have_gas_573": ; preds = %"$out_of_gas_572", %entry + %"$consume_574" = sub i64 %"$gasrem_570", 1 + store i64 %"$consume_574", i64* @_gasrem, align 8 + %"$$fundef_71_envp_575_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_71_envp_575_salloc" = call i8* @_salloc(i8* %"$$fundef_71_envp_575_load", i64 48) + %"$$fundef_71_envp_575" = bitcast i8* %"$$fundef_71_envp_575_salloc" to %"$$fundef_71_env_182"* + %"$$fundef_71_env_voidp_577" = bitcast %"$$fundef_71_env_182"* %"$$fundef_71_envp_575" to i8* + %"$$fundef_71_cloval_578" = insertvalue { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })* bitcast (%TName_List_String* (%"$$fundef_71_env_182"*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })* @"$fundef_71" to %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*), i8* undef }, i8* %"$$fundef_71_env_voidp_577", 1 + %"$$fundef_71_env_equal_579" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %"$$fundef_71_envp_575", i32 0, i32 0 + %"$equal_580" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_580", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_71_env_equal_579", align 8 + %"$$fundef_71_env_l1_581" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %"$$fundef_71_envp_575", i32 0, i32 1 + %"$l1_582" = load %TName_List_String*, %TName_List_String** %l1, align 8 + store %TName_List_String* %"$l1_582", %TName_List_String** %"$$fundef_71_env_l1_581", align 8 + %"$$fundef_71_env_x1_583" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %"$$fundef_71_envp_575", i32 0, i32 2 + store %String %1, %String* %"$$fundef_71_env_x1_583", align 8 + %"$$fundef_71_env_xs2_584" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %"$$fundef_71_envp_575", i32 0, i32 3 + %"$xs2_585" = load %TName_List_String*, %TName_List_String** %xs2, align 8 + store %TName_List_String* %"$xs2_585", %TName_List_String** %"$$fundef_71_env_xs2_584", align 8 + store { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$fundef_71_cloval_578", { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }* %"$retval_70", align 8, !dbg !29 + %"$$retval_70_586" = load { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }, { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }* %"$retval_70", align 8 + ret { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$retval_70_586" +} + +define internal { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } @"$fundef_67"(%"$$fundef_67_env_184"* %0, %TName_List_String* %1) !dbg !30 { +entry: + %"$$fundef_67_env_equal_545" = getelementptr inbounds %"$$fundef_67_env_184", %"$$fundef_67_env_184"* %0, i32 0, i32 0 + %"$equal_envload_546" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_67_env_equal_545", align 8 + %equal = alloca { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_envload_546", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + %"$$fundef_67_env_l1_547" = getelementptr inbounds %"$$fundef_67_env_184", %"$$fundef_67_env_184"* %0, i32 0, i32 1 + %"$l1_envload_548" = load %TName_List_String*, %TName_List_String** %"$$fundef_67_env_l1_547", align 8 + %l1 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$l1_envload_548", %TName_List_String** %l1, align 8 + %"$retval_68" = alloca { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }, align 8 + %"$gasrem_549" = load i64, i64* @_gasrem, align 8 + %"$gascmp_550" = icmp ugt i64 1, %"$gasrem_549" + br i1 %"$gascmp_550", label %"$out_of_gas_551", label %"$have_gas_552" + +"$out_of_gas_551": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_552" + +"$have_gas_552": ; preds = %"$out_of_gas_551", %entry + %"$consume_553" = sub i64 %"$gasrem_549", 1 + store i64 %"$consume_553", i64* @_gasrem, align 8 + %"$$fundef_69_envp_554_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_69_envp_554_salloc" = call i8* @_salloc(i8* %"$$fundef_69_envp_554_load", i64 32) + %"$$fundef_69_envp_554" = bitcast i8* %"$$fundef_69_envp_554_salloc" to %"$$fundef_69_env_183"* + %"$$fundef_69_env_voidp_556" = bitcast %"$$fundef_69_env_183"* %"$$fundef_69_envp_554" to i8* + %"$$fundef_69_cloval_557" = insertvalue { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)* bitcast ({ %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (%"$$fundef_69_env_183"*, %String)* @"$fundef_69" to { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*), i8* undef }, i8* %"$$fundef_69_env_voidp_556", 1 + %"$$fundef_69_env_equal_558" = getelementptr inbounds %"$$fundef_69_env_183", %"$$fundef_69_env_183"* %"$$fundef_69_envp_554", i32 0, i32 0 + %"$equal_559" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_559", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_69_env_equal_558", align 8 + %"$$fundef_69_env_l1_560" = getelementptr inbounds %"$$fundef_69_env_183", %"$$fundef_69_env_183"* %"$$fundef_69_envp_554", i32 0, i32 1 + %"$l1_561" = load %TName_List_String*, %TName_List_String** %l1, align 8 + store %TName_List_String* %"$l1_561", %TName_List_String** %"$$fundef_69_env_l1_560", align 8 + %"$$fundef_69_env_xs2_562" = getelementptr inbounds %"$$fundef_69_env_183", %"$$fundef_69_env_183"* %"$$fundef_69_envp_554", i32 0, i32 2 + store %TName_List_String* %1, %TName_List_String** %"$$fundef_69_env_xs2_562", align 8 + store { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } %"$$fundef_69_cloval_557", { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }* %"$retval_68", align 8, !dbg !31 + %"$$retval_68_563" = load { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }, { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }* %"$retval_68", align 8 + ret { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } %"$$retval_68_563" +} + +define internal %TName_Bool* @"$fundef_65"(%"$$fundef_65_env_185"* %0, %TName_List_String* %1) !dbg !32 { +entry: + %"$$fundef_65_env_equal_438" = getelementptr inbounds %"$$fundef_65_env_185", %"$$fundef_65_env_185"* %0, i32 0, i32 0 + %"$equal_envload_439" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_65_env_equal_438", align 8 + %equal = alloca { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_envload_439", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + %"$$fundef_65_env_l1_440" = getelementptr inbounds %"$$fundef_65_env_185", %"$$fundef_65_env_185"* %0, i32 0, i32 1 + %"$l1_envload_441" = load %TName_List_String*, %TName_List_String** %"$$fundef_65_env_l1_440", align 8 + %l1 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$l1_envload_441", %TName_List_String** %l1, align 8 + %"$$fundef_65_env_list_foldk_442" = getelementptr inbounds %"$$fundef_65_env_185", %"$$fundef_65_env_185"* %0, i32 0, i32 2 + %"$list_foldk_envload_443" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_65_env_list_foldk_442", align 8 + %list_foldk = alloca { i8*, i8* }*, align 8 + store { i8*, i8* }* %"$list_foldk_envload_443", { i8*, i8* }** %list_foldk, align 8 + %"$retval_66" = alloca %TName_Bool*, align 8 + %"$gasrem_444" = load i64, i64* @_gasrem, align 8 + %"$gascmp_445" = icmp ugt i64 1, %"$gasrem_444" + br i1 %"$gascmp_445", label %"$out_of_gas_446", label %"$have_gas_447" + +"$out_of_gas_446": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_447" + +"$have_gas_447": ; preds = %"$out_of_gas_446", %entry + %"$consume_448" = sub i64 %"$gasrem_444", 1 + store i64 %"$consume_448", i64* @_gasrem, align 8 + %foldk = alloca { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }, align 8 + %"$gasrem_449" = load i64, i64* @_gasrem, align 8 + %"$gascmp_450" = icmp ugt i64 1, %"$gasrem_449" + br i1 %"$gascmp_450", label %"$out_of_gas_451", label %"$have_gas_452" + +"$out_of_gas_451": ; preds = %"$have_gas_447" + call void @_out_of_gas() + br label %"$have_gas_452" + +"$have_gas_452": ; preds = %"$out_of_gas_451", %"$have_gas_447" + %"$consume_453" = sub i64 %"$gasrem_449", 1 + store i64 %"$consume_453", i64* @_gasrem, align 8 + %"$list_foldk_454" = load { i8*, i8* }*, { i8*, i8* }** %list_foldk, align 8 + %"$list_foldk_455" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldk_454", i32 0 + %"$list_foldk_456" = bitcast { i8*, i8* }* %"$list_foldk_455" to { { i8*, i8* }* (i8*)*, i8* }* + %"$list_foldk_457" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldk_456", align 8 + %"$list_foldk_fptr_458" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldk_457", 0 + %"$list_foldk_envptr_459" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldk_457", 1 + %"$list_foldk_call_460" = call { i8*, i8* }* %"$list_foldk_fptr_458"(i8* %"$list_foldk_envptr_459"), !dbg !33 + %"$list_foldk_461" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldk_call_460", i32 1 + %"$list_foldk_462" = bitcast { i8*, i8* }* %"$list_foldk_461" to { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_foldk_463" = load { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldk_462", align 8 + %"$list_foldk_fptr_464" = extractvalue { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldk_463", 0 + %"$list_foldk_envptr_465" = extractvalue { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldk_463", 1 + %"$list_foldk_call_466" = call { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } %"$list_foldk_fptr_464"(i8* %"$list_foldk_envptr_465"), !dbg !33 + store { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } %"$list_foldk_call_466", { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }* %foldk, align 8, !dbg !34 + %"$gasrem_467" = load i64, i64* @_gasrem, align 8 + %"$gascmp_468" = icmp ugt i64 1, %"$gasrem_467" + br i1 %"$gascmp_468", label %"$out_of_gas_469", label %"$have_gas_470" + +"$out_of_gas_469": ; preds = %"$have_gas_452" + call void @_out_of_gas() + br label %"$have_gas_470" + +"$have_gas_470": ; preds = %"$out_of_gas_469", %"$have_gas_452" + %"$consume_471" = sub i64 %"$gasrem_467", 1 + store i64 %"$consume_471", i64* @_gasrem, align 8 + %iter = alloca { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_472" = load i64, i64* @_gasrem, align 8 + %"$gascmp_473" = icmp ugt i64 1, %"$gasrem_472" + br i1 %"$gascmp_473", label %"$out_of_gas_474", label %"$have_gas_475" + +"$out_of_gas_474": ; preds = %"$have_gas_470" + call void @_out_of_gas() + br label %"$have_gas_475" + +"$have_gas_475": ; preds = %"$out_of_gas_474", %"$have_gas_470" + %"$consume_476" = sub i64 %"$gasrem_472", 1 + store i64 %"$consume_476", i64* @_gasrem, align 8 + %"$$fundef_67_envp_477_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_67_envp_477_salloc" = call i8* @_salloc(i8* %"$$fundef_67_envp_477_load", i64 24) + %"$$fundef_67_envp_477" = bitcast i8* %"$$fundef_67_envp_477_salloc" to %"$$fundef_67_env_184"* + %"$$fundef_67_env_voidp_479" = bitcast %"$$fundef_67_env_184"* %"$$fundef_67_envp_477" to i8* + %"$$fundef_67_cloval_480" = insertvalue { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)* bitcast ({ { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (%"$$fundef_67_env_184"*, %TName_List_String*)* @"$fundef_67" to { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_67_env_voidp_479", 1 + %"$$fundef_67_env_equal_481" = getelementptr inbounds %"$$fundef_67_env_184", %"$$fundef_67_env_184"* %"$$fundef_67_envp_477", i32 0, i32 0 + %"$equal_482" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_482", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_67_env_equal_481", align 8 + %"$$fundef_67_env_l1_483" = getelementptr inbounds %"$$fundef_67_env_184", %"$$fundef_67_env_184"* %"$$fundef_67_envp_477", i32 0, i32 1 + %"$l1_484" = load %TName_List_String*, %TName_List_String** %l1, align 8 + store %TName_List_String* %"$l1_484", %TName_List_String** %"$$fundef_67_env_l1_483", align 8 + store { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$fundef_67_cloval_480", { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %iter, align 8, !dbg !35 + %"$gasrem_485" = load i64, i64* @_gasrem, align 8 + %"$gascmp_486" = icmp ugt i64 1, %"$gasrem_485" + br i1 %"$gascmp_486", label %"$out_of_gas_487", label %"$have_gas_488" + +"$out_of_gas_487": ; preds = %"$have_gas_475" + call void @_out_of_gas() + br label %"$have_gas_488" + +"$have_gas_488": ; preds = %"$out_of_gas_487", %"$have_gas_475" + %"$consume_489" = sub i64 %"$gasrem_485", 1 + store i64 %"$consume_489", i64* @_gasrem, align 8 + %remaining = alloca %TName_List_String*, align 8 + %"$gasrem_490" = load i64, i64* @_gasrem, align 8 + %"$gascmp_491" = icmp ugt i64 1, %"$gasrem_490" + br i1 %"$gascmp_491", label %"$out_of_gas_492", label %"$have_gas_493" + +"$out_of_gas_492": ; preds = %"$have_gas_488" + call void @_out_of_gas() + br label %"$have_gas_493" + +"$have_gas_493": ; preds = %"$out_of_gas_492", %"$have_gas_488" + %"$consume_494" = sub i64 %"$gasrem_490", 1 + store i64 %"$consume_494", i64* @_gasrem, align 8 + %"$foldk_11" = alloca { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + %"$foldk_495" = load { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }, { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }* %foldk, align 8 + %"$foldk_fptr_496" = extractvalue { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } %"$foldk_495", 0 + %"$foldk_envptr_497" = extractvalue { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } %"$foldk_495", 1 + %"$iter_498" = load { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %iter, align 8 + %"$foldk_call_499" = call { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$foldk_fptr_496"(i8* %"$foldk_envptr_497", { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$iter_498"), !dbg !36 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$foldk_call_499", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$foldk_11", align 8, !dbg !36 + %"$foldk_12" = alloca { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$$foldk_11_500" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$foldk_11", align 8 + %"$$foldk_11_fptr_501" = extractvalue { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$foldk_11_500", 0 + %"$$foldk_11_envptr_502" = extractvalue { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$foldk_11_500", 1 + %"$$foldk_11_call_503" = call { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$foldk_11_fptr_501"(i8* %"$$foldk_11_envptr_502", %TName_List_String* %1), !dbg !36 + store { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$foldk_11_call_503", { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %"$foldk_12", align 8, !dbg !36 + %"$foldk_13" = alloca %TName_List_String*, align 8 + %"$$foldk_12_504" = load { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %"$foldk_12", align 8 + %"$$foldk_12_fptr_505" = extractvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$foldk_12_504", 0 + %"$$foldk_12_envptr_506" = extractvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$foldk_12_504", 1 + %"$l1_507" = load %TName_List_String*, %TName_List_String** %l1, align 8 + %"$$foldk_12_call_508" = call %TName_List_String* %"$$foldk_12_fptr_505"(i8* %"$$foldk_12_envptr_506", %TName_List_String* %"$l1_507"), !dbg !36 + store %TName_List_String* %"$$foldk_12_call_508", %TName_List_String** %"$foldk_13", align 8, !dbg !36 + %"$$foldk_13_509" = load %TName_List_String*, %TName_List_String** %"$foldk_13", align 8 + store %TName_List_String* %"$$foldk_13_509", %TName_List_String** %remaining, align 8, !dbg !36 + %"$gasrem_510" = load i64, i64* @_gasrem, align 8 + %"$gascmp_511" = icmp ugt i64 2, %"$gasrem_510" + br i1 %"$gascmp_511", label %"$out_of_gas_512", label %"$have_gas_513" + +"$out_of_gas_512": ; preds = %"$have_gas_493" + call void @_out_of_gas() + br label %"$have_gas_513" + +"$have_gas_513": ; preds = %"$out_of_gas_512", %"$have_gas_493" + %"$consume_514" = sub i64 %"$gasrem_510", 2 + store i64 %"$consume_514", i64* @_gasrem, align 8 + %"$remaining_516" = load %TName_List_String*, %TName_List_String** %remaining, align 8 + %"$remaining_tag_517" = getelementptr inbounds %TName_List_String, %TName_List_String* %"$remaining_516", i32 0, i32 0 + %"$remaining_tag_518" = load i8, i8* %"$remaining_tag_517", align 1 + switch i8 %"$remaining_tag_518", label %"$empty_default_519" [ + i8 0, label %"$Cons_520" + i8 1, label %"$Nil_534" + ], !dbg !37 + +"$Cons_520": ; preds = %"$have_gas_513" + %"$remaining_521" = bitcast %TName_List_String* %"$remaining_516" to %CName_Cons_String* + %"$$remaining_0_gep_522" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$remaining_521", i32 0, i32 1 + %"$$remaining_0_load_523" = load %String, %String* %"$$remaining_0_gep_522", align 8 + %"$remaining_0" = alloca %String, align 8 + store %String %"$$remaining_0_load_523", %String* %"$remaining_0", align 8 + %"$$remaining_1_gep_524" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$remaining_521", i32 0, i32 2 + %"$$remaining_1_load_525" = load %TName_List_String*, %TName_List_String** %"$$remaining_1_gep_524", align 8 + %"$remaining_1" = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$$remaining_1_load_525", %TName_List_String** %"$remaining_1", align 8 + %"$gasrem_526" = load i64, i64* @_gasrem, align 8 + %"$gascmp_527" = icmp ugt i64 1, %"$gasrem_526" + br i1 %"$gascmp_527", label %"$out_of_gas_528", label %"$have_gas_529" + +"$out_of_gas_528": ; preds = %"$Cons_520" + call void @_out_of_gas() + br label %"$have_gas_529" + +"$have_gas_529": ; preds = %"$out_of_gas_528", %"$Cons_520" + %"$consume_530" = sub i64 %"$gasrem_526", 1 + store i64 %"$consume_530", i64* @_gasrem, align 8 + %"$adtval_531_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_531_salloc" = call i8* @_salloc(i8* %"$adtval_531_load", i64 1) + %"$adtval_531" = bitcast i8* %"$adtval_531_salloc" to %CName_False* + %"$adtgep_532" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_531", i32 0, i32 0 + store i8 1, i8* %"$adtgep_532", align 1 + %"$adtptr_533" = bitcast %CName_False* %"$adtval_531" to %TName_Bool* + store %TName_Bool* %"$adtptr_533", %TName_Bool** %"$retval_66", align 8, !dbg !38 + br label %"$matchsucc_515" + +"$Nil_534": ; preds = %"$have_gas_513" + %"$remaining_535" = bitcast %TName_List_String* %"$remaining_516" to %CName_Nil_String* + %"$gasrem_536" = load i64, i64* @_gasrem, align 8 + %"$gascmp_537" = icmp ugt i64 1, %"$gasrem_536" + br i1 %"$gascmp_537", label %"$out_of_gas_538", label %"$have_gas_539" + +"$out_of_gas_538": ; preds = %"$Nil_534" + call void @_out_of_gas() + br label %"$have_gas_539" + +"$have_gas_539": ; preds = %"$out_of_gas_538", %"$Nil_534" + %"$consume_540" = sub i64 %"$gasrem_536", 1 + store i64 %"$consume_540", i64* @_gasrem, align 8 + %"$adtval_541_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_541_salloc" = call i8* @_salloc(i8* %"$adtval_541_load", i64 1) + %"$adtval_541" = bitcast i8* %"$adtval_541_salloc" to %CName_True* + %"$adtgep_542" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_541", i32 0, i32 0 + store i8 0, i8* %"$adtgep_542", align 1 + %"$adtptr_543" = bitcast %CName_True* %"$adtval_541" to %TName_Bool* + store %TName_Bool* %"$adtptr_543", %TName_Bool** %"$retval_66", align 8, !dbg !41 + br label %"$matchsucc_515" + +"$empty_default_519": ; preds = %"$have_gas_513" + br label %"$matchsucc_515" + +"$matchsucc_515": ; preds = %"$have_gas_539", %"$have_gas_529", %"$empty_default_519" + %"$$retval_66_544" = load %TName_Bool*, %TName_Bool** %"$retval_66", align 8 + ret %TName_Bool* %"$$retval_66_544" +} + +define internal { %TName_Bool* (i8*, %TName_List_String*)*, i8* } @"$fundef_63"(%"$$fundef_63_env_186"* %0, %TName_List_String* %1) !dbg !43 { +entry: + %"$$fundef_63_env_equal_419" = getelementptr inbounds %"$$fundef_63_env_186", %"$$fundef_63_env_186"* %0, i32 0, i32 0 + %"$equal_envload_420" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_63_env_equal_419", align 8 + %equal = alloca { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_envload_420", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + %"$$fundef_63_env_list_foldk_421" = getelementptr inbounds %"$$fundef_63_env_186", %"$$fundef_63_env_186"* %0, i32 0, i32 1 + %"$list_foldk_envload_422" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_63_env_list_foldk_421", align 8 + %list_foldk = alloca { i8*, i8* }*, align 8 + store { i8*, i8* }* %"$list_foldk_envload_422", { i8*, i8* }** %list_foldk, align 8 + %"$retval_64" = alloca { %TName_Bool* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_423" = load i64, i64* @_gasrem, align 8 + %"$gascmp_424" = icmp ugt i64 1, %"$gasrem_423" + br i1 %"$gascmp_424", label %"$out_of_gas_425", label %"$have_gas_426" + +"$out_of_gas_425": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_426" + +"$have_gas_426": ; preds = %"$out_of_gas_425", %entry + %"$consume_427" = sub i64 %"$gasrem_423", 1 + store i64 %"$consume_427", i64* @_gasrem, align 8 + %"$$fundef_65_envp_428_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_65_envp_428_salloc" = call i8* @_salloc(i8* %"$$fundef_65_envp_428_load", i64 32) + %"$$fundef_65_envp_428" = bitcast i8* %"$$fundef_65_envp_428_salloc" to %"$$fundef_65_env_185"* + %"$$fundef_65_env_voidp_430" = bitcast %"$$fundef_65_env_185"* %"$$fundef_65_envp_428" to i8* + %"$$fundef_65_cloval_431" = insertvalue { %TName_Bool* (i8*, %TName_List_String*)*, i8* } { %TName_Bool* (i8*, %TName_List_String*)* bitcast (%TName_Bool* (%"$$fundef_65_env_185"*, %TName_List_String*)* @"$fundef_65" to %TName_Bool* (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_65_env_voidp_430", 1 + %"$$fundef_65_env_equal_432" = getelementptr inbounds %"$$fundef_65_env_185", %"$$fundef_65_env_185"* %"$$fundef_65_envp_428", i32 0, i32 0 + %"$equal_433" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_433", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_65_env_equal_432", align 8 + %"$$fundef_65_env_l1_434" = getelementptr inbounds %"$$fundef_65_env_185", %"$$fundef_65_env_185"* %"$$fundef_65_envp_428", i32 0, i32 1 + store %TName_List_String* %1, %TName_List_String** %"$$fundef_65_env_l1_434", align 8 + %"$$fundef_65_env_list_foldk_435" = getelementptr inbounds %"$$fundef_65_env_185", %"$$fundef_65_env_185"* %"$$fundef_65_envp_428", i32 0, i32 2 + %"$list_foldk_436" = load { i8*, i8* }*, { i8*, i8* }** %list_foldk, align 8 + store { i8*, i8* }* %"$list_foldk_436", { i8*, i8* }** %"$$fundef_65_env_list_foldk_435", align 8 + store { %TName_Bool* (i8*, %TName_List_String*)*, i8* } %"$$fundef_65_cloval_431", { %TName_Bool* (i8*, %TName_List_String*)*, i8* }* %"$retval_64", align 8, !dbg !44 + %"$$retval_64_437" = load { %TName_Bool* (i8*, %TName_List_String*)*, i8* }, { %TName_Bool* (i8*, %TName_List_String*)*, i8* }* %"$retval_64", align 8 + ret { %TName_Bool* (i8*, %TName_List_String*)*, i8* } %"$$retval_64_437" +} + +define internal { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } @"$fundef_61"(%"$$fundef_61_env_187"* %0, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %1) !dbg !45 { +entry: + %"$$fundef_61_env_list_foldk_404" = getelementptr inbounds %"$$fundef_61_env_187", %"$$fundef_61_env_187"* %0, i32 0, i32 0 + %"$list_foldk_envload_405" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_61_env_list_foldk_404", align 8 + %list_foldk = alloca { i8*, i8* }*, align 8 + store { i8*, i8* }* %"$list_foldk_envload_405", { i8*, i8* }** %list_foldk, align 8 + %"$retval_62" = alloca { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_406" = load i64, i64* @_gasrem, align 8 + %"$gascmp_407" = icmp ugt i64 1, %"$gasrem_406" + br i1 %"$gascmp_407", label %"$out_of_gas_408", label %"$have_gas_409" + +"$out_of_gas_408": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_409" + +"$have_gas_409": ; preds = %"$out_of_gas_408", %entry + %"$consume_410" = sub i64 %"$gasrem_406", 1 + store i64 %"$consume_410", i64* @_gasrem, align 8 + %"$$fundef_63_envp_411_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_63_envp_411_salloc" = call i8* @_salloc(i8* %"$$fundef_63_envp_411_load", i64 24) + %"$$fundef_63_envp_411" = bitcast i8* %"$$fundef_63_envp_411_salloc" to %"$$fundef_63_env_186"* + %"$$fundef_63_env_voidp_413" = bitcast %"$$fundef_63_env_186"* %"$$fundef_63_envp_411" to i8* + %"$$fundef_63_cloval_414" = insertvalue { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)* bitcast ({ %TName_Bool* (i8*, %TName_List_String*)*, i8* } (%"$$fundef_63_env_186"*, %TName_List_String*)* @"$fundef_63" to { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_63_env_voidp_413", 1 + %"$$fundef_63_env_equal_415" = getelementptr inbounds %"$$fundef_63_env_186", %"$$fundef_63_env_186"* %"$$fundef_63_envp_411", i32 0, i32 0 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %1, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_63_env_equal_415", align 8 + %"$$fundef_63_env_list_foldk_416" = getelementptr inbounds %"$$fundef_63_env_186", %"$$fundef_63_env_186"* %"$$fundef_63_envp_411", i32 0, i32 1 + %"$list_foldk_417" = load { i8*, i8* }*, { i8*, i8* }** %list_foldk, align 8 + store { i8*, i8* }* %"$list_foldk_417", { i8*, i8* }** %"$$fundef_63_env_list_foldk_416", align 8 + store { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$fundef_63_cloval_414", { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$retval_62", align 8, !dbg !46 + %"$$retval_62_418" = load { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$retval_62", align 8 + ret { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$retval_62_418" +} + +define internal { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } @"$fundef_59"(%"$$fundef_59_env_188"* %0) !dbg !47 { +entry: + %"$$fundef_59_env_list_foldk_390" = getelementptr inbounds %"$$fundef_59_env_188", %"$$fundef_59_env_188"* %0, i32 0, i32 0 + %"$list_foldk_envload_391" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_59_env_list_foldk_390", align 8 + %list_foldk = alloca { i8*, i8* }*, align 8 + store { i8*, i8* }* %"$list_foldk_envload_391", { i8*, i8* }** %list_foldk, align 8 + %"$retval_60" = alloca { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }, align 8 + %"$gasrem_392" = load i64, i64* @_gasrem, align 8 + %"$gascmp_393" = icmp ugt i64 1, %"$gasrem_392" + br i1 %"$gascmp_393", label %"$out_of_gas_394", label %"$have_gas_395" + +"$out_of_gas_394": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_395" + +"$have_gas_395": ; preds = %"$out_of_gas_394", %entry + %"$consume_396" = sub i64 %"$gasrem_392", 1 + store i64 %"$consume_396", i64* @_gasrem, align 8 + %"$$fundef_61_envp_397_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_61_envp_397_salloc" = call i8* @_salloc(i8* %"$$fundef_61_envp_397_load", i64 8) + %"$$fundef_61_envp_397" = bitcast i8* %"$$fundef_61_envp_397_salloc" to %"$$fundef_61_env_187"* + %"$$fundef_61_env_voidp_399" = bitcast %"$$fundef_61_env_187"* %"$$fundef_61_envp_397" to i8* + %"$$fundef_61_cloval_400" = insertvalue { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })* bitcast ({ { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (%"$$fundef_61_env_187"*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })* @"$fundef_61" to { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*), i8* undef }, i8* %"$$fundef_61_env_voidp_399", 1 + %"$$fundef_61_env_list_foldk_401" = getelementptr inbounds %"$$fundef_61_env_187", %"$$fundef_61_env_187"* %"$$fundef_61_envp_397", i32 0, i32 0 + %"$list_foldk_402" = load { i8*, i8* }*, { i8*, i8* }** %list_foldk, align 8 + store { i8*, i8* }* %"$list_foldk_402", { i8*, i8* }** %"$$fundef_61_env_list_foldk_401", align 8 + store { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } %"$$fundef_61_cloval_400", { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }* %"$retval_60", align 8, !dbg !48 + %"$$retval_60_403" = load { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }, { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }* %"$retval_60", align 8 + ret { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } %"$$retval_60_403" +} + +define internal %TName_Option_String* @"$fundef_75"(%"$$fundef_75_env_189"* %0, %TName_List_String* %1) !dbg !49 { +entry: + %"$retval_76" = alloca %TName_Option_String*, align 8 + %"$gasrem_354" = load i64, i64* @_gasrem, align 8 + %"$gascmp_355" = icmp ugt i64 2, %"$gasrem_354" + br i1 %"$gascmp_355", label %"$out_of_gas_356", label %"$have_gas_357" + +"$out_of_gas_356": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_357" + +"$have_gas_357": ; preds = %"$out_of_gas_356", %entry + %"$consume_358" = sub i64 %"$gasrem_354", 2 + store i64 %"$consume_358", i64* @_gasrem, align 8 + %"$l_tag_360" = getelementptr inbounds %TName_List_String, %TName_List_String* %1, i32 0, i32 0 + %"$l_tag_361" = load i8, i8* %"$l_tag_360", align 1 + switch i8 %"$l_tag_361", label %"$empty_default_362" [ + i8 0, label %"$Cons_363" + i8 1, label %"$Nil_379" + ], !dbg !50 + +"$Cons_363": ; preds = %"$have_gas_357" + %"$l_364" = bitcast %TName_List_String* %1 to %CName_Cons_String* + %"$h_gep_365" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$l_364", i32 0, i32 1 + %"$h_load_366" = load %String, %String* %"$h_gep_365", align 8 + %h = alloca %String, align 8 + store %String %"$h_load_366", %String* %h, align 8 + %"$t_gep_367" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$l_364", i32 0, i32 2 + %"$t_load_368" = load %TName_List_String*, %TName_List_String** %"$t_gep_367", align 8 + %t = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$t_load_368", %TName_List_String** %t, align 8 + %"$gasrem_369" = load i64, i64* @_gasrem, align 8 + %"$gascmp_370" = icmp ugt i64 1, %"$gasrem_369" + br i1 %"$gascmp_370", label %"$out_of_gas_371", label %"$have_gas_372" + +"$out_of_gas_371": ; preds = %"$Cons_363" + call void @_out_of_gas() + br label %"$have_gas_372" + +"$have_gas_372": ; preds = %"$out_of_gas_371", %"$Cons_363" + %"$consume_373" = sub i64 %"$gasrem_369", 1 + store i64 %"$consume_373", i64* @_gasrem, align 8 + %"$h_374" = load %String, %String* %h, align 8 + %"$adtval_375_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_375_salloc" = call i8* @_salloc(i8* %"$adtval_375_load", i64 17) + %"$adtval_375" = bitcast i8* %"$adtval_375_salloc" to %CName_Some_String* + %"$adtgep_376" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$adtval_375", i32 0, i32 0 + store i8 0, i8* %"$adtgep_376", align 1 + %"$adtgep_377" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$adtval_375", i32 0, i32 1 + store %String %"$h_374", %String* %"$adtgep_377", align 8 + %"$adtptr_378" = bitcast %CName_Some_String* %"$adtval_375" to %TName_Option_String* + store %TName_Option_String* %"$adtptr_378", %TName_Option_String** %"$retval_76", align 8, !dbg !51 + br label %"$matchsucc_359" + +"$Nil_379": ; preds = %"$have_gas_357" + %"$l_380" = bitcast %TName_List_String* %1 to %CName_Nil_String* + %"$gasrem_381" = load i64, i64* @_gasrem, align 8 + %"$gascmp_382" = icmp ugt i64 1, %"$gasrem_381" + br i1 %"$gascmp_382", label %"$out_of_gas_383", label %"$have_gas_384" + +"$out_of_gas_383": ; preds = %"$Nil_379" + call void @_out_of_gas() + br label %"$have_gas_384" + +"$have_gas_384": ; preds = %"$out_of_gas_383", %"$Nil_379" + %"$consume_385" = sub i64 %"$gasrem_381", 1 + store i64 %"$consume_385", i64* @_gasrem, align 8 + %"$adtval_386_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_386_salloc" = call i8* @_salloc(i8* %"$adtval_386_load", i64 1) + %"$adtval_386" = bitcast i8* %"$adtval_386_salloc" to %CName_None_String* + %"$adtgep_387" = getelementptr inbounds %CName_None_String, %CName_None_String* %"$adtval_386", i32 0, i32 0 + store i8 1, i8* %"$adtgep_387", align 1 + %"$adtptr_388" = bitcast %CName_None_String* %"$adtval_386" to %TName_Option_String* + store %TName_Option_String* %"$adtptr_388", %TName_Option_String** %"$retval_76", align 8, !dbg !54 + br label %"$matchsucc_359" + +"$empty_default_362": ; preds = %"$have_gas_357" + br label %"$matchsucc_359" + +"$matchsucc_359": ; preds = %"$have_gas_384", %"$have_gas_372", %"$empty_default_362" + %"$$retval_76_389" = load %TName_Option_String*, %TName_Option_String** %"$retval_76", align 8 + ret %TName_Option_String* %"$$retval_76_389" +} + +define internal { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } @"$fundef_73"(%"$$fundef_73_env_190"* %0) !dbg !56 { +entry: + %"$retval_74" = alloca { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_345" = load i64, i64* @_gasrem, align 8 + %"$gascmp_346" = icmp ugt i64 1, %"$gasrem_345" + br i1 %"$gascmp_346", label %"$out_of_gas_347", label %"$have_gas_348" + +"$out_of_gas_347": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_348" + +"$have_gas_348": ; preds = %"$out_of_gas_347", %entry + %"$consume_349" = sub i64 %"$gasrem_345", 1 + store i64 %"$consume_349", i64* @_gasrem, align 8 + store { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } { %TName_Option_String* (i8*, %TName_List_String*)* bitcast (%TName_Option_String* (%"$$fundef_75_env_189"*, %TName_List_String*)* @"$fundef_75" to %TName_Option_String* (i8*, %TName_List_String*)*), i8* null }, { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }* %"$retval_74", align 8, !dbg !57 + %"$$retval_74_353" = load { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }, { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }* %"$retval_74", align 8 + ret { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } %"$$retval_74_353" +} + +define internal %TName_List_String* @"$fundef_57"(%"$$fundef_57_env_191"* %0, %TName_List_String* %1) !dbg !58 { +entry: + %"$$fundef_57_env_g_325" = getelementptr inbounds %"$$fundef_57_env_191", %"$$fundef_57_env_191"* %0, i32 0, i32 0 + %"$g_envload_326" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_57_env_g_325", align 8 + %g = alloca { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_envload_326", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + %"$$fundef_57_env_t_327" = getelementptr inbounds %"$$fundef_57_env_191", %"$$fundef_57_env_191"* %0, i32 0, i32 1 + %"$t_envload_328" = load %TName_List_String*, %TName_List_String** %"$$fundef_57_env_t_327", align 8 + %t = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$t_envload_328", %TName_List_String** %t, align 8 + %"$retval_58" = alloca %TName_List_String*, align 8 + %"$gasrem_329" = load i64, i64* @_gasrem, align 8 + %"$gascmp_330" = icmp ugt i64 1, %"$gasrem_329" + br i1 %"$gascmp_330", label %"$out_of_gas_331", label %"$have_gas_332" + +"$out_of_gas_331": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_332" + +"$have_gas_332": ; preds = %"$out_of_gas_331", %entry + %"$consume_333" = sub i64 %"$gasrem_329", 1 + store i64 %"$consume_333", i64* @_gasrem, align 8 + %"$g_3" = alloca { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$g_334" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + %"$g_fptr_335" = extractvalue { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_334", 0 + %"$g_envptr_336" = extractvalue { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_334", 1 + %"$g_call_337" = call { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$g_fptr_335"(i8* %"$g_envptr_336", %TName_List_String* %1), !dbg !60 + store { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$g_call_337", { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %"$g_3", align 8, !dbg !60 + %"$g_4" = alloca %TName_List_String*, align 8 + %"$$g_3_338" = load { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %"$g_3", align 8 + %"$$g_3_fptr_339" = extractvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$g_3_338", 0 + %"$$g_3_envptr_340" = extractvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$g_3_338", 1 + %"$t_341" = load %TName_List_String*, %TName_List_String** %t, align 8 + %"$$g_3_call_342" = call %TName_List_String* %"$$g_3_fptr_339"(i8* %"$$g_3_envptr_340", %TName_List_String* %"$t_341"), !dbg !60 + store %TName_List_String* %"$$g_3_call_342", %TName_List_String** %"$g_4", align 8, !dbg !60 + %"$$g_4_343" = load %TName_List_String*, %TName_List_String** %"$g_4", align 8 + store %TName_List_String* %"$$g_4_343", %TName_List_String** %"$retval_58", align 8, !dbg !60 + %"$$retval_58_344" = load %TName_List_String*, %TName_List_String** %"$retval_58", align 8 + ret %TName_List_String* %"$$retval_58_344" +} + +define internal %TName_List_String* @"$fundef_55"(%"$$fundef_55_env_192"* %0, %TName_List_String* %1) !dbg !61 { +entry: + %"$$fundef_55_env_f_256" = getelementptr inbounds %"$$fundef_55_env_192", %"$$fundef_55_env_192"* %0, i32 0, i32 0 + %"$f_envload_257" = load { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_55_env_f_256", align 8 + %f = alloca { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + store { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$f_envload_257", { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %f, align 8 + %"$$fundef_55_env_g_258" = getelementptr inbounds %"$$fundef_55_env_192", %"$$fundef_55_env_192"* %0, i32 0, i32 1 + %"$g_envload_259" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_55_env_g_258", align 8 + %g = alloca { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_envload_259", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + %"$$fundef_55_env_z_260" = getelementptr inbounds %"$$fundef_55_env_192", %"$$fundef_55_env_192"* %0, i32 0, i32 2 + %"$z_envload_261" = load %TName_List_String*, %TName_List_String** %"$$fundef_55_env_z_260", align 8 + %z = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$z_envload_261", %TName_List_String** %z, align 8 + %"$retval_56" = alloca %TName_List_String*, align 8 + %"$gasrem_262" = load i64, i64* @_gasrem, align 8 + %"$gascmp_263" = icmp ugt i64 2, %"$gasrem_262" + br i1 %"$gascmp_263", label %"$out_of_gas_264", label %"$have_gas_265" + +"$out_of_gas_264": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_265" + +"$have_gas_265": ; preds = %"$out_of_gas_264", %entry + %"$consume_266" = sub i64 %"$gasrem_262", 2 + store i64 %"$consume_266", i64* @_gasrem, align 8 + %"$l_tag_268" = getelementptr inbounds %TName_List_String, %TName_List_String* %1, i32 0, i32 0 + %"$l_tag_269" = load i8, i8* %"$l_tag_268", align 1 + switch i8 %"$l_tag_269", label %"$empty_default_270" [ + i8 0, label %"$Cons_271" + i8 1, label %"$Nil_316" + ], !dbg !62 + +"$Cons_271": ; preds = %"$have_gas_265" + %"$l_272" = bitcast %TName_List_String* %1 to %CName_Cons_String* + %"$h_gep_273" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$l_272", i32 0, i32 1 + %"$h_load_274" = load %String, %String* %"$h_gep_273", align 8 + %h = alloca %String, align 8 + store %String %"$h_load_274", %String* %h, align 8 + %"$t_gep_275" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$l_272", i32 0, i32 2 + %"$t_load_276" = load %TName_List_String*, %TName_List_String** %"$t_gep_275", align 8 + %t = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$t_load_276", %TName_List_String** %t, align 8 + %"$gasrem_277" = load i64, i64* @_gasrem, align 8 + %"$gascmp_278" = icmp ugt i64 1, %"$gasrem_277" + br i1 %"$gascmp_278", label %"$out_of_gas_279", label %"$have_gas_280" + +"$out_of_gas_279": ; preds = %"$Cons_271" + call void @_out_of_gas() + br label %"$have_gas_280" + +"$have_gas_280": ; preds = %"$out_of_gas_279", %"$Cons_271" + %"$consume_281" = sub i64 %"$gasrem_277", 1 + store i64 %"$consume_281", i64* @_gasrem, align 8 + %partial = alloca { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_282" = load i64, i64* @_gasrem, align 8 + %"$gascmp_283" = icmp ugt i64 1, %"$gasrem_282" + br i1 %"$gascmp_283", label %"$out_of_gas_284", label %"$have_gas_285" + +"$out_of_gas_284": ; preds = %"$have_gas_280" + call void @_out_of_gas() + br label %"$have_gas_285" + +"$have_gas_285": ; preds = %"$out_of_gas_284", %"$have_gas_280" + %"$consume_286" = sub i64 %"$gasrem_282", 1 + store i64 %"$consume_286", i64* @_gasrem, align 8 + %"$$fundef_57_envp_287_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_57_envp_287_salloc" = call i8* @_salloc(i8* %"$$fundef_57_envp_287_load", i64 24) + %"$$fundef_57_envp_287" = bitcast i8* %"$$fundef_57_envp_287_salloc" to %"$$fundef_57_env_191"* + %"$$fundef_57_env_voidp_289" = bitcast %"$$fundef_57_env_191"* %"$$fundef_57_envp_287" to i8* + %"$$fundef_57_cloval_290" = insertvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } { %TName_List_String* (i8*, %TName_List_String*)* bitcast (%TName_List_String* (%"$$fundef_57_env_191"*, %TName_List_String*)* @"$fundef_57" to %TName_List_String* (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_57_env_voidp_289", 1 + %"$$fundef_57_env_g_291" = getelementptr inbounds %"$$fundef_57_env_191", %"$$fundef_57_env_191"* %"$$fundef_57_envp_287", i32 0, i32 0 + %"$g_292" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_292", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_57_env_g_291", align 8 + %"$$fundef_57_env_t_293" = getelementptr inbounds %"$$fundef_57_env_191", %"$$fundef_57_env_191"* %"$$fundef_57_envp_287", i32 0, i32 1 + %"$t_294" = load %TName_List_String*, %TName_List_String** %t, align 8 + store %TName_List_String* %"$t_294", %TName_List_String** %"$$fundef_57_env_t_293", align 8 + store { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$fundef_57_cloval_290", { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %partial, align 8, !dbg !63 + %"$gasrem_295" = load i64, i64* @_gasrem, align 8 + %"$gascmp_296" = icmp ugt i64 1, %"$gasrem_295" + br i1 %"$gascmp_296", label %"$out_of_gas_297", label %"$have_gas_298" + +"$out_of_gas_297": ; preds = %"$have_gas_285" + call void @_out_of_gas() + br label %"$have_gas_298" + +"$have_gas_298": ; preds = %"$out_of_gas_297", %"$have_gas_285" + %"$consume_299" = sub i64 %"$gasrem_295", 1 + store i64 %"$consume_299", i64* @_gasrem, align 8 + %"$f_5" = alloca { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }, align 8 + %"$f_300" = load { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %f, align 8 + %"$f_fptr_301" = extractvalue { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$f_300", 0 + %"$f_envptr_302" = extractvalue { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$f_300", 1 + %"$z_303" = load %TName_List_String*, %TName_List_String** %z, align 8 + %"$f_call_304" = call { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } %"$f_fptr_301"(i8* %"$f_envptr_302", %TName_List_String* %"$z_303"), !dbg !66 + store { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } %"$f_call_304", { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }* %"$f_5", align 8, !dbg !66 + %"$f_6" = alloca { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }, align 8 + %"$$f_5_305" = load { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }, { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }* %"$f_5", align 8 + %"$$f_5_fptr_306" = extractvalue { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } %"$$f_5_305", 0 + %"$$f_5_envptr_307" = extractvalue { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } %"$$f_5_305", 1 + %"$h_308" = load %String, %String* %h, align 8 + %"$$f_5_call_309" = call { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$f_5_fptr_306"(i8* %"$$f_5_envptr_307", %String %"$h_308"), !dbg !66 + store { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$f_5_call_309", { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }* %"$f_6", align 8, !dbg !66 + %"$f_7" = alloca %TName_List_String*, align 8 + %"$$f_6_310" = load { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }, { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }* %"$f_6", align 8 + %"$$f_6_fptr_311" = extractvalue { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$f_6_310", 0 + %"$$f_6_envptr_312" = extractvalue { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$f_6_310", 1 + %"$partial_313" = load { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %partial, align 8 + %"$$f_6_call_314" = call %TName_List_String* %"$$f_6_fptr_311"(i8* %"$$f_6_envptr_312", { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$partial_313"), !dbg !66 + store %TName_List_String* %"$$f_6_call_314", %TName_List_String** %"$f_7", align 8, !dbg !66 + %"$$f_7_315" = load %TName_List_String*, %TName_List_String** %"$f_7", align 8 + store %TName_List_String* %"$$f_7_315", %TName_List_String** %"$retval_56", align 8, !dbg !66 + br label %"$matchsucc_267" + +"$Nil_316": ; preds = %"$have_gas_265" + %"$l_317" = bitcast %TName_List_String* %1 to %CName_Nil_String* + %"$gasrem_318" = load i64, i64* @_gasrem, align 8 + %"$gascmp_319" = icmp ugt i64 1, %"$gasrem_318" + br i1 %"$gascmp_319", label %"$out_of_gas_320", label %"$have_gas_321" + +"$out_of_gas_320": ; preds = %"$Nil_316" + call void @_out_of_gas() + br label %"$have_gas_321" + +"$have_gas_321": ; preds = %"$out_of_gas_320", %"$Nil_316" + %"$consume_322" = sub i64 %"$gasrem_318", 1 + store i64 %"$consume_322", i64* @_gasrem, align 8 + %"$z_323" = load %TName_List_String*, %TName_List_String** %z, align 8 + store %TName_List_String* %"$z_323", %TName_List_String** %"$retval_56", align 8, !dbg !67 + br label %"$matchsucc_267" + +"$empty_default_270": ; preds = %"$have_gas_265" + br label %"$matchsucc_267" + +"$matchsucc_267": ; preds = %"$have_gas_321", %"$have_gas_298", %"$empty_default_270" + %"$$retval_56_324" = load %TName_List_String*, %TName_List_String** %"$retval_56", align 8 + ret %TName_List_String* %"$$retval_56_324" +} + +define internal { %TName_List_String* (i8*, %TName_List_String*)*, i8* } @"$fundef_53"(%"$$fundef_53_env_193"* %0, %TName_List_String* %1) !dbg !69 { +entry: + %"$$fundef_53_env_f_237" = getelementptr inbounds %"$$fundef_53_env_193", %"$$fundef_53_env_193"* %0, i32 0, i32 0 + %"$f_envload_238" = load { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_53_env_f_237", align 8 + %f = alloca { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + store { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$f_envload_238", { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %f, align 8 + %"$$fundef_53_env_g_239" = getelementptr inbounds %"$$fundef_53_env_193", %"$$fundef_53_env_193"* %0, i32 0, i32 1 + %"$g_envload_240" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_53_env_g_239", align 8 + %g = alloca { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_envload_240", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + %"$retval_54" = alloca { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_241" = load i64, i64* @_gasrem, align 8 + %"$gascmp_242" = icmp ugt i64 1, %"$gasrem_241" + br i1 %"$gascmp_242", label %"$out_of_gas_243", label %"$have_gas_244" + +"$out_of_gas_243": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_244" + +"$have_gas_244": ; preds = %"$out_of_gas_243", %entry + %"$consume_245" = sub i64 %"$gasrem_241", 1 + store i64 %"$consume_245", i64* @_gasrem, align 8 + %"$$fundef_55_envp_246_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_55_envp_246_salloc" = call i8* @_salloc(i8* %"$$fundef_55_envp_246_load", i64 40) + %"$$fundef_55_envp_246" = bitcast i8* %"$$fundef_55_envp_246_salloc" to %"$$fundef_55_env_192"* + %"$$fundef_55_env_voidp_248" = bitcast %"$$fundef_55_env_192"* %"$$fundef_55_envp_246" to i8* + %"$$fundef_55_cloval_249" = insertvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } { %TName_List_String* (i8*, %TName_List_String*)* bitcast (%TName_List_String* (%"$$fundef_55_env_192"*, %TName_List_String*)* @"$fundef_55" to %TName_List_String* (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_55_env_voidp_248", 1 + %"$$fundef_55_env_f_250" = getelementptr inbounds %"$$fundef_55_env_192", %"$$fundef_55_env_192"* %"$$fundef_55_envp_246", i32 0, i32 0 + %"$f_251" = load { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %f, align 8 + store { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$f_251", { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_55_env_f_250", align 8 + %"$$fundef_55_env_g_252" = getelementptr inbounds %"$$fundef_55_env_192", %"$$fundef_55_env_192"* %"$$fundef_55_envp_246", i32 0, i32 1 + %"$g_253" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_253", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_55_env_g_252", align 8 + %"$$fundef_55_env_z_254" = getelementptr inbounds %"$$fundef_55_env_192", %"$$fundef_55_env_192"* %"$$fundef_55_envp_246", i32 0, i32 2 + store %TName_List_String* %1, %TName_List_String** %"$$fundef_55_env_z_254", align 8 + store { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$fundef_55_cloval_249", { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %"$retval_54", align 8, !dbg !70 + %"$$retval_54_255" = load { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %"$retval_54", align 8 + ret { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$retval_54_255" +} + +define internal { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } @"$fundef_51"(%"$$fundef_51_env_194"* %0, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %1) !dbg !71 { +entry: + %"$retval_52" = alloca { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_218" = load i64, i64* @_gasrem, align 8 + %"$gascmp_219" = icmp ugt i64 1, %"$gasrem_218" + br i1 %"$gascmp_219", label %"$out_of_gas_220", label %"$have_gas_221" + +"$out_of_gas_220": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_221" + +"$have_gas_221": ; preds = %"$out_of_gas_220", %entry + %"$consume_222" = sub i64 %"$gasrem_218", 1 + store i64 %"$consume_222", i64* @_gasrem, align 8 + %"$gasrem_223" = load i64, i64* @_gasrem, align 8 + %"$gascmp_224" = icmp ugt i64 1, %"$gasrem_223" + br i1 %"$gascmp_224", label %"$out_of_gas_225", label %"$have_gas_226" + +"$out_of_gas_225": ; preds = %"$have_gas_221" + call void @_out_of_gas() + br label %"$have_gas_226" + +"$have_gas_226": ; preds = %"$out_of_gas_225", %"$have_gas_221" + %"$consume_227" = sub i64 %"$gasrem_223", 1 + store i64 %"$consume_227", i64* @_gasrem, align 8 + %"$$fundef_53_envp_228_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_53_envp_228_salloc" = call i8* @_salloc(i8* %"$$fundef_53_envp_228_load", i64 32) + %"$$fundef_53_envp_228" = bitcast i8* %"$$fundef_53_envp_228_salloc" to %"$$fundef_53_env_193"* + %"$$fundef_53_env_voidp_230" = bitcast %"$$fundef_53_env_193"* %"$$fundef_53_envp_228" to i8* + %"$$fundef_53_cloval_231" = insertvalue { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)* bitcast ({ %TName_List_String* (i8*, %TName_List_String*)*, i8* } (%"$$fundef_53_env_193"*, %TName_List_String*)* @"$fundef_53" to { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_53_env_voidp_230", 1 + %g = alloca { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$fundef_53_cloval_231", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8, !dbg !72 + %"$$fundef_53_env_f_232" = getelementptr inbounds %"$$fundef_53_env_193", %"$$fundef_53_env_193"* %"$$fundef_53_envp_228", i32 0, i32 0 + store { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %1, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_53_env_f_232", align 8 + %"$$fundef_53_env_g_233" = getelementptr inbounds %"$$fundef_53_env_193", %"$$fundef_53_env_193"* %"$$fundef_53_envp_228", i32 0, i32 1 + %"$g_234" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_234", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_53_env_g_233", align 8 + %"$g_235" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_235", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$retval_52", align 8, !dbg !72 + %"$$retval_52_236" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$retval_52", align 8 + ret { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$retval_52_236" +} + +define internal { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } @"$fundef_49"(%"$$fundef_49_env_195"* %0) !dbg !73 { +entry: + %"$retval_50" = alloca { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }, align 8 + %"$gasrem_209" = load i64, i64* @_gasrem, align 8 + %"$gascmp_210" = icmp ugt i64 1, %"$gasrem_209" + br i1 %"$gascmp_210", label %"$out_of_gas_211", label %"$have_gas_212" + +"$out_of_gas_211": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_212" + +"$have_gas_212": ; preds = %"$out_of_gas_211", %entry + %"$consume_213" = sub i64 %"$gasrem_209", 1 + store i64 %"$consume_213", i64* @_gasrem, align 8 + store { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })* bitcast ({ { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (%"$$fundef_51_env_194"*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })* @"$fundef_51" to { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*), i8* null }, { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }* %"$retval_50", align 8, !dbg !74 + %"$$retval_50_217" = load { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }, { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }* %"$retval_50", align 8 + ret { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$retval_50_217" +} + +define internal { i8*, i8* }* @"$fundef_47"(%"$$fundef_47_env_196"* %0) !dbg !75 { +entry: + %"$retval_48" = alloca { i8*, i8* }*, align 8 + %"$gasrem_197" = load i64, i64* @_gasrem, align 8 + %"$gascmp_198" = icmp ugt i64 1, %"$gasrem_197" + br i1 %"$gascmp_198", label %"$out_of_gas_199", label %"$have_gas_200" + +"$out_of_gas_199": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_200" + +"$have_gas_200": ; preds = %"$out_of_gas_199", %entry + %"$consume_201" = sub i64 %"$gasrem_197", 1 + store i64 %"$consume_201", i64* @_gasrem, align 8 + %"$dyndisp_table_205_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$dyndisp_table_205_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_205_salloc_load", i64 32) + %"$dyndisp_table_205_salloc" = bitcast i8* %"$dyndisp_table_205_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_205" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_205_salloc" to { i8*, i8* }* + %"$dyndisp_gep_206" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_205", i32 1 + %"$dyndisp_pcast_207" = bitcast { i8*, i8* }* %"$dyndisp_gep_206" to { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (%"$$fundef_49_env_195"*)* @"$fundef_49" to { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_207", align 8 + store { i8*, i8* }* %"$dyndisp_table_205", { i8*, i8* }** %"$retval_48", align 8, !dbg !76 + %"$$retval_48_208" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_48", align 8 + ret { i8*, i8* }* %"$$retval_48_208" +} + +declare void @_out_of_gas() + +declare i8* @_salloc(i8*, i64) + +declare %TName_Bool* @_eq_String(i8*, %String, %String) + +define void @_init_libs() !dbg !77 { +entry: + %"$gasrem_714" = load i64, i64* @_gasrem, align 8 + %"$gascmp_715" = icmp ugt i64 1, %"$gasrem_714" + br i1 %"$gascmp_715", label %"$out_of_gas_716", label %"$have_gas_717" + +"$out_of_gas_716": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_717" + +"$have_gas_717": ; preds = %"$out_of_gas_716", %entry + %"$consume_718" = sub i64 %"$gasrem_714", 1 + store i64 %"$consume_718", i64* @_gasrem, align 8 + %"$dyndisp_table_722_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$dyndisp_table_722_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_722_salloc_load", i64 32) + %"$dyndisp_table_722_salloc" = bitcast i8* %"$dyndisp_table_722_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_722" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_722_salloc" to { i8*, i8* }* + %"$dyndisp_gep_723" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_722", i32 0 + %"$dyndisp_pcast_724" = bitcast { i8*, i8* }* %"$dyndisp_gep_723" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_47_env_196"*)* @"$fundef_47" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_724", align 8 + store { i8*, i8* }* %"$dyndisp_table_722", { i8*, i8* }** @list_foldk, align 8, !dbg !79 + %"$gasrem_725" = load i64, i64* @_gasrem, align 8 + %"$gascmp_726" = icmp ugt i64 1, %"$gasrem_725" + br i1 %"$gascmp_726", label %"$out_of_gas_727", label %"$have_gas_728" + +"$out_of_gas_727": ; preds = %"$have_gas_717" + call void @_out_of_gas() + br label %"$have_gas_728" + +"$have_gas_728": ; preds = %"$out_of_gas_727", %"$have_gas_717" + %"$consume_729" = sub i64 %"$gasrem_725", 1 + store i64 %"$consume_729", i64* @_gasrem, align 8 + %"$dyndisp_table_733_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$dyndisp_table_733_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_733_salloc_load", i64 32) + %"$dyndisp_table_733_salloc" = bitcast i8* %"$dyndisp_table_733_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_733" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_733_salloc" to { i8*, i8* }* + %"$dyndisp_gep_734" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_733", i32 0 + %"$dyndisp_pcast_735" = bitcast { i8*, i8* }* %"$dyndisp_gep_734" to { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* + store { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)* bitcast ({ %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (%"$$fundef_73_env_190"*)* @"$fundef_73" to { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*), i8* null }, { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_735", align 8 + store { i8*, i8* }* %"$dyndisp_table_733", { i8*, i8* }** @ListUtils.list_head, align 8, !dbg !80 + %"$gasrem_736" = load i64, i64* @_gasrem, align 8 + %"$gascmp_737" = icmp ugt i64 1, %"$gasrem_736" + br i1 %"$gascmp_737", label %"$out_of_gas_738", label %"$have_gas_739" + +"$out_of_gas_738": ; preds = %"$have_gas_728" + call void @_out_of_gas() + br label %"$have_gas_739" + +"$have_gas_739": ; preds = %"$out_of_gas_738", %"$have_gas_728" + %"$consume_740" = sub i64 %"$gasrem_736", 1 + store i64 %"$consume_740", i64* @_gasrem, align 8 + %"$$fundef_59_envp_741_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_59_envp_741_salloc" = call i8* @_salloc(i8* %"$$fundef_59_envp_741_load", i64 8) + %"$$fundef_59_envp_741" = bitcast i8* %"$$fundef_59_envp_741_salloc" to %"$$fundef_59_env_188"* + %"$$fundef_59_env_voidp_743" = bitcast %"$$fundef_59_env_188"* %"$$fundef_59_envp_741" to i8* + %"$$fundef_59_cloval_744" = insertvalue { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (%"$$fundef_59_env_188"*)* @"$fundef_59" to { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_59_env_voidp_743", 1 + %"$$fundef_59_env_list_foldk_745" = getelementptr inbounds %"$$fundef_59_env_188", %"$$fundef_59_env_188"* %"$$fundef_59_envp_741", i32 0, i32 0 + %"$list_foldk_746" = load { i8*, i8* }*, { i8*, i8* }** @list_foldk, align 8 + store { i8*, i8* }* %"$list_foldk_746", { i8*, i8* }** %"$$fundef_59_env_list_foldk_745", align 8 + %"$dyndisp_table_747_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$dyndisp_table_747_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_747_salloc_load", i64 32) + %"$dyndisp_table_747_salloc" = bitcast i8* %"$dyndisp_table_747_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_747" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_747_salloc" to { i8*, i8* }* + %"$dyndisp_gep_748" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_747", i32 0 + %"$dyndisp_pcast_749" = bitcast { i8*, i8* }* %"$dyndisp_gep_748" to { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_59_cloval_744", { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_749", align 8 + store { i8*, i8* }* %"$dyndisp_table_747", { i8*, i8* }** @ListUtils.list_eq, align 8, !dbg !81 + %"$gasrem_750" = load i64, i64* @_gasrem, align 8 + %"$gascmp_751" = icmp ugt i64 1, %"$gasrem_750" + br i1 %"$gascmp_751", label %"$out_of_gas_752", label %"$have_gas_753" + +"$out_of_gas_752": ; preds = %"$have_gas_739" + call void @_out_of_gas() + br label %"$have_gas_753" + +"$have_gas_753": ; preds = %"$out_of_gas_752", %"$have_gas_739" + %"$consume_754" = sub i64 %"$gasrem_750", 1 + store i64 %"$consume_754", i64* @_gasrem, align 8 + store { %TName_List_Message* (i8*, i8*)*, i8* } { %TName_List_Message* (i8*, i8*)* bitcast (%TName_List_Message* (%"$$fundef_81_env_181"*, i8*)* @"$fundef_81" to %TName_List_Message* (i8*, i8*)*), i8* null }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8, !dbg !82 + %"$gasrem_758" = load i64, i64* @_gasrem, align 8 + %"$gascmp_759" = icmp ugt i64 1, %"$gasrem_758" + br i1 %"$gascmp_759", label %"$out_of_gas_760", label %"$have_gas_761" + +"$out_of_gas_760": ; preds = %"$have_gas_753" + call void @_out_of_gas() + br label %"$have_gas_761" + +"$have_gas_761": ; preds = %"$out_of_gas_760", %"$have_gas_753" + %"$consume_762" = sub i64 %"$gasrem_758", 1 + store i64 %"$consume_762", i64* @_gasrem, align 8 + %"$ListUtils.list_head_763" = load { i8*, i8* }*, { i8*, i8* }** @ListUtils.list_head, align 8 + %"$ListUtils.list_head_764" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$ListUtils.list_head_763", i32 0 + %"$ListUtils.list_head_765" = bitcast { i8*, i8* }* %"$ListUtils.list_head_764" to { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* + %"$ListUtils.list_head_766" = load { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }, { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* %"$ListUtils.list_head_765", align 8 + %"$ListUtils.list_head_fptr_767" = extractvalue { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$ListUtils.list_head_766", 0 + %"$ListUtils.list_head_envptr_768" = extractvalue { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$ListUtils.list_head_766", 1 + %"$ListUtils.list_head_call_769" = call { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } %"$ListUtils.list_head_fptr_767"(i8* %"$ListUtils.list_head_envptr_768"), !dbg !83 + store { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } %"$ListUtils.list_head_call_769", { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }* @accounting_tests.list_head_string, align 8, !dbg !84 + %"$gasrem_770" = load i64, i64* @_gasrem, align 8 + %"$gascmp_771" = icmp ugt i64 1, %"$gasrem_770" + br i1 %"$gascmp_771", label %"$out_of_gas_772", label %"$have_gas_773" + +"$out_of_gas_772": ; preds = %"$have_gas_761" + call void @_out_of_gas() + br label %"$have_gas_773" + +"$have_gas_773": ; preds = %"$out_of_gas_772", %"$have_gas_761" + %"$consume_774" = sub i64 %"$gasrem_770", 1 + store i64 %"$consume_774", i64* @_gasrem, align 8 + %string_eq = alloca { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, align 8 + %"$gasrem_775" = load i64, i64* @_gasrem, align 8 + %"$gascmp_776" = icmp ugt i64 1, %"$gasrem_775" + br i1 %"$gascmp_776", label %"$out_of_gas_777", label %"$have_gas_778" + +"$out_of_gas_777": ; preds = %"$have_gas_773" + call void @_out_of_gas() + br label %"$have_gas_778" + +"$have_gas_778": ; preds = %"$out_of_gas_777", %"$have_gas_773" + %"$consume_779" = sub i64 %"$gasrem_775", 1 + store i64 %"$consume_779", i64* @_gasrem, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)* bitcast ({ %TName_Bool* (i8*, %String)*, i8* } (%"$$fundef_77_env_180"*, %String)* @"$fundef_77" to { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*), i8* null }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %string_eq, align 8, !dbg !85 + %"$gasrem_783" = load i64, i64* @_gasrem, align 8 + %"$gascmp_784" = icmp ugt i64 1, %"$gasrem_783" + br i1 %"$gascmp_784", label %"$out_of_gas_785", label %"$have_gas_786" + +"$out_of_gas_785": ; preds = %"$have_gas_778" + call void @_out_of_gas() + br label %"$have_gas_786" + +"$have_gas_786": ; preds = %"$out_of_gas_785", %"$have_gas_778" + %"$consume_787" = sub i64 %"$gasrem_783", 1 + store i64 %"$consume_787", i64* @_gasrem, align 8 + %list_eq_string = alloca { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }, align 8 + %"$gasrem_788" = load i64, i64* @_gasrem, align 8 + %"$gascmp_789" = icmp ugt i64 1, %"$gasrem_788" + br i1 %"$gascmp_789", label %"$out_of_gas_790", label %"$have_gas_791" + +"$out_of_gas_790": ; preds = %"$have_gas_786" + call void @_out_of_gas() + br label %"$have_gas_791" + +"$have_gas_791": ; preds = %"$out_of_gas_790", %"$have_gas_786" + %"$consume_792" = sub i64 %"$gasrem_788", 1 + store i64 %"$consume_792", i64* @_gasrem, align 8 + %"$ListUtils.list_eq_793" = load { i8*, i8* }*, { i8*, i8* }** @ListUtils.list_eq, align 8 + %"$ListUtils.list_eq_794" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$ListUtils.list_eq_793", i32 0 + %"$ListUtils.list_eq_795" = bitcast { i8*, i8* }* %"$ListUtils.list_eq_794" to { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* }* + %"$ListUtils.list_eq_796" = load { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* }* %"$ListUtils.list_eq_795", align 8 + %"$ListUtils.list_eq_fptr_797" = extractvalue { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* } %"$ListUtils.list_eq_796", 0 + %"$ListUtils.list_eq_envptr_798" = extractvalue { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* } %"$ListUtils.list_eq_796", 1 + %"$ListUtils.list_eq_call_799" = call { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } %"$ListUtils.list_eq_fptr_797"(i8* %"$ListUtils.list_eq_envptr_798"), !dbg !86 + store { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } %"$ListUtils.list_eq_call_799", { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }* %list_eq_string, align 8, !dbg !87 + %"$gasrem_800" = load i64, i64* @_gasrem, align 8 + %"$gascmp_801" = icmp ugt i64 1, %"$gasrem_800" + br i1 %"$gascmp_801", label %"$out_of_gas_802", label %"$have_gas_803" + +"$out_of_gas_802": ; preds = %"$have_gas_791" + call void @_out_of_gas() + br label %"$have_gas_803" + +"$have_gas_803": ; preds = %"$out_of_gas_802", %"$have_gas_791" + %"$consume_804" = sub i64 %"$gasrem_800", 1 + store i64 %"$consume_804", i64* @_gasrem, align 8 + %"$list_eq_string_14" = alloca { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + %"$list_eq_string_805" = load { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }, { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }* %list_eq_string, align 8 + %"$list_eq_string_fptr_806" = extractvalue { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } %"$list_eq_string_805", 0 + %"$list_eq_string_envptr_807" = extractvalue { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } %"$list_eq_string_805", 1 + %"$string_eq_808" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %string_eq, align 8 + %"$list_eq_string_call_809" = call { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$list_eq_string_fptr_806"(i8* %"$list_eq_string_envptr_807", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$string_eq_808"), !dbg !88 + store { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$list_eq_string_call_809", { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$list_eq_string_14", align 8, !dbg !88 + %"$$list_eq_string_14_810" = load { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$list_eq_string_14", align 8 + store { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$list_eq_string_14_810", { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* @accounting_tests.list_eq_string, align 8, !dbg !88 + ret void +} + +define void @_init_state() !dbg !89 { +entry: + %"$test_string_1_83" = alloca %String, align 8 + %"$gasrem_811" = load i64, i64* @_gasrem, align 8 + %"$gascmp_812" = icmp ugt i64 1, %"$gasrem_811" + br i1 %"$gascmp_812", label %"$out_of_gas_813", label %"$have_gas_814" + +"$out_of_gas_813": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_814" + +"$have_gas_814": ; preds = %"$out_of_gas_813", %entry + %"$consume_815" = sub i64 %"$gasrem_811", 1 + store i64 %"$consume_815", i64* @_gasrem, align 8 + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_816", i32 0, i32 0), i32 5 }, %String* %"$test_string_1_83", align 8, !dbg !90 + %"$execptr_load_817" = load i8*, i8** @_execptr, align 8 + %"$$test_string_1_83_819" = load %String, %String* %"$test_string_1_83", align 8 + %"$update_value_820" = alloca %String, align 8 + store %String %"$$test_string_1_83_819", %String* %"$update_value_820", align 8 + %"$update_value_821" = bitcast %String* %"$update_value_820" to i8* + call void @_update_field(i8* %"$execptr_load_817", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_1_818", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i8* %"$update_value_821"), !dbg !90 + %"$test_string_2_84" = alloca %String, align 8 + %"$gasrem_822" = load i64, i64* @_gasrem, align 8 + %"$gascmp_823" = icmp ugt i64 1, %"$gasrem_822" + br i1 %"$gascmp_823", label %"$out_of_gas_824", label %"$have_gas_825" + +"$out_of_gas_824": ; preds = %"$have_gas_814" + call void @_out_of_gas() + br label %"$have_gas_825" + +"$have_gas_825": ; preds = %"$out_of_gas_824", %"$have_gas_814" + %"$consume_826" = sub i64 %"$gasrem_822", 1 + store i64 %"$consume_826", i64* @_gasrem, align 8 + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_827", i32 0, i32 0), i32 5 }, %String* %"$test_string_2_84", align 8, !dbg !91 + %"$execptr_load_828" = load i8*, i8** @_execptr, align 8 + %"$$test_string_2_84_830" = load %String, %String* %"$test_string_2_84", align 8 + %"$update_value_831" = alloca %String, align 8 + store %String %"$$test_string_2_84_830", %String* %"$update_value_831", align 8 + %"$update_value_832" = bitcast %String* %"$update_value_831" to i8* + call void @_update_field(i8* %"$execptr_load_828", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_2_829", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i8* %"$update_value_832"), !dbg !91 + %"$outgoing_amount_85" = alloca %Uint128, align 8 + %"$gasrem_833" = load i64, i64* @_gasrem, align 8 + %"$gascmp_834" = icmp ugt i64 1, %"$gasrem_833" + br i1 %"$gascmp_834", label %"$out_of_gas_835", label %"$have_gas_836" + +"$out_of_gas_835": ; preds = %"$have_gas_825" + call void @_out_of_gas() + br label %"$have_gas_836" + +"$have_gas_836": ; preds = %"$out_of_gas_835", %"$have_gas_825" + %"$consume_837" = sub i64 %"$gasrem_833", 1 + store i64 %"$consume_837", i64* @_gasrem, align 8 + store %Uint128 { i128 10 }, %Uint128* %"$outgoing_amount_85", align 8, !dbg !92 + %"$execptr_load_838" = load i8*, i8** @_execptr, align 8 + %"$$outgoing_amount_85_840" = load %Uint128, %Uint128* %"$outgoing_amount_85", align 8 + %"$update_value_841" = alloca %Uint128, align 8 + store %Uint128 %"$$outgoing_amount_85_840", %Uint128* %"$update_value_841", align 8 + %"$update_value_842" = bitcast %Uint128* %"$update_value_841" to i8* + call void @_update_field(i8* %"$execptr_load_838", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_839", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i8* %"$update_value_842"), !dbg !92 + %"$max_outgoing_msgs_86" = alloca %Uint128, align 8 + %"$gasrem_843" = load i64, i64* @_gasrem, align 8 + %"$gascmp_844" = icmp ugt i64 1, %"$gasrem_843" + br i1 %"$gascmp_844", label %"$out_of_gas_845", label %"$have_gas_846" + +"$out_of_gas_845": ; preds = %"$have_gas_836" + call void @_out_of_gas() + br label %"$have_gas_846" + +"$have_gas_846": ; preds = %"$out_of_gas_845", %"$have_gas_836" + %"$consume_847" = sub i64 %"$gasrem_843", 1 + store i64 %"$consume_847", i64* @_gasrem, align 8 + store %Uint128 { i128 3 }, %Uint128* %"$max_outgoing_msgs_86", align 8, !dbg !93 + %"$execptr_load_848" = load i8*, i8** @_execptr, align 8 + %"$$max_outgoing_msgs_86_850" = load %Uint128, %Uint128* %"$max_outgoing_msgs_86", align 8 + %"$update_value_851" = alloca %Uint128, align 8 + store %Uint128 %"$$max_outgoing_msgs_86_850", %Uint128* %"$update_value_851", align 8 + %"$update_value_852" = bitcast %Uint128* %"$update_value_851" to i8* + call void @_update_field(i8* %"$execptr_load_848", i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$max_outgoing_msgs_849", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i8* %"$update_value_852"), !dbg !93 + ret void +} + +declare void @_update_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i8*) + +define internal void @"$Reset_853"(%Uint128 %_amount, [20 x i8]* %"$_origin_854", [20 x i8]* %"$_sender_855") !dbg !94 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_854", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_855", align 1 + %"$gasrem_856" = load i64, i64* @_gasrem, align 8 + %"$gascmp_857" = icmp ugt i64 1, %"$gasrem_856" + br i1 %"$gascmp_857", label %"$out_of_gas_858", label %"$have_gas_859" + +"$out_of_gas_858": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_859" + +"$have_gas_859": ; preds = %"$out_of_gas_858", %entry + %"$consume_860" = sub i64 %"$gasrem_856", 1 + store i64 %"$consume_860", i64* @_gasrem, align 8 + %msg = alloca i8*, align 8 + %"$gasrem_861" = load i64, i64* @_gasrem, align 8 + %"$gascmp_862" = icmp ugt i64 1, %"$gasrem_861" + br i1 %"$gascmp_862", label %"$out_of_gas_863", label %"$have_gas_864" + +"$out_of_gas_863": ; preds = %"$have_gas_859" + call void @_out_of_gas() + br label %"$have_gas_864" + +"$have_gas_864": ; preds = %"$out_of_gas_863", %"$have_gas_859" + %"$consume_865" = sub i64 %"$gasrem_861", 1 + store i64 %"$consume_865", i64* @_gasrem, align 8 + %"$msgobj_866_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_866_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_866_salloc_load", i64 125) + %"$msgobj_866_salloc" = bitcast i8* %"$msgobj_866_salloc_salloc" to [125 x i8]* + %"$msgobj_866" = bitcast [125 x i8]* %"$msgobj_866_salloc" to i8* + store i8 3, i8* %"$msgobj_866", align 1 + %"$msgobj_fname_868" = getelementptr i8, i8* %"$msgobj_866", i32 1 + %"$msgobj_fname_869" = bitcast i8* %"$msgobj_fname_868" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_867", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_869", align 8 + %"$msgobj_td_870" = getelementptr i8, i8* %"$msgobj_866", i32 17 + %"$msgobj_td_871" = bitcast i8* %"$msgobj_td_870" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_871", align 8 + %"$support_contract_872" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_873" = getelementptr i8, i8* %"$msgobj_866", i32 25 + %"$msgobj_v_874" = bitcast i8* %"$msgobj_v_873" to [20 x i8]* + store [20 x i8] %"$support_contract_872", [20 x i8]* %"$msgobj_v_874", align 1 + %"$msgobj_fname_876" = getelementptr i8, i8* %"$msgobj_866", i32 45 + %"$msgobj_fname_877" = bitcast i8* %"$msgobj_fname_876" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_875", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_877", align 8 + %"$msgobj_td_878" = getelementptr i8, i8* %"$msgobj_866", i32 61 + %"$msgobj_td_879" = bitcast i8* %"$msgobj_td_878" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_879", align 8 + %"$msgobj_v_881" = getelementptr i8, i8* %"$msgobj_866", i32 69 + %"$msgobj_v_882" = bitcast i8* %"$msgobj_v_881" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_880", i32 0, i32 0), i32 5 }, %String* %"$msgobj_v_882", align 8 + %"$msgobj_fname_884" = getelementptr i8, i8* %"$msgobj_866", i32 85 + %"$msgobj_fname_885" = bitcast i8* %"$msgobj_fname_884" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_883", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_885", align 8 + %"$msgobj_td_886" = getelementptr i8, i8* %"$msgobj_866", i32 101 + %"$msgobj_td_887" = bitcast i8* %"$msgobj_td_886" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_887", align 8 + %"$msgobj_v_888" = getelementptr i8, i8* %"$msgobj_866", i32 109 + %"$msgobj_v_889" = bitcast i8* %"$msgobj_v_888" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_889", align 8 + store i8* %"$msgobj_866", i8** %msg, align 8, !dbg !95 + %"$gasrem_891" = load i64, i64* @_gasrem, align 8 + %"$gascmp_892" = icmp ugt i64 1, %"$gasrem_891" + br i1 %"$gascmp_892", label %"$out_of_gas_893", label %"$have_gas_894" + +"$out_of_gas_893": ; preds = %"$have_gas_864" + call void @_out_of_gas() + br label %"$have_gas_894" + +"$have_gas_894": ; preds = %"$out_of_gas_893", %"$have_gas_864" + %"$consume_895" = sub i64 %"$gasrem_891", 1 + store i64 %"$consume_895", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_896" = load i64, i64* @_gasrem, align 8 + %"$gascmp_897" = icmp ugt i64 1, %"$gasrem_896" + br i1 %"$gascmp_897", label %"$out_of_gas_898", label %"$have_gas_899" + +"$out_of_gas_898": ; preds = %"$have_gas_894" + call void @_out_of_gas() + br label %"$have_gas_899" + +"$have_gas_899": ; preds = %"$out_of_gas_898", %"$have_gas_894" + %"$consume_900" = sub i64 %"$gasrem_896", 1 + store i64 %"$consume_900", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_15" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_901" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_902" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_901", 0 + %"$accounting_tests.one_msg_envptr_903" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_901", 1 + %"$msg_904" = load i8*, i8** %msg, align 8 + %"$accounting_tests.one_msg_call_905" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_902"(i8* %"$accounting_tests.one_msg_envptr_903", i8* %"$msg_904"), !dbg !96 + store %TName_List_Message* %"$accounting_tests.one_msg_call_905", %TName_List_Message** %"$accounting_tests.one_msg_15", align 8, !dbg !96 + %"$$accounting_tests.one_msg_15_906" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_15", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_15_906", %TName_List_Message** %msgs, align 8, !dbg !96 + %"$msgs_907" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_907_908" = bitcast %TName_List_Message* %"$msgs_907" to i8* + %"$_literal_cost_call_909" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_907_908") + %"$gasrem_910" = load i64, i64* @_gasrem, align 8 + %"$gascmp_911" = icmp ugt i64 %"$_literal_cost_call_909", %"$gasrem_910" + br i1 %"$gascmp_911", label %"$out_of_gas_912", label %"$have_gas_913" + +"$out_of_gas_912": ; preds = %"$have_gas_899" + call void @_out_of_gas() + br label %"$have_gas_913" + +"$have_gas_913": ; preds = %"$out_of_gas_912", %"$have_gas_899" + %"$consume_914" = sub i64 %"$gasrem_910", %"$_literal_cost_call_909" + store i64 %"$consume_914", i64* @_gasrem, align 8 + %"$execptr_load_915" = load i8*, i8** @_execptr, align 8 + %"$msgs_916" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_915", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_916"), !dbg !97 + %"$gasrem_917" = load i64, i64* @_gasrem, align 8 + %"$gascmp_918" = icmp ugt i64 1, %"$gasrem_917" + br i1 %"$gascmp_918", label %"$out_of_gas_919", label %"$have_gas_920" + +"$out_of_gas_919": ; preds = %"$have_gas_913" + call void @_out_of_gas() + br label %"$have_gas_920" + +"$have_gas_920": ; preds = %"$out_of_gas_919", %"$have_gas_913" + %"$consume_921" = sub i64 %"$gasrem_917", 1 + store i64 %"$consume_921", i64* @_gasrem, align 8 + %"$execptr_load_922" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_922"), !dbg !98 + ret void +} + +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + +declare void @_send(i8*, %_TyDescrTy_Typ*, %TName_List_Message*) + +declare void @_accept(i8*) + +define void @Reset(i8* %0) !dbg !99 { +entry: + %"$_amount_924" = getelementptr i8, i8* %0, i32 0 + %"$_amount_925" = bitcast i8* %"$_amount_924" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_925", align 8 + %"$_origin_926" = getelementptr i8, i8* %0, i32 16 + %"$_origin_927" = bitcast i8* %"$_origin_926" to [20 x i8]* + %"$_sender_928" = getelementptr i8, i8* %0, i32 36 + %"$_sender_929" = bitcast i8* %"$_sender_928" to [20 x i8]* + call void @"$Reset_853"(%Uint128 %_amount, [20 x i8]* %"$_origin_927", [20 x i8]* %"$_sender_929"), !dbg !100 + ret void +} + +define internal void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$_origin_931", [20 x i8]* %"$_sender_932") !dbg !101 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_931", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_932", align 1 + %ss = alloca %TName_List_String*, align 8 + %"$execptr_load_934" = load i8*, i8** @_execptr, align 8 + %"$ss_support_contract_935" = alloca [20 x i8], align 1 + %"$support_contract_936" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + store [20 x i8] %"$support_contract_936", [20 x i8]* %"$ss_support_contract_935", align 1 + %"$ss_call_937" = call i8* @_fetch_remote_field(i8* %"$execptr_load_934", [20 x i8]* %"$ss_support_contract_935", i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stored_strings_933", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", i32 0, i8* null, i32 1), !dbg !102 + %"$ss_938" = bitcast i8* %"$ss_call_937" to %TName_List_String* + store %TName_List_String* %"$ss_938", %TName_List_String** %ss, align 8 + %"$ss_939" = load %TName_List_String*, %TName_List_String** %ss, align 8 + %"$$ss_939_940" = bitcast %TName_List_String* %"$ss_939" to i8* + %"$_literal_cost_call_941" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", i8* %"$$ss_939_940") + %"$gasadd_942" = add i64 %"$_literal_cost_call_941", 0 + %"$gasrem_943" = load i64, i64* @_gasrem, align 8 + %"$gascmp_944" = icmp ugt i64 %"$gasadd_942", %"$gasrem_943" + br i1 %"$gascmp_944", label %"$out_of_gas_945", label %"$have_gas_946" + +"$out_of_gas_945": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_946" + +"$have_gas_946": ; preds = %"$out_of_gas_945", %entry + %"$consume_947" = sub i64 %"$gasrem_943", %"$gasadd_942" + store i64 %"$consume_947", i64* @_gasrem, align 8 + %"$gasrem_948" = load i64, i64* @_gasrem, align 8 + %"$gascmp_949" = icmp ugt i64 1, %"$gasrem_948" + br i1 %"$gascmp_949", label %"$out_of_gas_950", label %"$have_gas_951" + +"$out_of_gas_950": ; preds = %"$have_gas_946" + call void @_out_of_gas() + br label %"$have_gas_951" + +"$have_gas_951": ; preds = %"$out_of_gas_950", %"$have_gas_946" + %"$consume_952" = sub i64 %"$gasrem_948", 1 + store i64 %"$consume_952", i64* @_gasrem, align 8 + %cur_head = alloca %TName_Option_String*, align 8 + %"$gasrem_953" = load i64, i64* @_gasrem, align 8 + %"$gascmp_954" = icmp ugt i64 1, %"$gasrem_953" + br i1 %"$gascmp_954", label %"$out_of_gas_955", label %"$have_gas_956" + +"$out_of_gas_955": ; preds = %"$have_gas_951" + call void @_out_of_gas() + br label %"$have_gas_956" + +"$have_gas_956": ; preds = %"$out_of_gas_955", %"$have_gas_951" + %"$consume_957" = sub i64 %"$gasrem_953", 1 + store i64 %"$consume_957", i64* @_gasrem, align 8 + %"$accounting_tests.list_head_string_16" = alloca %TName_Option_String*, align 8 + %"$accounting_tests.list_head_string_958" = load { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }, { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }* @accounting_tests.list_head_string, align 8 + %"$accounting_tests.list_head_string_fptr_959" = extractvalue { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } %"$accounting_tests.list_head_string_958", 0 + %"$accounting_tests.list_head_string_envptr_960" = extractvalue { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } %"$accounting_tests.list_head_string_958", 1 + %"$ss_961" = load %TName_List_String*, %TName_List_String** %ss, align 8 + %"$accounting_tests.list_head_string_call_962" = call %TName_Option_String* %"$accounting_tests.list_head_string_fptr_959"(i8* %"$accounting_tests.list_head_string_envptr_960", %TName_List_String* %"$ss_961"), !dbg !103 + store %TName_Option_String* %"$accounting_tests.list_head_string_call_962", %TName_Option_String** %"$accounting_tests.list_head_string_16", align 8, !dbg !103 + %"$$accounting_tests.list_head_string_16_963" = load %TName_Option_String*, %TName_Option_String** %"$accounting_tests.list_head_string_16", align 8 + store %TName_Option_String* %"$$accounting_tests.list_head_string_16_963", %TName_Option_String** %cur_head, align 8, !dbg !103 + %"$gasrem_964" = load i64, i64* @_gasrem, align 8 + %"$gascmp_965" = icmp ugt i64 2, %"$gasrem_964" + br i1 %"$gascmp_965", label %"$out_of_gas_966", label %"$have_gas_967" + +"$out_of_gas_966": ; preds = %"$have_gas_956" + call void @_out_of_gas() + br label %"$have_gas_967" + +"$have_gas_967": ; preds = %"$out_of_gas_966", %"$have_gas_956" + %"$consume_968" = sub i64 %"$gasrem_964", 2 + store i64 %"$consume_968", i64* @_gasrem, align 8 + %"$cur_head_970" = load %TName_Option_String*, %TName_Option_String** %cur_head, align 8 + %"$cur_head_tag_971" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$cur_head_970", i32 0, i32 0 + %"$cur_head_tag_972" = load i8, i8* %"$cur_head_tag_971", align 1 + switch i8 %"$cur_head_tag_972", label %"$empty_default_973" [ + i8 1, label %"$None_974" + i8 0, label %"$Some_976" + ], !dbg !104 + +"$None_974": ; preds = %"$have_gas_967" + %"$cur_head_975" = bitcast %TName_Option_String* %"$cur_head_970" to %CName_None_String* + br label %"$matchsucc_969" + +"$Some_976": ; preds = %"$have_gas_967" + %"$cur_head_977" = bitcast %TName_Option_String* %"$cur_head_970" to %CName_Some_String* + %"$$cur_head_2_gep_978" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$cur_head_977", i32 0, i32 1 + %"$$cur_head_2_load_979" = load %String, %String* %"$$cur_head_2_gep_978", align 8 + %"$cur_head_2" = alloca %String, align 8 + store %String %"$$cur_head_2_load_979", %String* %"$cur_head_2", align 8 + %"$gasrem_980" = load i64, i64* @_gasrem, align 8 + %"$gascmp_981" = icmp ugt i64 1, %"$gasrem_980" + br i1 %"$gascmp_981", label %"$out_of_gas_982", label %"$have_gas_983" + +"$out_of_gas_982": ; preds = %"$Some_976" + call void @_out_of_gas() + br label %"$have_gas_983" + +"$have_gas_983": ; preds = %"$out_of_gas_982", %"$Some_976" + %"$consume_984" = sub i64 %"$gasrem_980", 1 + store i64 %"$consume_984", i64* @_gasrem, align 8 + %e = alloca i8*, align 8 + %"$gasrem_985" = load i64, i64* @_gasrem, align 8 + %"$gascmp_986" = icmp ugt i64 1, %"$gasrem_985" + br i1 %"$gascmp_986", label %"$out_of_gas_987", label %"$have_gas_988" + +"$out_of_gas_987": ; preds = %"$have_gas_983" + call void @_out_of_gas() + br label %"$have_gas_988" + +"$have_gas_988": ; preds = %"$out_of_gas_987", %"$have_gas_983" + %"$consume_989" = sub i64 %"$gasrem_985", 1 + store i64 %"$consume_989", i64* @_gasrem, align 8 + %"$msgobj_990_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_990_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_990_salloc_load", i64 41) + %"$msgobj_990_salloc" = bitcast i8* %"$msgobj_990_salloc_salloc" to [41 x i8]* + %"$msgobj_990" = bitcast [41 x i8]* %"$msgobj_990_salloc" to i8* + store i8 1, i8* %"$msgobj_990", align 1 + %"$msgobj_fname_992" = getelementptr i8, i8* %"$msgobj_990", i32 1 + %"$msgobj_fname_993" = bitcast i8* %"$msgobj_fname_992" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_991", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_993", align 8 + %"$msgobj_td_994" = getelementptr i8, i8* %"$msgobj_990", i32 17 + %"$msgobj_td_995" = bitcast i8* %"$msgobj_td_994" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_995", align 8 + %"$msgobj_v_997" = getelementptr i8, i8* %"$msgobj_990", i32 25 + %"$msgobj_v_998" = bitcast i8* %"$msgobj_v_997" to %String* + store %String { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"$stringlit_996", i32 0, i32 0), i32 26 }, %String* %"$msgobj_v_998", align 8 + store i8* %"$msgobj_990", i8** %e, align 8, !dbg !105 + %"$e_1000" = load i8*, i8** %e, align 8 + %"$_literal_cost_call_1002" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_1000") + %"$gasrem_1003" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1004" = icmp ugt i64 %"$_literal_cost_call_1002", %"$gasrem_1003" + br i1 %"$gascmp_1004", label %"$out_of_gas_1005", label %"$have_gas_1006" + +"$out_of_gas_1005": ; preds = %"$have_gas_988" + call void @_out_of_gas() + br label %"$have_gas_1006" + +"$have_gas_1006": ; preds = %"$out_of_gas_1005", %"$have_gas_988" + %"$consume_1007" = sub i64 %"$gasrem_1003", %"$_literal_cost_call_1002" + store i64 %"$consume_1007", i64* @_gasrem, align 8 + %"$execptr_load_1008" = load i8*, i8** @_execptr, align 8 + %"$e_1009" = load i8*, i8** %e, align 8 + call void @_throw(i8* %"$execptr_load_1008", %_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_1009"), !dbg !108 + br label %"$matchsucc_969" + +"$empty_default_973": ; preds = %"$have_gas_967" + br label %"$matchsucc_969" + +"$matchsucc_969": ; preds = %"$have_gas_1006", %"$None_974", %"$empty_default_973" + %amount = alloca %Uint128, align 8 + %"$execptr_load_1011" = load i8*, i8** @_execptr, align 8 + %"$amount_call_1012" = call i8* @_fetch_field(i8* %"$execptr_load_1011", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_1010", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !109 + %"$amount_1013" = bitcast i8* %"$amount_call_1012" to %Uint128* + %"$amount_1014" = load %Uint128, %Uint128* %"$amount_1013", align 8 + store %Uint128 %"$amount_1014", %Uint128* %amount, align 8 + %"$_literal_cost_amount_1015" = alloca %Uint128, align 8 + %"$amount_1016" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_1016", %Uint128* %"$_literal_cost_amount_1015", align 8 + %"$$_literal_cost_amount_1015_1017" = bitcast %Uint128* %"$_literal_cost_amount_1015" to i8* + %"$_literal_cost_call_1018" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_1015_1017") + %"$gasadd_1019" = add i64 %"$_literal_cost_call_1018", 0 + %"$gasrem_1020" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1021" = icmp ugt i64 %"$gasadd_1019", %"$gasrem_1020" + br i1 %"$gascmp_1021", label %"$out_of_gas_1022", label %"$have_gas_1023" + +"$out_of_gas_1022": ; preds = %"$matchsucc_969" + call void @_out_of_gas() + br label %"$have_gas_1023" + +"$have_gas_1023": ; preds = %"$out_of_gas_1022", %"$matchsucc_969" + %"$consume_1024" = sub i64 %"$gasrem_1020", %"$gasadd_1019" + store i64 %"$consume_1024", i64* @_gasrem, align 8 + %max_msgs = alloca %Uint128, align 8 + %"$execptr_load_1026" = load i8*, i8** @_execptr, align 8 + %"$max_msgs_call_1027" = call i8* @_fetch_field(i8* %"$execptr_load_1026", i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$max_outgoing_msgs_1025", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !110 + %"$max_msgs_1028" = bitcast i8* %"$max_msgs_call_1027" to %Uint128* + %"$max_msgs_1029" = load %Uint128, %Uint128* %"$max_msgs_1028", align 8 + store %Uint128 %"$max_msgs_1029", %Uint128* %max_msgs, align 8 + %"$_literal_cost_max_msgs_1030" = alloca %Uint128, align 8 + %"$max_msgs_1031" = load %Uint128, %Uint128* %max_msgs, align 8 + store %Uint128 %"$max_msgs_1031", %Uint128* %"$_literal_cost_max_msgs_1030", align 8 + %"$$_literal_cost_max_msgs_1030_1032" = bitcast %Uint128* %"$_literal_cost_max_msgs_1030" to i8* + %"$_literal_cost_call_1033" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_max_msgs_1030_1032") + %"$gasadd_1034" = add i64 %"$_literal_cost_call_1033", 0 + %"$gasrem_1035" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1036" = icmp ugt i64 %"$gasadd_1034", %"$gasrem_1035" + br i1 %"$gascmp_1036", label %"$out_of_gas_1037", label %"$have_gas_1038" + +"$out_of_gas_1037": ; preds = %"$have_gas_1023" + call void @_out_of_gas() + br label %"$have_gas_1038" + +"$have_gas_1038": ; preds = %"$out_of_gas_1037", %"$have_gas_1023" + %"$consume_1039" = sub i64 %"$gasrem_1035", %"$gasadd_1034" + store i64 %"$consume_1039", i64* @_gasrem, align 8 + %"$gasrem_1040" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1041" = icmp ugt i64 1, %"$gasrem_1040" + br i1 %"$gascmp_1041", label %"$out_of_gas_1042", label %"$have_gas_1043" + +"$out_of_gas_1042": ; preds = %"$have_gas_1038" + call void @_out_of_gas() + br label %"$have_gas_1043" + +"$have_gas_1043": ; preds = %"$out_of_gas_1042", %"$have_gas_1038" + %"$consume_1044" = sub i64 %"$gasrem_1040", 1 + store i64 %"$consume_1044", i64* @_gasrem, align 8 + %minimum = alloca %Uint128, align 8 + %"$amount_1045" = load %Uint128, %Uint128* %amount, align 8 + %"$max_msgs_1046" = load %Uint128, %Uint128* %max_msgs, align 8 + %"$mul_call_1047" = call %Uint128 @_mul_Uint128(%Uint128 %"$amount_1045", %Uint128 %"$max_msgs_1046"), !dbg !111 + store %Uint128 %"$mul_call_1047", %Uint128* %minimum, align 8, !dbg !111 + %bal = alloca %Uint128, align 8 + %"$execptr_load_1049" = load i8*, i8** @_execptr, align 8 + %"$bal_call_1050" = call i8* @_fetch_field(i8* %"$execptr_load_1049", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_1048", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !112 + %"$bal_1051" = bitcast i8* %"$bal_call_1050" to %Uint128* + %"$bal_1052" = load %Uint128, %Uint128* %"$bal_1051", align 8 + store %Uint128 %"$bal_1052", %Uint128* %bal, align 8 + %"$_literal_cost_bal_1053" = alloca %Uint128, align 8 + %"$bal_1054" = load %Uint128, %Uint128* %bal, align 8 + store %Uint128 %"$bal_1054", %Uint128* %"$_literal_cost_bal_1053", align 8 + %"$$_literal_cost_bal_1053_1055" = bitcast %Uint128* %"$_literal_cost_bal_1053" to i8* + %"$_literal_cost_call_1056" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_bal_1053_1055") + %"$gasadd_1057" = add i64 %"$_literal_cost_call_1056", 0 + %"$gasrem_1058" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1059" = icmp ugt i64 %"$gasadd_1057", %"$gasrem_1058" + br i1 %"$gascmp_1059", label %"$out_of_gas_1060", label %"$have_gas_1061" + +"$out_of_gas_1060": ; preds = %"$have_gas_1043" + call void @_out_of_gas() + br label %"$have_gas_1061" + +"$have_gas_1061": ; preds = %"$out_of_gas_1060", %"$have_gas_1043" + %"$consume_1062" = sub i64 %"$gasrem_1058", %"$gasadd_1057" + store i64 %"$consume_1062", i64* @_gasrem, align 8 + %"$gasrem_1063" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1064" = icmp ugt i64 1, %"$gasrem_1063" + br i1 %"$gascmp_1064", label %"$out_of_gas_1065", label %"$have_gas_1066" + +"$out_of_gas_1065": ; preds = %"$have_gas_1061" + call void @_out_of_gas() + br label %"$have_gas_1066" + +"$have_gas_1066": ; preds = %"$out_of_gas_1065", %"$have_gas_1061" + %"$consume_1067" = sub i64 %"$gasrem_1063", 1 + store i64 %"$consume_1067", i64* @_gasrem, align 8 + %insufficient_balance = alloca %TName_Bool*, align 8 + %"$execptr_load_1068" = load i8*, i8** @_execptr, align 8 + %"$bal_1069" = load %Uint128, %Uint128* %bal, align 8 + %"$minimum_1070" = load %Uint128, %Uint128* %minimum, align 8 + %"$lt_call_1071" = call %TName_Bool* @_lt_Uint128(i8* %"$execptr_load_1068", %Uint128 %"$bal_1069", %Uint128 %"$minimum_1070"), !dbg !113 + store %TName_Bool* %"$lt_call_1071", %TName_Bool** %insufficient_balance, align 8, !dbg !113 + %"$gasrem_1073" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1074" = icmp ugt i64 2, %"$gasrem_1073" + br i1 %"$gascmp_1074", label %"$out_of_gas_1075", label %"$have_gas_1076" + +"$out_of_gas_1075": ; preds = %"$have_gas_1066" + call void @_out_of_gas() + br label %"$have_gas_1076" + +"$have_gas_1076": ; preds = %"$out_of_gas_1075", %"$have_gas_1066" + %"$consume_1077" = sub i64 %"$gasrem_1073", 2 + store i64 %"$consume_1077", i64* @_gasrem, align 8 + %"$insufficient_balance_1079" = load %TName_Bool*, %TName_Bool** %insufficient_balance, align 8 + %"$insufficient_balance_tag_1080" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$insufficient_balance_1079", i32 0, i32 0 + %"$insufficient_balance_tag_1081" = load i8, i8* %"$insufficient_balance_tag_1080", align 1 + switch i8 %"$insufficient_balance_tag_1081", label %"$empty_default_1082" [ + i8 1, label %"$False_1083" + i8 0, label %"$True_1085" + ], !dbg !114 + +"$False_1083": ; preds = %"$have_gas_1076" + %"$insufficient_balance_1084" = bitcast %TName_Bool* %"$insufficient_balance_1079" to %CName_False* + br label %"$matchsucc_1078" + +"$True_1085": ; preds = %"$have_gas_1076" + %"$insufficient_balance_1086" = bitcast %TName_Bool* %"$insufficient_balance_1079" to %CName_True* + %"$gasrem_1087" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1088" = icmp ugt i64 1, %"$gasrem_1087" + br i1 %"$gascmp_1088", label %"$out_of_gas_1089", label %"$have_gas_1090" + +"$out_of_gas_1089": ; preds = %"$True_1085" + call void @_out_of_gas() + br label %"$have_gas_1090" + +"$have_gas_1090": ; preds = %"$out_of_gas_1089", %"$True_1085" + %"$consume_1091" = sub i64 %"$gasrem_1087", 1 + store i64 %"$consume_1091", i64* @_gasrem, align 8 + %e1 = alloca i8*, align 8 + %"$gasrem_1092" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1093" = icmp ugt i64 1, %"$gasrem_1092" + br i1 %"$gascmp_1093", label %"$out_of_gas_1094", label %"$have_gas_1095" + +"$out_of_gas_1094": ; preds = %"$have_gas_1090" + call void @_out_of_gas() + br label %"$have_gas_1095" + +"$have_gas_1095": ; preds = %"$out_of_gas_1094", %"$have_gas_1090" + %"$consume_1096" = sub i64 %"$gasrem_1092", 1 + store i64 %"$consume_1096", i64* @_gasrem, align 8 + %"$msgobj_1097_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1097_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1097_salloc_load", i64 41) + %"$msgobj_1097_salloc" = bitcast i8* %"$msgobj_1097_salloc_salloc" to [41 x i8]* + %"$msgobj_1097" = bitcast [41 x i8]* %"$msgobj_1097_salloc" to i8* + store i8 1, i8* %"$msgobj_1097", align 1 + %"$msgobj_fname_1099" = getelementptr i8, i8* %"$msgobj_1097", i32 1 + %"$msgobj_fname_1100" = bitcast i8* %"$msgobj_fname_1099" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1098", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1100", align 8 + %"$msgobj_td_1101" = getelementptr i8, i8* %"$msgobj_1097", i32 17 + %"$msgobj_td_1102" = bitcast i8* %"$msgobj_td_1101" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1102", align 8 + %"$msgobj_v_1104" = getelementptr i8, i8* %"$msgobj_1097", i32 25 + %"$msgobj_v_1105" = bitcast i8* %"$msgobj_v_1104" to %String* + store %String { i8* getelementptr inbounds ([30 x i8], [30 x i8]* @"$stringlit_1103", i32 0, i32 0), i32 30 }, %String* %"$msgobj_v_1105", align 8 + store i8* %"$msgobj_1097", i8** %e1, align 8, !dbg !115 + %"$e_1107" = load i8*, i8** %e1, align 8 + %"$_literal_cost_call_1109" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_1107") + %"$gasrem_1110" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1111" = icmp ugt i64 %"$_literal_cost_call_1109", %"$gasrem_1110" + br i1 %"$gascmp_1111", label %"$out_of_gas_1112", label %"$have_gas_1113" + +"$out_of_gas_1112": ; preds = %"$have_gas_1095" + call void @_out_of_gas() + br label %"$have_gas_1113" + +"$have_gas_1113": ; preds = %"$out_of_gas_1112", %"$have_gas_1095" + %"$consume_1114" = sub i64 %"$gasrem_1110", %"$_literal_cost_call_1109" + store i64 %"$consume_1114", i64* @_gasrem, align 8 + %"$execptr_load_1115" = load i8*, i8** @_execptr, align 8 + %"$e_1116" = load i8*, i8** %e1, align 8 + call void @_throw(i8* %"$execptr_load_1115", %_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_1116"), !dbg !118 + br label %"$matchsucc_1078" + +"$empty_default_1082": ; preds = %"$have_gas_1076" + br label %"$matchsucc_1078" + +"$matchsucc_1078": ; preds = %"$have_gas_1113", %"$False_1083", %"$empty_default_1082" + ret void +} + +declare i8* @_fetch_remote_field(i8*, [20 x i8]*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) + +declare void @_throw(i8*, %_TyDescrTy_Typ*, i8*) + +declare i8* @_fetch_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) + +declare %Uint128 @_mul_Uint128(%Uint128, %Uint128) + +declare %TName_Bool* @_lt_Uint128(i8*, %Uint128, %Uint128) + +define internal void @"$Test_Insufficient_Balance_1117"(%Uint128 %_amount, [20 x i8]* %"$_origin_1118", [20 x i8]* %"$_sender_1119") !dbg !119 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1118", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1119", align 1 + %amount = alloca %Uint128, align 8 + %"$execptr_load_1121" = load i8*, i8** @_execptr, align 8 + %"$amount_call_1122" = call i8* @_fetch_field(i8* %"$execptr_load_1121", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_1120", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !120 + %"$amount_1123" = bitcast i8* %"$amount_call_1122" to %Uint128* + %"$amount_1124" = load %Uint128, %Uint128* %"$amount_1123", align 8 + store %Uint128 %"$amount_1124", %Uint128* %amount, align 8 + %"$_literal_cost_amount_1125" = alloca %Uint128, align 8 + %"$amount_1126" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_1126", %Uint128* %"$_literal_cost_amount_1125", align 8 + %"$$_literal_cost_amount_1125_1127" = bitcast %Uint128* %"$_literal_cost_amount_1125" to i8* + %"$_literal_cost_call_1128" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_1125_1127") + %"$gasadd_1129" = add i64 %"$_literal_cost_call_1128", 0 + %"$gasrem_1130" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1131" = icmp ugt i64 %"$gasadd_1129", %"$gasrem_1130" + br i1 %"$gascmp_1131", label %"$out_of_gas_1132", label %"$have_gas_1133" + +"$out_of_gas_1132": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1133" + +"$have_gas_1133": ; preds = %"$out_of_gas_1132", %entry + %"$consume_1134" = sub i64 %"$gasrem_1130", %"$gasadd_1129" + store i64 %"$consume_1134", i64* @_gasrem, align 8 + %"$gasrem_1135" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1136" = icmp ugt i64 1, %"$gasrem_1135" + br i1 %"$gascmp_1136", label %"$out_of_gas_1137", label %"$have_gas_1138" + +"$out_of_gas_1137": ; preds = %"$have_gas_1133" + call void @_out_of_gas() + br label %"$have_gas_1138" + +"$have_gas_1138": ; preds = %"$out_of_gas_1137", %"$have_gas_1133" + %"$consume_1139" = sub i64 %"$gasrem_1135", 1 + store i64 %"$consume_1139", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_1140" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1141" = icmp ugt i64 1, %"$gasrem_1140" + br i1 %"$gascmp_1141", label %"$out_of_gas_1142", label %"$have_gas_1143" + +"$out_of_gas_1142": ; preds = %"$have_gas_1138" + call void @_out_of_gas() + br label %"$have_gas_1143" + +"$have_gas_1143": ; preds = %"$out_of_gas_1142", %"$have_gas_1138" + %"$consume_1144" = sub i64 %"$gasrem_1140", 1 + store i64 %"$consume_1144", i64* @_gasrem, align 8 + %"$msgobj_1145_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1145_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1145_salloc_load", i64 125) + %"$msgobj_1145_salloc" = bitcast i8* %"$msgobj_1145_salloc_salloc" to [125 x i8]* + %"$msgobj_1145" = bitcast [125 x i8]* %"$msgobj_1145_salloc" to i8* + store i8 3, i8* %"$msgobj_1145", align 1 + %"$msgobj_fname_1147" = getelementptr i8, i8* %"$msgobj_1145", i32 1 + %"$msgobj_fname_1148" = bitcast i8* %"$msgobj_fname_1147" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1146", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1148", align 8 + %"$msgobj_td_1149" = getelementptr i8, i8* %"$msgobj_1145", i32 17 + %"$msgobj_td_1150" = bitcast i8* %"$msgobj_td_1149" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1150", align 8 + %"$support_contract_1151" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_1152" = getelementptr i8, i8* %"$msgobj_1145", i32 25 + %"$msgobj_v_1153" = bitcast i8* %"$msgobj_v_1152" to [20 x i8]* + store [20 x i8] %"$support_contract_1151", [20 x i8]* %"$msgobj_v_1153", align 1 + %"$msgobj_fname_1155" = getelementptr i8, i8* %"$msgobj_1145", i32 45 + %"$msgobj_fname_1156" = bitcast i8* %"$msgobj_fname_1155" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1154", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1156", align 8 + %"$msgobj_td_1157" = getelementptr i8, i8* %"$msgobj_1145", i32 61 + %"$msgobj_td_1158" = bitcast i8* %"$msgobj_td_1157" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1158", align 8 + %"$msgobj_v_1160" = getelementptr i8, i8* %"$msgobj_1145", i32 69 + %"$msgobj_v_1161" = bitcast i8* %"$msgobj_v_1160" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_1159", i32 0, i32 0), i32 9 }, %String* %"$msgobj_v_1161", align 8 + %"$msgobj_fname_1163" = getelementptr i8, i8* %"$msgobj_1145", i32 85 + %"$msgobj_fname_1164" = bitcast i8* %"$msgobj_fname_1163" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1162", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1164", align 8 + %"$msgobj_td_1165" = getelementptr i8, i8* %"$msgobj_1145", i32 101 + %"$msgobj_td_1166" = bitcast i8* %"$msgobj_td_1165" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1166", align 8 + %"$amount_1167" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_1168" = getelementptr i8, i8* %"$msgobj_1145", i32 109 + %"$msgobj_v_1169" = bitcast i8* %"$msgobj_v_1168" to %Uint128* + store %Uint128 %"$amount_1167", %Uint128* %"$msgobj_v_1169", align 8 + store i8* %"$msgobj_1145", i8** %msg1, align 8, !dbg !121 + %"$gasrem_1171" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1172" = icmp ugt i64 1, %"$gasrem_1171" + br i1 %"$gascmp_1172", label %"$out_of_gas_1173", label %"$have_gas_1174" + +"$out_of_gas_1173": ; preds = %"$have_gas_1143" + call void @_out_of_gas() + br label %"$have_gas_1174" + +"$have_gas_1174": ; preds = %"$out_of_gas_1173", %"$have_gas_1143" + %"$consume_1175" = sub i64 %"$gasrem_1171", 1 + store i64 %"$consume_1175", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_1176" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1177" = icmp ugt i64 1, %"$gasrem_1176" + br i1 %"$gascmp_1177", label %"$out_of_gas_1178", label %"$have_gas_1179" + +"$out_of_gas_1178": ; preds = %"$have_gas_1174" + call void @_out_of_gas() + br label %"$have_gas_1179" + +"$have_gas_1179": ; preds = %"$out_of_gas_1178", %"$have_gas_1174" + %"$consume_1180" = sub i64 %"$gasrem_1176", 1 + store i64 %"$consume_1180", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_17" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1181" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1182" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1181", 0 + %"$accounting_tests.one_msg_envptr_1183" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1181", 1 + %"$msg1_1184" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_1185" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1182"(i8* %"$accounting_tests.one_msg_envptr_1183", i8* %"$msg1_1184"), !dbg !122 + store %TName_List_Message* %"$accounting_tests.one_msg_call_1185", %TName_List_Message** %"$accounting_tests.one_msg_17", align 8, !dbg !122 + %"$$accounting_tests.one_msg_17_1186" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_17", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_17_1186", %TName_List_Message** %msgs, align 8, !dbg !122 + %"$msgs_1187" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_1187_1188" = bitcast %TName_List_Message* %"$msgs_1187" to i8* + %"$_literal_cost_call_1189" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_1187_1188") + %"$gasrem_1190" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1191" = icmp ugt i64 %"$_literal_cost_call_1189", %"$gasrem_1190" + br i1 %"$gascmp_1191", label %"$out_of_gas_1192", label %"$have_gas_1193" + +"$out_of_gas_1192": ; preds = %"$have_gas_1179" + call void @_out_of_gas() + br label %"$have_gas_1193" + +"$have_gas_1193": ; preds = %"$out_of_gas_1192", %"$have_gas_1179" + %"$consume_1194" = sub i64 %"$gasrem_1190", %"$_literal_cost_call_1189" + store i64 %"$consume_1194", i64* @_gasrem, align 8 + %"$execptr_load_1195" = load i8*, i8** @_execptr, align 8 + %"$msgs_1196" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_1195", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_1196"), !dbg !123 + ret void +} + +define void @Test_Insufficient_Balance(i8* %0) !dbg !124 { +entry: + %"$_amount_1198" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1199" = bitcast i8* %"$_amount_1198" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1199", align 8 + %"$_origin_1200" = getelementptr i8, i8* %0, i32 16 + %"$_origin_1201" = bitcast i8* %"$_origin_1200" to [20 x i8]* + %"$_sender_1202" = getelementptr i8, i8* %0, i32 36 + %"$_sender_1203" = bitcast i8* %"$_sender_1202" to [20 x i8]* + call void @"$Test_Insufficient_Balance_1117"(%Uint128 %_amount, [20 x i8]* %"$_origin_1201", [20 x i8]* %"$_sender_1203"), !dbg !125 + ret void +} + +define internal void @"$Test_Send_1_1204"(%Uint128 %_amount, [20 x i8]* %"$_origin_1205", [20 x i8]* %"$_sender_1206") !dbg !126 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1205", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1206", align 1 + %"$gasrem_1207" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1208" = icmp ugt i64 1, %"$gasrem_1207" + br i1 %"$gascmp_1208", label %"$out_of_gas_1209", label %"$have_gas_1210" + +"$out_of_gas_1209": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1210" + +"$have_gas_1210": ; preds = %"$out_of_gas_1209", %entry + %"$consume_1211" = sub i64 %"$gasrem_1207", 1 + store i64 %"$consume_1211", i64* @_gasrem, align 8 + %"$AssertReset__origin_1212" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_1212", align 1 + %"$AssertReset__sender_1213" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_1213", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_1212", [20 x i8]* %"$AssertReset__sender_1213"), !dbg !127 + %s1 = alloca %String, align 8 + %"$execptr_load_1215" = load i8*, i8** @_execptr, align 8 + %"$s1_call_1216" = call i8* @_fetch_field(i8* %"$execptr_load_1215", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_1_1214", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1), !dbg !128 + %"$s1_1217" = bitcast i8* %"$s1_call_1216" to %String* + %"$s1_1218" = load %String, %String* %"$s1_1217", align 8 + store %String %"$s1_1218", %String* %s1, align 8 + %"$_literal_cost_s1_1219" = alloca %String, align 8 + %"$s1_1220" = load %String, %String* %s1, align 8 + store %String %"$s1_1220", %String* %"$_literal_cost_s1_1219", align 8 + %"$$_literal_cost_s1_1219_1221" = bitcast %String* %"$_literal_cost_s1_1219" to i8* + %"$_literal_cost_call_1222" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s1_1219_1221") + %"$gasadd_1223" = add i64 %"$_literal_cost_call_1222", 0 + %"$gasrem_1224" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1225" = icmp ugt i64 %"$gasadd_1223", %"$gasrem_1224" + br i1 %"$gascmp_1225", label %"$out_of_gas_1226", label %"$have_gas_1227" + +"$out_of_gas_1226": ; preds = %"$have_gas_1210" + call void @_out_of_gas() + br label %"$have_gas_1227" + +"$have_gas_1227": ; preds = %"$out_of_gas_1226", %"$have_gas_1210" + %"$consume_1228" = sub i64 %"$gasrem_1224", %"$gasadd_1223" + store i64 %"$consume_1228", i64* @_gasrem, align 8 + %"$gasrem_1229" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1230" = icmp ugt i64 1, %"$gasrem_1229" + br i1 %"$gascmp_1230", label %"$out_of_gas_1231", label %"$have_gas_1232" + +"$out_of_gas_1231": ; preds = %"$have_gas_1227" + call void @_out_of_gas() + br label %"$have_gas_1232" + +"$have_gas_1232": ; preds = %"$out_of_gas_1231", %"$have_gas_1227" + %"$consume_1233" = sub i64 %"$gasrem_1229", 1 + store i64 %"$consume_1233", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_1234" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1235" = icmp ugt i64 1, %"$gasrem_1234" + br i1 %"$gascmp_1235", label %"$out_of_gas_1236", label %"$have_gas_1237" + +"$out_of_gas_1236": ; preds = %"$have_gas_1232" + call void @_out_of_gas() + br label %"$have_gas_1237" + +"$have_gas_1237": ; preds = %"$out_of_gas_1236", %"$have_gas_1232" + %"$consume_1238" = sub i64 %"$gasrem_1234", 1 + store i64 %"$consume_1238", i64* @_gasrem, align 8 + %"$msgobj_1239_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1239_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1239_salloc_load", i64 165) + %"$msgobj_1239_salloc" = bitcast i8* %"$msgobj_1239_salloc_salloc" to [165 x i8]* + %"$msgobj_1239" = bitcast [165 x i8]* %"$msgobj_1239_salloc" to i8* + store i8 4, i8* %"$msgobj_1239", align 1 + %"$msgobj_fname_1241" = getelementptr i8, i8* %"$msgobj_1239", i32 1 + %"$msgobj_fname_1242" = bitcast i8* %"$msgobj_fname_1241" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1240", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1242", align 8 + %"$msgobj_td_1243" = getelementptr i8, i8* %"$msgobj_1239", i32 17 + %"$msgobj_td_1244" = bitcast i8* %"$msgobj_td_1243" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1244", align 8 + %"$support_contract_1245" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_1246" = getelementptr i8, i8* %"$msgobj_1239", i32 25 + %"$msgobj_v_1247" = bitcast i8* %"$msgobj_v_1246" to [20 x i8]* + store [20 x i8] %"$support_contract_1245", [20 x i8]* %"$msgobj_v_1247", align 1 + %"$msgobj_fname_1249" = getelementptr i8, i8* %"$msgobj_1239", i32 45 + %"$msgobj_fname_1250" = bitcast i8* %"$msgobj_fname_1249" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1248", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1250", align 8 + %"$msgobj_td_1251" = getelementptr i8, i8* %"$msgobj_1239", i32 61 + %"$msgobj_td_1252" = bitcast i8* %"$msgobj_td_1251" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1252", align 8 + %"$msgobj_v_1254" = getelementptr i8, i8* %"$msgobj_1239", i32 69 + %"$msgobj_v_1255" = bitcast i8* %"$msgobj_v_1254" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_1253", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_1255", align 8 + %"$msgobj_fname_1257" = getelementptr i8, i8* %"$msgobj_1239", i32 85 + %"$msgobj_fname_1258" = bitcast i8* %"$msgobj_fname_1257" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1256", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1258", align 8 + %"$msgobj_td_1259" = getelementptr i8, i8* %"$msgobj_1239", i32 101 + %"$msgobj_td_1260" = bitcast i8* %"$msgobj_td_1259" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1260", align 8 + %"$msgobj_v_1261" = getelementptr i8, i8* %"$msgobj_1239", i32 109 + %"$msgobj_v_1262" = bitcast i8* %"$msgobj_v_1261" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1262", align 8 + %"$msgobj_fname_1264" = getelementptr i8, i8* %"$msgobj_1239", i32 125 + %"$msgobj_fname_1265" = bitcast i8* %"$msgobj_fname_1264" to %String* + store %String { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$stringlit_1263", i32 0, i32 0), i32 1 }, %String* %"$msgobj_fname_1265", align 8 + %"$msgobj_td_1266" = getelementptr i8, i8* %"$msgobj_1239", i32 141 + %"$msgobj_td_1267" = bitcast i8* %"$msgobj_td_1266" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1267", align 8 + %"$s1_1268" = load %String, %String* %s1, align 8 + %"$msgobj_v_1269" = getelementptr i8, i8* %"$msgobj_1239", i32 149 + %"$msgobj_v_1270" = bitcast i8* %"$msgobj_v_1269" to %String* + store %String %"$s1_1268", %String* %"$msgobj_v_1270", align 8 + store i8* %"$msgobj_1239", i8** %msg1, align 8, !dbg !129 + %"$gasrem_1272" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1273" = icmp ugt i64 1, %"$gasrem_1272" + br i1 %"$gascmp_1273", label %"$out_of_gas_1274", label %"$have_gas_1275" + +"$out_of_gas_1274": ; preds = %"$have_gas_1237" + call void @_out_of_gas() + br label %"$have_gas_1275" + +"$have_gas_1275": ; preds = %"$out_of_gas_1274", %"$have_gas_1237" + %"$consume_1276" = sub i64 %"$gasrem_1272", 1 + store i64 %"$consume_1276", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_1277" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1278" = icmp ugt i64 1, %"$gasrem_1277" + br i1 %"$gascmp_1278", label %"$out_of_gas_1279", label %"$have_gas_1280" + +"$out_of_gas_1279": ; preds = %"$have_gas_1275" + call void @_out_of_gas() + br label %"$have_gas_1280" + +"$have_gas_1280": ; preds = %"$out_of_gas_1279", %"$have_gas_1275" + %"$consume_1281" = sub i64 %"$gasrem_1277", 1 + store i64 %"$consume_1281", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_20" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1282" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1283" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1282", 0 + %"$accounting_tests.one_msg_envptr_1284" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1282", 1 + %"$msg1_1285" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_1286" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1283"(i8* %"$accounting_tests.one_msg_envptr_1284", i8* %"$msg1_1285"), !dbg !130 + store %TName_List_Message* %"$accounting_tests.one_msg_call_1286", %TName_List_Message** %"$accounting_tests.one_msg_20", align 8, !dbg !130 + %"$$accounting_tests.one_msg_20_1287" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_20", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_20_1287", %TName_List_Message** %msgs1, align 8, !dbg !130 + %"$msgs1_1288" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_1288_1289" = bitcast %TName_List_Message* %"$msgs1_1288" to i8* + %"$_literal_cost_call_1290" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_1288_1289") + %"$gasrem_1291" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1292" = icmp ugt i64 %"$_literal_cost_call_1290", %"$gasrem_1291" + br i1 %"$gascmp_1292", label %"$out_of_gas_1293", label %"$have_gas_1294" + +"$out_of_gas_1293": ; preds = %"$have_gas_1280" + call void @_out_of_gas() + br label %"$have_gas_1294" + +"$have_gas_1294": ; preds = %"$out_of_gas_1293", %"$have_gas_1280" + %"$consume_1295" = sub i64 %"$gasrem_1291", %"$_literal_cost_call_1290" + store i64 %"$consume_1295", i64* @_gasrem, align 8 + %"$execptr_load_1296" = load i8*, i8** @_execptr, align 8 + %"$msgs1_1297" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_1296", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_1297"), !dbg !131 + %s2 = alloca %String, align 8 + %"$execptr_load_1299" = load i8*, i8** @_execptr, align 8 + %"$s2_call_1300" = call i8* @_fetch_field(i8* %"$execptr_load_1299", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_2_1298", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1), !dbg !132 + %"$s2_1301" = bitcast i8* %"$s2_call_1300" to %String* + %"$s2_1302" = load %String, %String* %"$s2_1301", align 8 + store %String %"$s2_1302", %String* %s2, align 8 + %"$_literal_cost_s2_1303" = alloca %String, align 8 + %"$s2_1304" = load %String, %String* %s2, align 8 + store %String %"$s2_1304", %String* %"$_literal_cost_s2_1303", align 8 + %"$$_literal_cost_s2_1303_1305" = bitcast %String* %"$_literal_cost_s2_1303" to i8* + %"$_literal_cost_call_1306" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s2_1303_1305") + %"$gasadd_1307" = add i64 %"$_literal_cost_call_1306", 0 + %"$gasrem_1308" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1309" = icmp ugt i64 %"$gasadd_1307", %"$gasrem_1308" + br i1 %"$gascmp_1309", label %"$out_of_gas_1310", label %"$have_gas_1311" + +"$out_of_gas_1310": ; preds = %"$have_gas_1294" + call void @_out_of_gas() + br label %"$have_gas_1311" + +"$have_gas_1311": ; preds = %"$out_of_gas_1310", %"$have_gas_1294" + %"$consume_1312" = sub i64 %"$gasrem_1308", %"$gasadd_1307" + store i64 %"$consume_1312", i64* @_gasrem, align 8 + %"$gasrem_1313" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1314" = icmp ugt i64 1, %"$gasrem_1313" + br i1 %"$gascmp_1314", label %"$out_of_gas_1315", label %"$have_gas_1316" + +"$out_of_gas_1315": ; preds = %"$have_gas_1311" + call void @_out_of_gas() + br label %"$have_gas_1316" + +"$have_gas_1316": ; preds = %"$out_of_gas_1315", %"$have_gas_1311" + %"$consume_1317" = sub i64 %"$gasrem_1313", 1 + store i64 %"$consume_1317", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_1318" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1319" = icmp ugt i64 1, %"$gasrem_1318" + br i1 %"$gascmp_1319", label %"$out_of_gas_1320", label %"$have_gas_1321" + +"$out_of_gas_1320": ; preds = %"$have_gas_1316" + call void @_out_of_gas() + br label %"$have_gas_1321" + +"$have_gas_1321": ; preds = %"$out_of_gas_1320", %"$have_gas_1316" + %"$consume_1322" = sub i64 %"$gasrem_1318", 1 + store i64 %"$consume_1322", i64* @_gasrem, align 8 + %"$msgobj_1323_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1323_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1323_salloc_load", i64 165) + %"$msgobj_1323_salloc" = bitcast i8* %"$msgobj_1323_salloc_salloc" to [165 x i8]* + %"$msgobj_1323" = bitcast [165 x i8]* %"$msgobj_1323_salloc" to i8* + store i8 4, i8* %"$msgobj_1323", align 1 + %"$msgobj_fname_1325" = getelementptr i8, i8* %"$msgobj_1323", i32 1 + %"$msgobj_fname_1326" = bitcast i8* %"$msgobj_fname_1325" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1324", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1326", align 8 + %"$msgobj_td_1327" = getelementptr i8, i8* %"$msgobj_1323", i32 17 + %"$msgobj_td_1328" = bitcast i8* %"$msgobj_td_1327" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1328", align 8 + %"$support_contract_1329" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_1330" = getelementptr i8, i8* %"$msgobj_1323", i32 25 + %"$msgobj_v_1331" = bitcast i8* %"$msgobj_v_1330" to [20 x i8]* + store [20 x i8] %"$support_contract_1329", [20 x i8]* %"$msgobj_v_1331", align 1 + %"$msgobj_fname_1333" = getelementptr i8, i8* %"$msgobj_1323", i32 45 + %"$msgobj_fname_1334" = bitcast i8* %"$msgobj_fname_1333" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1332", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1334", align 8 + %"$msgobj_td_1335" = getelementptr i8, i8* %"$msgobj_1323", i32 61 + %"$msgobj_td_1336" = bitcast i8* %"$msgobj_td_1335" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1336", align 8 + %"$msgobj_v_1338" = getelementptr i8, i8* %"$msgobj_1323", i32 69 + %"$msgobj_v_1339" = bitcast i8* %"$msgobj_v_1338" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_1337", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_1339", align 8 + %"$msgobj_fname_1341" = getelementptr i8, i8* %"$msgobj_1323", i32 85 + %"$msgobj_fname_1342" = bitcast i8* %"$msgobj_fname_1341" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1340", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1342", align 8 + %"$msgobj_td_1343" = getelementptr i8, i8* %"$msgobj_1323", i32 101 + %"$msgobj_td_1344" = bitcast i8* %"$msgobj_td_1343" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1344", align 8 + %"$msgobj_v_1345" = getelementptr i8, i8* %"$msgobj_1323", i32 109 + %"$msgobj_v_1346" = bitcast i8* %"$msgobj_v_1345" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1346", align 8 + %"$msgobj_fname_1348" = getelementptr i8, i8* %"$msgobj_1323", i32 125 + %"$msgobj_fname_1349" = bitcast i8* %"$msgobj_fname_1348" to %String* + store %String { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$stringlit_1347", i32 0, i32 0), i32 1 }, %String* %"$msgobj_fname_1349", align 8 + %"$msgobj_td_1350" = getelementptr i8, i8* %"$msgobj_1323", i32 141 + %"$msgobj_td_1351" = bitcast i8* %"$msgobj_td_1350" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1351", align 8 + %"$s2_1352" = load %String, %String* %s2, align 8 + %"$msgobj_v_1353" = getelementptr i8, i8* %"$msgobj_1323", i32 149 + %"$msgobj_v_1354" = bitcast i8* %"$msgobj_v_1353" to %String* + store %String %"$s2_1352", %String* %"$msgobj_v_1354", align 8 + store i8* %"$msgobj_1323", i8** %msg2, align 8, !dbg !133 + %"$gasrem_1356" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1357" = icmp ugt i64 1, %"$gasrem_1356" + br i1 %"$gascmp_1357", label %"$out_of_gas_1358", label %"$have_gas_1359" + +"$out_of_gas_1358": ; preds = %"$have_gas_1321" + call void @_out_of_gas() + br label %"$have_gas_1359" + +"$have_gas_1359": ; preds = %"$out_of_gas_1358", %"$have_gas_1321" + %"$consume_1360" = sub i64 %"$gasrem_1356", 1 + store i64 %"$consume_1360", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_1361" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1362" = icmp ugt i64 1, %"$gasrem_1361" + br i1 %"$gascmp_1362", label %"$out_of_gas_1363", label %"$have_gas_1364" + +"$out_of_gas_1363": ; preds = %"$have_gas_1359" + call void @_out_of_gas() + br label %"$have_gas_1364" + +"$have_gas_1364": ; preds = %"$out_of_gas_1363", %"$have_gas_1359" + %"$consume_1365" = sub i64 %"$gasrem_1361", 1 + store i64 %"$consume_1365", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_19" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1366" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1367" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1366", 0 + %"$accounting_tests.one_msg_envptr_1368" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1366", 1 + %"$msg2_1369" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_1370" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1367"(i8* %"$accounting_tests.one_msg_envptr_1368", i8* %"$msg2_1369"), !dbg !134 + store %TName_List_Message* %"$accounting_tests.one_msg_call_1370", %TName_List_Message** %"$accounting_tests.one_msg_19", align 8, !dbg !134 + %"$$accounting_tests.one_msg_19_1371" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_19", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_19_1371", %TName_List_Message** %msgs2, align 8, !dbg !134 + %"$msgs2_1372" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_1372_1373" = bitcast %TName_List_Message* %"$msgs2_1372" to i8* + %"$_literal_cost_call_1374" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_1372_1373") + %"$gasrem_1375" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1376" = icmp ugt i64 %"$_literal_cost_call_1374", %"$gasrem_1375" + br i1 %"$gascmp_1376", label %"$out_of_gas_1377", label %"$have_gas_1378" + +"$out_of_gas_1377": ; preds = %"$have_gas_1364" + call void @_out_of_gas() + br label %"$have_gas_1378" + +"$have_gas_1378": ; preds = %"$out_of_gas_1377", %"$have_gas_1364" + %"$consume_1379" = sub i64 %"$gasrem_1375", %"$_literal_cost_call_1374" + store i64 %"$consume_1379", i64* @_gasrem, align 8 + %"$execptr_load_1380" = load i8*, i8** @_execptr, align 8 + %"$msgs2_1381" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_1380", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_1381"), !dbg !135 + %"$gasrem_1382" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1383" = icmp ugt i64 1, %"$gasrem_1382" + br i1 %"$gascmp_1383", label %"$out_of_gas_1384", label %"$have_gas_1385" + +"$out_of_gas_1384": ; preds = %"$have_gas_1378" + call void @_out_of_gas() + br label %"$have_gas_1385" + +"$have_gas_1385": ; preds = %"$out_of_gas_1384", %"$have_gas_1378" + %"$consume_1386" = sub i64 %"$gasrem_1382", 1 + store i64 %"$consume_1386", i64* @_gasrem, align 8 + %msg_final = alloca i8*, align 8 + %"$gasrem_1387" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1388" = icmp ugt i64 1, %"$gasrem_1387" + br i1 %"$gascmp_1388", label %"$out_of_gas_1389", label %"$have_gas_1390" + +"$out_of_gas_1389": ; preds = %"$have_gas_1385" + call void @_out_of_gas() + br label %"$have_gas_1390" + +"$have_gas_1390": ; preds = %"$out_of_gas_1389", %"$have_gas_1385" + %"$consume_1391" = sub i64 %"$gasrem_1387", 1 + store i64 %"$consume_1391", i64* @_gasrem, align 8 + %"$msgobj_1392_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1392_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1392_salloc_load", i64 125) + %"$msgobj_1392_salloc" = bitcast i8* %"$msgobj_1392_salloc_salloc" to [125 x i8]* + %"$msgobj_1392" = bitcast [125 x i8]* %"$msgobj_1392_salloc" to i8* + store i8 3, i8* %"$msgobj_1392", align 1 + %"$msgobj_fname_1394" = getelementptr i8, i8* %"$msgobj_1392", i32 1 + %"$msgobj_fname_1395" = bitcast i8* %"$msgobj_fname_1394" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1393", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1395", align 8 + %"$msgobj_td_1396" = getelementptr i8, i8* %"$msgobj_1392", i32 17 + %"$msgobj_td_1397" = bitcast i8* %"$msgobj_td_1396" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1397", align 8 + %"$_this_address_1398" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_1399" = getelementptr i8, i8* %"$msgobj_1392", i32 25 + %"$msgobj_v_1400" = bitcast i8* %"$msgobj_v_1399" to [20 x i8]* + store [20 x i8] %"$_this_address_1398", [20 x i8]* %"$msgobj_v_1400", align 1 + %"$msgobj_fname_1402" = getelementptr i8, i8* %"$msgobj_1392", i32 45 + %"$msgobj_fname_1403" = bitcast i8* %"$msgobj_fname_1402" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1401", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1403", align 8 + %"$msgobj_td_1404" = getelementptr i8, i8* %"$msgobj_1392", i32 61 + %"$msgobj_td_1405" = bitcast i8* %"$msgobj_td_1404" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1405", align 8 + %"$msgobj_v_1407" = getelementptr i8, i8* %"$msgobj_1392", i32 69 + %"$msgobj_v_1408" = bitcast i8* %"$msgobj_v_1407" to %String* + store %String { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$stringlit_1406", i32 0, i32 0), i32 20 }, %String* %"$msgobj_v_1408", align 8 + %"$msgobj_fname_1410" = getelementptr i8, i8* %"$msgobj_1392", i32 85 + %"$msgobj_fname_1411" = bitcast i8* %"$msgobj_fname_1410" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1409", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1411", align 8 + %"$msgobj_td_1412" = getelementptr i8, i8* %"$msgobj_1392", i32 101 + %"$msgobj_td_1413" = bitcast i8* %"$msgobj_td_1412" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1413", align 8 + %"$msgobj_v_1414" = getelementptr i8, i8* %"$msgobj_1392", i32 109 + %"$msgobj_v_1415" = bitcast i8* %"$msgobj_v_1414" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1415", align 8 + store i8* %"$msgobj_1392", i8** %msg_final, align 8, !dbg !136 + %"$gasrem_1417" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1418" = icmp ugt i64 1, %"$gasrem_1417" + br i1 %"$gascmp_1418", label %"$out_of_gas_1419", label %"$have_gas_1420" + +"$out_of_gas_1419": ; preds = %"$have_gas_1390" + call void @_out_of_gas() + br label %"$have_gas_1420" + +"$have_gas_1420": ; preds = %"$out_of_gas_1419", %"$have_gas_1390" + %"$consume_1421" = sub i64 %"$gasrem_1417", 1 + store i64 %"$consume_1421", i64* @_gasrem, align 8 + %msgs_final = alloca %TName_List_Message*, align 8 + %"$gasrem_1422" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1423" = icmp ugt i64 1, %"$gasrem_1422" + br i1 %"$gascmp_1423", label %"$out_of_gas_1424", label %"$have_gas_1425" + +"$out_of_gas_1424": ; preds = %"$have_gas_1420" + call void @_out_of_gas() + br label %"$have_gas_1425" + +"$have_gas_1425": ; preds = %"$out_of_gas_1424", %"$have_gas_1420" + %"$consume_1426" = sub i64 %"$gasrem_1422", 1 + store i64 %"$consume_1426", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_18" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1427" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1428" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1427", 0 + %"$accounting_tests.one_msg_envptr_1429" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1427", 1 + %"$msg_final_1430" = load i8*, i8** %msg_final, align 8 + %"$accounting_tests.one_msg_call_1431" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1428"(i8* %"$accounting_tests.one_msg_envptr_1429", i8* %"$msg_final_1430"), !dbg !137 + store %TName_List_Message* %"$accounting_tests.one_msg_call_1431", %TName_List_Message** %"$accounting_tests.one_msg_18", align 8, !dbg !137 + %"$$accounting_tests.one_msg_18_1432" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_18", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_18_1432", %TName_List_Message** %msgs_final, align 8, !dbg !137 + %"$msgs_final_1433" = load %TName_List_Message*, %TName_List_Message** %msgs_final, align 8 + %"$$msgs_final_1433_1434" = bitcast %TName_List_Message* %"$msgs_final_1433" to i8* + %"$_literal_cost_call_1435" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_final_1433_1434") + %"$gasrem_1436" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1437" = icmp ugt i64 %"$_literal_cost_call_1435", %"$gasrem_1436" + br i1 %"$gascmp_1437", label %"$out_of_gas_1438", label %"$have_gas_1439" + +"$out_of_gas_1438": ; preds = %"$have_gas_1425" + call void @_out_of_gas() + br label %"$have_gas_1439" + +"$have_gas_1439": ; preds = %"$out_of_gas_1438", %"$have_gas_1425" + %"$consume_1440" = sub i64 %"$gasrem_1436", %"$_literal_cost_call_1435" + store i64 %"$consume_1440", i64* @_gasrem, align 8 + %"$execptr_load_1441" = load i8*, i8** @_execptr, align 8 + %"$msgs_final_1442" = load %TName_List_Message*, %TName_List_Message** %msgs_final, align 8 + call void @_send(i8* %"$execptr_load_1441", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_final_1442"), !dbg !138 + ret void +} + +define void @Test_Send_1(i8* %0) !dbg !139 { +entry: + %"$_amount_1444" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1445" = bitcast i8* %"$_amount_1444" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1445", align 8 + %"$_origin_1446" = getelementptr i8, i8* %0, i32 16 + %"$_origin_1447" = bitcast i8* %"$_origin_1446" to [20 x i8]* + %"$_sender_1448" = getelementptr i8, i8* %0, i32 36 + %"$_sender_1449" = bitcast i8* %"$_sender_1448" to [20 x i8]* + call void @"$Test_Send_1_1204"(%Uint128 %_amount, [20 x i8]* %"$_origin_1447", [20 x i8]* %"$_sender_1449"), !dbg !140 + ret void +} + +define internal void @"$Finalize_Test_Send_Helper_2_Msgs_1450"(%Uint128 %_amount, [20 x i8]* %"$_origin_1451", [20 x i8]* %"$_sender_1452", %Uint128 %test_no) !dbg !141 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1451", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1452", align 1 + %s1 = alloca %String, align 8 + %"$execptr_load_1454" = load i8*, i8** @_execptr, align 8 + %"$s1_call_1455" = call i8* @_fetch_field(i8* %"$execptr_load_1454", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_1_1453", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1), !dbg !142 + %"$s1_1456" = bitcast i8* %"$s1_call_1455" to %String* + %"$s1_1457" = load %String, %String* %"$s1_1456", align 8 + store %String %"$s1_1457", %String* %s1, align 8 + %"$_literal_cost_s1_1458" = alloca %String, align 8 + %"$s1_1459" = load %String, %String* %s1, align 8 + store %String %"$s1_1459", %String* %"$_literal_cost_s1_1458", align 8 + %"$$_literal_cost_s1_1458_1460" = bitcast %String* %"$_literal_cost_s1_1458" to i8* + %"$_literal_cost_call_1461" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s1_1458_1460") + %"$gasadd_1462" = add i64 %"$_literal_cost_call_1461", 0 + %"$gasrem_1463" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1464" = icmp ugt i64 %"$gasadd_1462", %"$gasrem_1463" + br i1 %"$gascmp_1464", label %"$out_of_gas_1465", label %"$have_gas_1466" + +"$out_of_gas_1465": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1466" + +"$have_gas_1466": ; preds = %"$out_of_gas_1465", %entry + %"$consume_1467" = sub i64 %"$gasrem_1463", %"$gasadd_1462" + store i64 %"$consume_1467", i64* @_gasrem, align 8 + %s2 = alloca %String, align 8 + %"$execptr_load_1469" = load i8*, i8** @_execptr, align 8 + %"$s2_call_1470" = call i8* @_fetch_field(i8* %"$execptr_load_1469", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_2_1468", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1), !dbg !143 + %"$s2_1471" = bitcast i8* %"$s2_call_1470" to %String* + %"$s2_1472" = load %String, %String* %"$s2_1471", align 8 + store %String %"$s2_1472", %String* %s2, align 8 + %"$_literal_cost_s2_1473" = alloca %String, align 8 + %"$s2_1474" = load %String, %String* %s2, align 8 + store %String %"$s2_1474", %String* %"$_literal_cost_s2_1473", align 8 + %"$$_literal_cost_s2_1473_1475" = bitcast %String* %"$_literal_cost_s2_1473" to i8* + %"$_literal_cost_call_1476" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s2_1473_1475") + %"$gasadd_1477" = add i64 %"$_literal_cost_call_1476", 0 + %"$gasrem_1478" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1479" = icmp ugt i64 %"$gasadd_1477", %"$gasrem_1478" + br i1 %"$gascmp_1479", label %"$out_of_gas_1480", label %"$have_gas_1481" + +"$out_of_gas_1480": ; preds = %"$have_gas_1466" + call void @_out_of_gas() + br label %"$have_gas_1481" + +"$have_gas_1481": ; preds = %"$out_of_gas_1480", %"$have_gas_1466" + %"$consume_1482" = sub i64 %"$gasrem_1478", %"$gasadd_1477" + store i64 %"$consume_1482", i64* @_gasrem, align 8 + %"$gasrem_1483" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1484" = icmp ugt i64 1, %"$gasrem_1483" + br i1 %"$gascmp_1484", label %"$out_of_gas_1485", label %"$have_gas_1486" + +"$out_of_gas_1485": ; preds = %"$have_gas_1481" + call void @_out_of_gas() + br label %"$have_gas_1486" + +"$have_gas_1486": ; preds = %"$out_of_gas_1485", %"$have_gas_1481" + %"$consume_1487" = sub i64 %"$gasrem_1483", 1 + store i64 %"$consume_1487", i64* @_gasrem, align 8 + %expected = alloca %TName_List_String*, align 8 + %"$gasrem_1488" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1489" = icmp ugt i64 1, %"$gasrem_1488" + br i1 %"$gascmp_1489", label %"$out_of_gas_1490", label %"$have_gas_1491" + +"$out_of_gas_1490": ; preds = %"$have_gas_1486" + call void @_out_of_gas() + br label %"$have_gas_1491" + +"$have_gas_1491": ; preds = %"$out_of_gas_1490", %"$have_gas_1486" + %"$consume_1492" = sub i64 %"$gasrem_1488", 1 + store i64 %"$consume_1492", i64* @_gasrem, align 8 + %mty = alloca %TName_List_String*, align 8 + %"$gasrem_1493" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1494" = icmp ugt i64 1, %"$gasrem_1493" + br i1 %"$gascmp_1494", label %"$out_of_gas_1495", label %"$have_gas_1496" + +"$out_of_gas_1495": ; preds = %"$have_gas_1491" + call void @_out_of_gas() + br label %"$have_gas_1496" + +"$have_gas_1496": ; preds = %"$out_of_gas_1495", %"$have_gas_1491" + %"$consume_1497" = sub i64 %"$gasrem_1493", 1 + store i64 %"$consume_1497", i64* @_gasrem, align 8 + %"$adtval_1498_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_1498_salloc" = call i8* @_salloc(i8* %"$adtval_1498_load", i64 1) + %"$adtval_1498" = bitcast i8* %"$adtval_1498_salloc" to %CName_Nil_String* + %"$adtgep_1499" = getelementptr inbounds %CName_Nil_String, %CName_Nil_String* %"$adtval_1498", i32 0, i32 0 + store i8 1, i8* %"$adtgep_1499", align 1 + %"$adtptr_1500" = bitcast %CName_Nil_String* %"$adtval_1498" to %TName_List_String* + store %TName_List_String* %"$adtptr_1500", %TName_List_String** %mty, align 8, !dbg !144 + %"$gasrem_1501" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1502" = icmp ugt i64 1, %"$gasrem_1501" + br i1 %"$gascmp_1502", label %"$out_of_gas_1503", label %"$have_gas_1504" + +"$out_of_gas_1503": ; preds = %"$have_gas_1496" + call void @_out_of_gas() + br label %"$have_gas_1504" + +"$have_gas_1504": ; preds = %"$out_of_gas_1503", %"$have_gas_1496" + %"$consume_1505" = sub i64 %"$gasrem_1501", 1 + store i64 %"$consume_1505", i64* @_gasrem, align 8 + %fst = alloca %TName_List_String*, align 8 + %"$gasrem_1506" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1507" = icmp ugt i64 1, %"$gasrem_1506" + br i1 %"$gascmp_1507", label %"$out_of_gas_1508", label %"$have_gas_1509" + +"$out_of_gas_1508": ; preds = %"$have_gas_1504" + call void @_out_of_gas() + br label %"$have_gas_1509" + +"$have_gas_1509": ; preds = %"$out_of_gas_1508", %"$have_gas_1504" + %"$consume_1510" = sub i64 %"$gasrem_1506", 1 + store i64 %"$consume_1510", i64* @_gasrem, align 8 + %"$s1_1511" = load %String, %String* %s1, align 8 + %"$mty_1512" = load %TName_List_String*, %TName_List_String** %mty, align 8 + %"$adtval_1513_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_1513_salloc" = call i8* @_salloc(i8* %"$adtval_1513_load", i64 25) + %"$adtval_1513" = bitcast i8* %"$adtval_1513_salloc" to %CName_Cons_String* + %"$adtgep_1514" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_1513", i32 0, i32 0 + store i8 0, i8* %"$adtgep_1514", align 1 + %"$adtgep_1515" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_1513", i32 0, i32 1 + store %String %"$s1_1511", %String* %"$adtgep_1515", align 8 + %"$adtgep_1516" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_1513", i32 0, i32 2 + store %TName_List_String* %"$mty_1512", %TName_List_String** %"$adtgep_1516", align 8 + %"$adtptr_1517" = bitcast %CName_Cons_String* %"$adtval_1513" to %TName_List_String* + store %TName_List_String* %"$adtptr_1517", %TName_List_String** %fst, align 8, !dbg !145 + %"$gasrem_1518" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1519" = icmp ugt i64 1, %"$gasrem_1518" + br i1 %"$gascmp_1519", label %"$out_of_gas_1520", label %"$have_gas_1521" + +"$out_of_gas_1520": ; preds = %"$have_gas_1509" + call void @_out_of_gas() + br label %"$have_gas_1521" + +"$have_gas_1521": ; preds = %"$out_of_gas_1520", %"$have_gas_1509" + %"$consume_1522" = sub i64 %"$gasrem_1518", 1 + store i64 %"$consume_1522", i64* @_gasrem, align 8 + %"$s2_1523" = load %String, %String* %s2, align 8 + %"$fst_1524" = load %TName_List_String*, %TName_List_String** %fst, align 8 + %"$adtval_1525_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_1525_salloc" = call i8* @_salloc(i8* %"$adtval_1525_load", i64 25) + %"$adtval_1525" = bitcast i8* %"$adtval_1525_salloc" to %CName_Cons_String* + %"$adtgep_1526" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_1525", i32 0, i32 0 + store i8 0, i8* %"$adtgep_1526", align 1 + %"$adtgep_1527" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_1525", i32 0, i32 1 + store %String %"$s2_1523", %String* %"$adtgep_1527", align 8 + %"$adtgep_1528" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_1525", i32 0, i32 2 + store %TName_List_String* %"$fst_1524", %TName_List_String** %"$adtgep_1528", align 8 + %"$adtptr_1529" = bitcast %CName_Cons_String* %"$adtval_1525" to %TName_List_String* + store %TName_List_String* %"$adtptr_1529", %TName_List_String** %expected, align 8, !dbg !146 + %actual = alloca %TName_List_String*, align 8 + %"$execptr_load_1531" = load i8*, i8** @_execptr, align 8 + %"$actual_support_contract_1532" = alloca [20 x i8], align 1 + %"$support_contract_1533" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + store [20 x i8] %"$support_contract_1533", [20 x i8]* %"$actual_support_contract_1532", align 1 + %"$actual_call_1534" = call i8* @_fetch_remote_field(i8* %"$execptr_load_1531", [20 x i8]* %"$actual_support_contract_1532", i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stored_strings_1530", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", i32 0, i8* null, i32 1), !dbg !147 + %"$actual_1535" = bitcast i8* %"$actual_call_1534" to %TName_List_String* + store %TName_List_String* %"$actual_1535", %TName_List_String** %actual, align 8 + %"$actual_1536" = load %TName_List_String*, %TName_List_String** %actual, align 8 + %"$$actual_1536_1537" = bitcast %TName_List_String* %"$actual_1536" to i8* + %"$_literal_cost_call_1538" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", i8* %"$$actual_1536_1537") + %"$gasadd_1539" = add i64 %"$_literal_cost_call_1538", 0 + %"$gasrem_1540" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1541" = icmp ugt i64 %"$gasadd_1539", %"$gasrem_1540" + br i1 %"$gascmp_1541", label %"$out_of_gas_1542", label %"$have_gas_1543" + +"$out_of_gas_1542": ; preds = %"$have_gas_1521" + call void @_out_of_gas() + br label %"$have_gas_1543" + +"$have_gas_1543": ; preds = %"$out_of_gas_1542", %"$have_gas_1521" + %"$consume_1544" = sub i64 %"$gasrem_1540", %"$gasadd_1539" + store i64 %"$consume_1544", i64* @_gasrem, align 8 + %"$gasrem_1545" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1546" = icmp ugt i64 1, %"$gasrem_1545" + br i1 %"$gascmp_1546", label %"$out_of_gas_1547", label %"$have_gas_1548" + +"$out_of_gas_1547": ; preds = %"$have_gas_1543" + call void @_out_of_gas() + br label %"$have_gas_1548" + +"$have_gas_1548": ; preds = %"$out_of_gas_1547", %"$have_gas_1543" + %"$consume_1549" = sub i64 %"$gasrem_1545", 1 + store i64 %"$consume_1549", i64* @_gasrem, align 8 + %res = alloca %TName_Bool*, align 8 + %"$gasrem_1550" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1551" = icmp ugt i64 1, %"$gasrem_1550" + br i1 %"$gascmp_1551", label %"$out_of_gas_1552", label %"$have_gas_1553" + +"$out_of_gas_1552": ; preds = %"$have_gas_1548" + call void @_out_of_gas() + br label %"$have_gas_1553" + +"$have_gas_1553": ; preds = %"$out_of_gas_1552", %"$have_gas_1548" + %"$consume_1554" = sub i64 %"$gasrem_1550", 1 + store i64 %"$consume_1554", i64* @_gasrem, align 8 + %"$accounting_tests.list_eq_string_21" = alloca { %TName_Bool* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$accounting_tests.list_eq_string_1555" = load { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* @accounting_tests.list_eq_string, align 8 + %"$accounting_tests.list_eq_string_fptr_1556" = extractvalue { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$accounting_tests.list_eq_string_1555", 0 + %"$accounting_tests.list_eq_string_envptr_1557" = extractvalue { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$accounting_tests.list_eq_string_1555", 1 + %"$expected_1558" = load %TName_List_String*, %TName_List_String** %expected, align 8 + %"$accounting_tests.list_eq_string_call_1559" = call { %TName_Bool* (i8*, %TName_List_String*)*, i8* } %"$accounting_tests.list_eq_string_fptr_1556"(i8* %"$accounting_tests.list_eq_string_envptr_1557", %TName_List_String* %"$expected_1558"), !dbg !148 + store { %TName_Bool* (i8*, %TName_List_String*)*, i8* } %"$accounting_tests.list_eq_string_call_1559", { %TName_Bool* (i8*, %TName_List_String*)*, i8* }* %"$accounting_tests.list_eq_string_21", align 8, !dbg !148 + %"$accounting_tests.list_eq_string_22" = alloca %TName_Bool*, align 8 + %"$$accounting_tests.list_eq_string_21_1560" = load { %TName_Bool* (i8*, %TName_List_String*)*, i8* }, { %TName_Bool* (i8*, %TName_List_String*)*, i8* }* %"$accounting_tests.list_eq_string_21", align 8 + %"$$accounting_tests.list_eq_string_21_fptr_1561" = extractvalue { %TName_Bool* (i8*, %TName_List_String*)*, i8* } %"$$accounting_tests.list_eq_string_21_1560", 0 + %"$$accounting_tests.list_eq_string_21_envptr_1562" = extractvalue { %TName_Bool* (i8*, %TName_List_String*)*, i8* } %"$$accounting_tests.list_eq_string_21_1560", 1 + %"$actual_1563" = load %TName_List_String*, %TName_List_String** %actual, align 8 + %"$$accounting_tests.list_eq_string_21_call_1564" = call %TName_Bool* %"$$accounting_tests.list_eq_string_21_fptr_1561"(i8* %"$$accounting_tests.list_eq_string_21_envptr_1562", %TName_List_String* %"$actual_1563"), !dbg !148 + store %TName_Bool* %"$$accounting_tests.list_eq_string_21_call_1564", %TName_Bool** %"$accounting_tests.list_eq_string_22", align 8, !dbg !148 + %"$$accounting_tests.list_eq_string_22_1565" = load %TName_Bool*, %TName_Bool** %"$accounting_tests.list_eq_string_22", align 8 + store %TName_Bool* %"$$accounting_tests.list_eq_string_22_1565", %TName_Bool** %res, align 8, !dbg !148 + %"$gasrem_1566" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1567" = icmp ugt i64 2, %"$gasrem_1566" + br i1 %"$gascmp_1567", label %"$out_of_gas_1568", label %"$have_gas_1569" + +"$out_of_gas_1568": ; preds = %"$have_gas_1553" + call void @_out_of_gas() + br label %"$have_gas_1569" + +"$have_gas_1569": ; preds = %"$out_of_gas_1568", %"$have_gas_1553" + %"$consume_1570" = sub i64 %"$gasrem_1566", 2 + store i64 %"$consume_1570", i64* @_gasrem, align 8 + %"$res_1572" = load %TName_Bool*, %TName_Bool** %res, align 8 + %"$res_tag_1573" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$res_1572", i32 0, i32 0 + %"$res_tag_1574" = load i8, i8* %"$res_tag_1573", align 1 + switch i8 %"$res_tag_1574", label %"$empty_default_1575" [ + i8 0, label %"$True_1576" + i8 1, label %"$False_1578" + ], !dbg !149 + +"$True_1576": ; preds = %"$have_gas_1569" + %"$res_1577" = bitcast %TName_Bool* %"$res_1572" to %CName_True* + br label %"$matchsucc_1571" + +"$False_1578": ; preds = %"$have_gas_1569" + %"$res_1579" = bitcast %TName_Bool* %"$res_1572" to %CName_False* + %"$gasrem_1580" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1581" = icmp ugt i64 1, %"$gasrem_1580" + br i1 %"$gascmp_1581", label %"$out_of_gas_1582", label %"$have_gas_1583" + +"$out_of_gas_1582": ; preds = %"$False_1578" + call void @_out_of_gas() + br label %"$have_gas_1583" + +"$have_gas_1583": ; preds = %"$out_of_gas_1582", %"$False_1578" + %"$consume_1584" = sub i64 %"$gasrem_1580", 1 + store i64 %"$consume_1584", i64* @_gasrem, align 8 + %e = alloca i8*, align 8 + %"$gasrem_1585" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1586" = icmp ugt i64 1, %"$gasrem_1585" + br i1 %"$gascmp_1586", label %"$out_of_gas_1587", label %"$have_gas_1588" + +"$out_of_gas_1587": ; preds = %"$have_gas_1583" + call void @_out_of_gas() + br label %"$have_gas_1588" + +"$have_gas_1588": ; preds = %"$out_of_gas_1587", %"$have_gas_1583" + %"$consume_1589" = sub i64 %"$gasrem_1585", 1 + store i64 %"$consume_1589", i64* @_gasrem, align 8 + %"$msgobj_1590_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1590_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1590_salloc_load", i64 145) + %"$msgobj_1590_salloc" = bitcast i8* %"$msgobj_1590_salloc_salloc" to [145 x i8]* + %"$msgobj_1590" = bitcast [145 x i8]* %"$msgobj_1590_salloc" to i8* + store i8 4, i8* %"$msgobj_1590", align 1 + %"$msgobj_fname_1592" = getelementptr i8, i8* %"$msgobj_1590", i32 1 + %"$msgobj_fname_1593" = bitcast i8* %"$msgobj_fname_1592" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1591", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1593", align 8 + %"$msgobj_td_1594" = getelementptr i8, i8* %"$msgobj_1590", i32 17 + %"$msgobj_td_1595" = bitcast i8* %"$msgobj_td_1594" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1595", align 8 + %"$msgobj_v_1597" = getelementptr i8, i8* %"$msgobj_1590", i32 25 + %"$msgobj_v_1598" = bitcast i8* %"$msgobj_v_1597" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_1596", i32 0, i32 0), i32 16 }, %String* %"$msgobj_v_1598", align 8 + %"$msgobj_fname_1600" = getelementptr i8, i8* %"$msgobj_1590", i32 41 + %"$msgobj_fname_1601" = bitcast i8* %"$msgobj_fname_1600" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1599", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1601", align 8 + %"$msgobj_td_1602" = getelementptr i8, i8* %"$msgobj_1590", i32 57 + %"$msgobj_td_1603" = bitcast i8* %"$msgobj_td_1602" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1603", align 8 + %"$msgobj_v_1604" = getelementptr i8, i8* %"$msgobj_1590", i32 65 + %"$msgobj_v_1605" = bitcast i8* %"$msgobj_v_1604" to %Uint128* + store %Uint128 %test_no, %Uint128* %"$msgobj_v_1605", align 8 + %"$msgobj_fname_1607" = getelementptr i8, i8* %"$msgobj_1590", i32 81 + %"$msgobj_fname_1608" = bitcast i8* %"$msgobj_fname_1607" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_1606", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_1608", align 8 + %"$msgobj_td_1609" = getelementptr i8, i8* %"$msgobj_1590", i32 97 + %"$msgobj_td_1610" = bitcast i8* %"$msgobj_td_1609" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", %_TyDescrTy_Typ** %"$msgobj_td_1610", align 8 + %"$expected_1611" = load %TName_List_String*, %TName_List_String** %expected, align 8 + %"$msgobj_v_1612" = getelementptr i8, i8* %"$msgobj_1590", i32 105 + %"$msgobj_v_1613" = bitcast i8* %"$msgobj_v_1612" to %TName_List_String** + store %TName_List_String* %"$expected_1611", %TName_List_String** %"$msgobj_v_1613", align 8 + %"$msgobj_fname_1615" = getelementptr i8, i8* %"$msgobj_1590", i32 113 + %"$msgobj_fname_1616" = bitcast i8* %"$msgobj_fname_1615" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_1614", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_1616", align 8 + %"$msgobj_td_1617" = getelementptr i8, i8* %"$msgobj_1590", i32 129 + %"$msgobj_td_1618" = bitcast i8* %"$msgobj_td_1617" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", %_TyDescrTy_Typ** %"$msgobj_td_1618", align 8 + %"$actual_1619" = load %TName_List_String*, %TName_List_String** %actual, align 8 + %"$msgobj_v_1620" = getelementptr i8, i8* %"$msgobj_1590", i32 137 + %"$msgobj_v_1621" = bitcast i8* %"$msgobj_v_1620" to %TName_List_String** + store %TName_List_String* %"$actual_1619", %TName_List_String** %"$msgobj_v_1621", align 8 + store i8* %"$msgobj_1590", i8** %e, align 8, !dbg !150 + %"$e_1623" = load i8*, i8** %e, align 8 + %"$_literal_cost_call_1625" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_1623") + %"$gasrem_1626" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1627" = icmp ugt i64 %"$_literal_cost_call_1625", %"$gasrem_1626" + br i1 %"$gascmp_1627", label %"$out_of_gas_1628", label %"$have_gas_1629" + +"$out_of_gas_1628": ; preds = %"$have_gas_1588" + call void @_out_of_gas() + br label %"$have_gas_1629" + +"$have_gas_1629": ; preds = %"$out_of_gas_1628", %"$have_gas_1588" + %"$consume_1630" = sub i64 %"$gasrem_1626", %"$_literal_cost_call_1625" + store i64 %"$consume_1630", i64* @_gasrem, align 8 + %"$execptr_load_1631" = load i8*, i8** @_execptr, align 8 + %"$e_1632" = load i8*, i8** %e, align 8 + call void @_throw(i8* %"$execptr_load_1631", %_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_1632"), !dbg !153 + br label %"$matchsucc_1571" + +"$empty_default_1575": ; preds = %"$have_gas_1569" + br label %"$matchsucc_1571" + +"$matchsucc_1571": ; preds = %"$have_gas_1629", %"$True_1576", %"$empty_default_1575" + ret void +} + +define internal void @"$Finalize_Test_Send_1_1633"(%Uint128 %_amount, [20 x i8]* %"$_origin_1634", [20 x i8]* %"$_sender_1635") !dbg !154 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1634", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1635", align 1 + %"$gasrem_1636" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1637" = icmp ugt i64 1, %"$gasrem_1636" + br i1 %"$gascmp_1637", label %"$out_of_gas_1638", label %"$have_gas_1639" + +"$out_of_gas_1638": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1639" + +"$have_gas_1639": ; preds = %"$out_of_gas_1638", %entry + %"$consume_1640" = sub i64 %"$gasrem_1636", 1 + store i64 %"$consume_1640", i64* @_gasrem, align 8 + %x = alloca %Uint128, align 8 + %"$gasrem_1641" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1642" = icmp ugt i64 1, %"$gasrem_1641" + br i1 %"$gascmp_1642", label %"$out_of_gas_1643", label %"$have_gas_1644" + +"$out_of_gas_1643": ; preds = %"$have_gas_1639" + call void @_out_of_gas() + br label %"$have_gas_1644" + +"$have_gas_1644": ; preds = %"$out_of_gas_1643", %"$have_gas_1639" + %"$consume_1645" = sub i64 %"$gasrem_1641", 1 + store i64 %"$consume_1645", i64* @_gasrem, align 8 + store %Uint128 { i128 1 }, %Uint128* %x, align 8, !dbg !155 + %"$gasrem_1646" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1647" = icmp ugt i64 1, %"$gasrem_1646" + br i1 %"$gascmp_1647", label %"$out_of_gas_1648", label %"$have_gas_1649" + +"$out_of_gas_1648": ; preds = %"$have_gas_1644" + call void @_out_of_gas() + br label %"$have_gas_1649" + +"$have_gas_1649": ; preds = %"$out_of_gas_1648", %"$have_gas_1644" + %"$consume_1650" = sub i64 %"$gasrem_1646", 1 + store i64 %"$consume_1650", i64* @_gasrem, align 8 + %"$Finalize_Test_Send_Helper_2_Msgs__origin_1651" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__origin_1651", align 1 + %"$Finalize_Test_Send_Helper_2_Msgs__sender_1652" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__sender_1652", align 1 + %"$x_1653" = load %Uint128, %Uint128* %x, align 8 + call void @"$Finalize_Test_Send_Helper_2_Msgs_1450"(%Uint128 %_amount, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__origin_1651", [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__sender_1652", %Uint128 %"$x_1653"), !dbg !156 + ret void +} + +define void @Finalize_Test_Send_1(i8* %0) !dbg !157 { +entry: + %"$_amount_1655" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1656" = bitcast i8* %"$_amount_1655" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1656", align 8 + %"$_origin_1657" = getelementptr i8, i8* %0, i32 16 + %"$_origin_1658" = bitcast i8* %"$_origin_1657" to [20 x i8]* + %"$_sender_1659" = getelementptr i8, i8* %0, i32 36 + %"$_sender_1660" = bitcast i8* %"$_sender_1659" to [20 x i8]* + call void @"$Finalize_Test_Send_1_1633"(%Uint128 %_amount, [20 x i8]* %"$_origin_1658", [20 x i8]* %"$_sender_1660"), !dbg !158 + ret void +} + +define internal void @"$Test_Send_2_1661"(%Uint128 %_amount, [20 x i8]* %"$_origin_1662", [20 x i8]* %"$_sender_1663") !dbg !159 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1662", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1663", align 1 + %"$gasrem_1664" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1665" = icmp ugt i64 1, %"$gasrem_1664" + br i1 %"$gascmp_1665", label %"$out_of_gas_1666", label %"$have_gas_1667" + +"$out_of_gas_1666": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1667" + +"$have_gas_1667": ; preds = %"$out_of_gas_1666", %entry + %"$consume_1668" = sub i64 %"$gasrem_1664", 1 + store i64 %"$consume_1668", i64* @_gasrem, align 8 + %"$AssertReset__origin_1669" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_1669", align 1 + %"$AssertReset__sender_1670" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_1670", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_1669", [20 x i8]* %"$AssertReset__sender_1670"), !dbg !160 + %s1 = alloca %String, align 8 + %"$execptr_load_1672" = load i8*, i8** @_execptr, align 8 + %"$s1_call_1673" = call i8* @_fetch_field(i8* %"$execptr_load_1672", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_1_1671", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1), !dbg !161 + %"$s1_1674" = bitcast i8* %"$s1_call_1673" to %String* + %"$s1_1675" = load %String, %String* %"$s1_1674", align 8 + store %String %"$s1_1675", %String* %s1, align 8 + %"$_literal_cost_s1_1676" = alloca %String, align 8 + %"$s1_1677" = load %String, %String* %s1, align 8 + store %String %"$s1_1677", %String* %"$_literal_cost_s1_1676", align 8 + %"$$_literal_cost_s1_1676_1678" = bitcast %String* %"$_literal_cost_s1_1676" to i8* + %"$_literal_cost_call_1679" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s1_1676_1678") + %"$gasadd_1680" = add i64 %"$_literal_cost_call_1679", 0 + %"$gasrem_1681" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1682" = icmp ugt i64 %"$gasadd_1680", %"$gasrem_1681" + br i1 %"$gascmp_1682", label %"$out_of_gas_1683", label %"$have_gas_1684" + +"$out_of_gas_1683": ; preds = %"$have_gas_1667" + call void @_out_of_gas() + br label %"$have_gas_1684" + +"$have_gas_1684": ; preds = %"$out_of_gas_1683", %"$have_gas_1667" + %"$consume_1685" = sub i64 %"$gasrem_1681", %"$gasadd_1680" + store i64 %"$consume_1685", i64* @_gasrem, align 8 + %"$gasrem_1686" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1687" = icmp ugt i64 1, %"$gasrem_1686" + br i1 %"$gascmp_1687", label %"$out_of_gas_1688", label %"$have_gas_1689" + +"$out_of_gas_1688": ; preds = %"$have_gas_1684" + call void @_out_of_gas() + br label %"$have_gas_1689" + +"$have_gas_1689": ; preds = %"$out_of_gas_1688", %"$have_gas_1684" + %"$consume_1690" = sub i64 %"$gasrem_1686", 1 + store i64 %"$consume_1690", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_1691" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1692" = icmp ugt i64 1, %"$gasrem_1691" + br i1 %"$gascmp_1692", label %"$out_of_gas_1693", label %"$have_gas_1694" + +"$out_of_gas_1693": ; preds = %"$have_gas_1689" + call void @_out_of_gas() + br label %"$have_gas_1694" + +"$have_gas_1694": ; preds = %"$out_of_gas_1693", %"$have_gas_1689" + %"$consume_1695" = sub i64 %"$gasrem_1691", 1 + store i64 %"$consume_1695", i64* @_gasrem, align 8 + %"$msgobj_1696_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1696_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1696_salloc_load", i64 165) + %"$msgobj_1696_salloc" = bitcast i8* %"$msgobj_1696_salloc_salloc" to [165 x i8]* + %"$msgobj_1696" = bitcast [165 x i8]* %"$msgobj_1696_salloc" to i8* + store i8 4, i8* %"$msgobj_1696", align 1 + %"$msgobj_fname_1698" = getelementptr i8, i8* %"$msgobj_1696", i32 1 + %"$msgobj_fname_1699" = bitcast i8* %"$msgobj_fname_1698" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1697", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1699", align 8 + %"$msgobj_td_1700" = getelementptr i8, i8* %"$msgobj_1696", i32 17 + %"$msgobj_td_1701" = bitcast i8* %"$msgobj_td_1700" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1701", align 8 + %"$support_contract_1702" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_1703" = getelementptr i8, i8* %"$msgobj_1696", i32 25 + %"$msgobj_v_1704" = bitcast i8* %"$msgobj_v_1703" to [20 x i8]* + store [20 x i8] %"$support_contract_1702", [20 x i8]* %"$msgobj_v_1704", align 1 + %"$msgobj_fname_1706" = getelementptr i8, i8* %"$msgobj_1696", i32 45 + %"$msgobj_fname_1707" = bitcast i8* %"$msgobj_fname_1706" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1705", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1707", align 8 + %"$msgobj_td_1708" = getelementptr i8, i8* %"$msgobj_1696", i32 61 + %"$msgobj_td_1709" = bitcast i8* %"$msgobj_td_1708" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1709", align 8 + %"$msgobj_v_1711" = getelementptr i8, i8* %"$msgobj_1696", i32 69 + %"$msgobj_v_1712" = bitcast i8* %"$msgobj_v_1711" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_1710", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_1712", align 8 + %"$msgobj_fname_1714" = getelementptr i8, i8* %"$msgobj_1696", i32 85 + %"$msgobj_fname_1715" = bitcast i8* %"$msgobj_fname_1714" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1713", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1715", align 8 + %"$msgobj_td_1716" = getelementptr i8, i8* %"$msgobj_1696", i32 101 + %"$msgobj_td_1717" = bitcast i8* %"$msgobj_td_1716" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1717", align 8 + %"$msgobj_v_1718" = getelementptr i8, i8* %"$msgobj_1696", i32 109 + %"$msgobj_v_1719" = bitcast i8* %"$msgobj_v_1718" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1719", align 8 + %"$msgobj_fname_1721" = getelementptr i8, i8* %"$msgobj_1696", i32 125 + %"$msgobj_fname_1722" = bitcast i8* %"$msgobj_fname_1721" to %String* + store %String { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$stringlit_1720", i32 0, i32 0), i32 1 }, %String* %"$msgobj_fname_1722", align 8 + %"$msgobj_td_1723" = getelementptr i8, i8* %"$msgobj_1696", i32 141 + %"$msgobj_td_1724" = bitcast i8* %"$msgobj_td_1723" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1724", align 8 + %"$s1_1725" = load %String, %String* %s1, align 8 + %"$msgobj_v_1726" = getelementptr i8, i8* %"$msgobj_1696", i32 149 + %"$msgobj_v_1727" = bitcast i8* %"$msgobj_v_1726" to %String* + store %String %"$s1_1725", %String* %"$msgobj_v_1727", align 8 + store i8* %"$msgobj_1696", i8** %msg1, align 8, !dbg !162 + %s2 = alloca %String, align 8 + %"$execptr_load_1730" = load i8*, i8** @_execptr, align 8 + %"$s2_call_1731" = call i8* @_fetch_field(i8* %"$execptr_load_1730", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_2_1729", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1), !dbg !163 + %"$s2_1732" = bitcast i8* %"$s2_call_1731" to %String* + %"$s2_1733" = load %String, %String* %"$s2_1732", align 8 + store %String %"$s2_1733", %String* %s2, align 8 + %"$_literal_cost_s2_1734" = alloca %String, align 8 + %"$s2_1735" = load %String, %String* %s2, align 8 + store %String %"$s2_1735", %String* %"$_literal_cost_s2_1734", align 8 + %"$$_literal_cost_s2_1734_1736" = bitcast %String* %"$_literal_cost_s2_1734" to i8* + %"$_literal_cost_call_1737" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s2_1734_1736") + %"$gasadd_1738" = add i64 %"$_literal_cost_call_1737", 0 + %"$gasrem_1739" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1740" = icmp ugt i64 %"$gasadd_1738", %"$gasrem_1739" + br i1 %"$gascmp_1740", label %"$out_of_gas_1741", label %"$have_gas_1742" + +"$out_of_gas_1741": ; preds = %"$have_gas_1694" + call void @_out_of_gas() + br label %"$have_gas_1742" + +"$have_gas_1742": ; preds = %"$out_of_gas_1741", %"$have_gas_1694" + %"$consume_1743" = sub i64 %"$gasrem_1739", %"$gasadd_1738" + store i64 %"$consume_1743", i64* @_gasrem, align 8 + %"$gasrem_1744" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1745" = icmp ugt i64 1, %"$gasrem_1744" + br i1 %"$gascmp_1745", label %"$out_of_gas_1746", label %"$have_gas_1747" + +"$out_of_gas_1746": ; preds = %"$have_gas_1742" + call void @_out_of_gas() + br label %"$have_gas_1747" + +"$have_gas_1747": ; preds = %"$out_of_gas_1746", %"$have_gas_1742" + %"$consume_1748" = sub i64 %"$gasrem_1744", 1 + store i64 %"$consume_1748", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_1749" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1750" = icmp ugt i64 1, %"$gasrem_1749" + br i1 %"$gascmp_1750", label %"$out_of_gas_1751", label %"$have_gas_1752" + +"$out_of_gas_1751": ; preds = %"$have_gas_1747" + call void @_out_of_gas() + br label %"$have_gas_1752" + +"$have_gas_1752": ; preds = %"$out_of_gas_1751", %"$have_gas_1747" + %"$consume_1753" = sub i64 %"$gasrem_1749", 1 + store i64 %"$consume_1753", i64* @_gasrem, align 8 + %"$msgobj_1754_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1754_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1754_salloc_load", i64 165) + %"$msgobj_1754_salloc" = bitcast i8* %"$msgobj_1754_salloc_salloc" to [165 x i8]* + %"$msgobj_1754" = bitcast [165 x i8]* %"$msgobj_1754_salloc" to i8* + store i8 4, i8* %"$msgobj_1754", align 1 + %"$msgobj_fname_1756" = getelementptr i8, i8* %"$msgobj_1754", i32 1 + %"$msgobj_fname_1757" = bitcast i8* %"$msgobj_fname_1756" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1755", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1757", align 8 + %"$msgobj_td_1758" = getelementptr i8, i8* %"$msgobj_1754", i32 17 + %"$msgobj_td_1759" = bitcast i8* %"$msgobj_td_1758" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1759", align 8 + %"$support_contract_1760" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_1761" = getelementptr i8, i8* %"$msgobj_1754", i32 25 + %"$msgobj_v_1762" = bitcast i8* %"$msgobj_v_1761" to [20 x i8]* + store [20 x i8] %"$support_contract_1760", [20 x i8]* %"$msgobj_v_1762", align 1 + %"$msgobj_fname_1764" = getelementptr i8, i8* %"$msgobj_1754", i32 45 + %"$msgobj_fname_1765" = bitcast i8* %"$msgobj_fname_1764" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1763", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1765", align 8 + %"$msgobj_td_1766" = getelementptr i8, i8* %"$msgobj_1754", i32 61 + %"$msgobj_td_1767" = bitcast i8* %"$msgobj_td_1766" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1767", align 8 + %"$msgobj_v_1769" = getelementptr i8, i8* %"$msgobj_1754", i32 69 + %"$msgobj_v_1770" = bitcast i8* %"$msgobj_v_1769" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_1768", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_1770", align 8 + %"$msgobj_fname_1772" = getelementptr i8, i8* %"$msgobj_1754", i32 85 + %"$msgobj_fname_1773" = bitcast i8* %"$msgobj_fname_1772" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1771", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1773", align 8 + %"$msgobj_td_1774" = getelementptr i8, i8* %"$msgobj_1754", i32 101 + %"$msgobj_td_1775" = bitcast i8* %"$msgobj_td_1774" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1775", align 8 + %"$msgobj_v_1776" = getelementptr i8, i8* %"$msgobj_1754", i32 109 + %"$msgobj_v_1777" = bitcast i8* %"$msgobj_v_1776" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1777", align 8 + %"$msgobj_fname_1779" = getelementptr i8, i8* %"$msgobj_1754", i32 125 + %"$msgobj_fname_1780" = bitcast i8* %"$msgobj_fname_1779" to %String* + store %String { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$stringlit_1778", i32 0, i32 0), i32 1 }, %String* %"$msgobj_fname_1780", align 8 + %"$msgobj_td_1781" = getelementptr i8, i8* %"$msgobj_1754", i32 141 + %"$msgobj_td_1782" = bitcast i8* %"$msgobj_td_1781" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1782", align 8 + %"$s2_1783" = load %String, %String* %s2, align 8 + %"$msgobj_v_1784" = getelementptr i8, i8* %"$msgobj_1754", i32 149 + %"$msgobj_v_1785" = bitcast i8* %"$msgobj_v_1784" to %String* + store %String %"$s2_1783", %String* %"$msgobj_v_1785", align 8 + store i8* %"$msgobj_1754", i8** %msg2, align 8, !dbg !164 + %"$gasrem_1787" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1788" = icmp ugt i64 1, %"$gasrem_1787" + br i1 %"$gascmp_1788", label %"$out_of_gas_1789", label %"$have_gas_1790" + +"$out_of_gas_1789": ; preds = %"$have_gas_1752" + call void @_out_of_gas() + br label %"$have_gas_1790" + +"$have_gas_1790": ; preds = %"$out_of_gas_1789", %"$have_gas_1752" + %"$consume_1791" = sub i64 %"$gasrem_1787", 1 + store i64 %"$consume_1791", i64* @_gasrem, align 8 + %msgs_tmp = alloca %TName_List_Message*, align 8 + %"$gasrem_1792" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1793" = icmp ugt i64 1, %"$gasrem_1792" + br i1 %"$gascmp_1793", label %"$out_of_gas_1794", label %"$have_gas_1795" + +"$out_of_gas_1794": ; preds = %"$have_gas_1790" + call void @_out_of_gas() + br label %"$have_gas_1795" + +"$have_gas_1795": ; preds = %"$out_of_gas_1794", %"$have_gas_1790" + %"$consume_1796" = sub i64 %"$gasrem_1792", 1 + store i64 %"$consume_1796", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_24" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1797" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1798" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1797", 0 + %"$accounting_tests.one_msg_envptr_1799" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1797", 1 + %"$msg2_1800" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_1801" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1798"(i8* %"$accounting_tests.one_msg_envptr_1799", i8* %"$msg2_1800"), !dbg !165 + store %TName_List_Message* %"$accounting_tests.one_msg_call_1801", %TName_List_Message** %"$accounting_tests.one_msg_24", align 8, !dbg !165 + %"$$accounting_tests.one_msg_24_1802" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_24", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_24_1802", %TName_List_Message** %msgs_tmp, align 8, !dbg !165 + %"$gasrem_1803" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1804" = icmp ugt i64 1, %"$gasrem_1803" + br i1 %"$gascmp_1804", label %"$out_of_gas_1805", label %"$have_gas_1806" + +"$out_of_gas_1805": ; preds = %"$have_gas_1795" + call void @_out_of_gas() + br label %"$have_gas_1806" + +"$have_gas_1806": ; preds = %"$out_of_gas_1805", %"$have_gas_1795" + %"$consume_1807" = sub i64 %"$gasrem_1803", 1 + store i64 %"$consume_1807", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_1808" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1809" = icmp ugt i64 1, %"$gasrem_1808" + br i1 %"$gascmp_1809", label %"$out_of_gas_1810", label %"$have_gas_1811" + +"$out_of_gas_1810": ; preds = %"$have_gas_1806" + call void @_out_of_gas() + br label %"$have_gas_1811" + +"$have_gas_1811": ; preds = %"$out_of_gas_1810", %"$have_gas_1806" + %"$consume_1812" = sub i64 %"$gasrem_1808", 1 + store i64 %"$consume_1812", i64* @_gasrem, align 8 + %"$msg1_1813" = load i8*, i8** %msg1, align 8 + %"$msgs_tmp_1814" = load %TName_List_Message*, %TName_List_Message** %msgs_tmp, align 8 + %"$adtval_1815_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_1815_salloc" = call i8* @_salloc(i8* %"$adtval_1815_load", i64 17) + %"$adtval_1815" = bitcast i8* %"$adtval_1815_salloc" to %CName_Cons_Message* + %"$adtgep_1816" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_1815", i32 0, i32 0 + store i8 0, i8* %"$adtgep_1816", align 1 + %"$adtgep_1817" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_1815", i32 0, i32 1 + store i8* %"$msg1_1813", i8** %"$adtgep_1817", align 8 + %"$adtgep_1818" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_1815", i32 0, i32 2 + store %TName_List_Message* %"$msgs_tmp_1814", %TName_List_Message** %"$adtgep_1818", align 8 + %"$adtptr_1819" = bitcast %CName_Cons_Message* %"$adtval_1815" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_1819", %TName_List_Message** %msgs, align 8, !dbg !166 + %"$msgs_1820" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_1820_1821" = bitcast %TName_List_Message* %"$msgs_1820" to i8* + %"$_literal_cost_call_1822" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_1820_1821") + %"$gasrem_1823" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1824" = icmp ugt i64 %"$_literal_cost_call_1822", %"$gasrem_1823" + br i1 %"$gascmp_1824", label %"$out_of_gas_1825", label %"$have_gas_1826" + +"$out_of_gas_1825": ; preds = %"$have_gas_1811" + call void @_out_of_gas() + br label %"$have_gas_1826" + +"$have_gas_1826": ; preds = %"$out_of_gas_1825", %"$have_gas_1811" + %"$consume_1827" = sub i64 %"$gasrem_1823", %"$_literal_cost_call_1822" + store i64 %"$consume_1827", i64* @_gasrem, align 8 + %"$execptr_load_1828" = load i8*, i8** @_execptr, align 8 + %"$msgs_1829" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_1828", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_1829"), !dbg !167 + %"$gasrem_1830" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1831" = icmp ugt i64 1, %"$gasrem_1830" + br i1 %"$gascmp_1831", label %"$out_of_gas_1832", label %"$have_gas_1833" + +"$out_of_gas_1832": ; preds = %"$have_gas_1826" + call void @_out_of_gas() + br label %"$have_gas_1833" + +"$have_gas_1833": ; preds = %"$out_of_gas_1832", %"$have_gas_1826" + %"$consume_1834" = sub i64 %"$gasrem_1830", 1 + store i64 %"$consume_1834", i64* @_gasrem, align 8 + %msg_final = alloca i8*, align 8 + %"$gasrem_1835" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1836" = icmp ugt i64 1, %"$gasrem_1835" + br i1 %"$gascmp_1836", label %"$out_of_gas_1837", label %"$have_gas_1838" + +"$out_of_gas_1837": ; preds = %"$have_gas_1833" + call void @_out_of_gas() + br label %"$have_gas_1838" + +"$have_gas_1838": ; preds = %"$out_of_gas_1837", %"$have_gas_1833" + %"$consume_1839" = sub i64 %"$gasrem_1835", 1 + store i64 %"$consume_1839", i64* @_gasrem, align 8 + %"$msgobj_1840_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1840_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1840_salloc_load", i64 125) + %"$msgobj_1840_salloc" = bitcast i8* %"$msgobj_1840_salloc_salloc" to [125 x i8]* + %"$msgobj_1840" = bitcast [125 x i8]* %"$msgobj_1840_salloc" to i8* + store i8 3, i8* %"$msgobj_1840", align 1 + %"$msgobj_fname_1842" = getelementptr i8, i8* %"$msgobj_1840", i32 1 + %"$msgobj_fname_1843" = bitcast i8* %"$msgobj_fname_1842" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1841", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1843", align 8 + %"$msgobj_td_1844" = getelementptr i8, i8* %"$msgobj_1840", i32 17 + %"$msgobj_td_1845" = bitcast i8* %"$msgobj_td_1844" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1845", align 8 + %"$_this_address_1846" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_1847" = getelementptr i8, i8* %"$msgobj_1840", i32 25 + %"$msgobj_v_1848" = bitcast i8* %"$msgobj_v_1847" to [20 x i8]* + store [20 x i8] %"$_this_address_1846", [20 x i8]* %"$msgobj_v_1848", align 1 + %"$msgobj_fname_1850" = getelementptr i8, i8* %"$msgobj_1840", i32 45 + %"$msgobj_fname_1851" = bitcast i8* %"$msgobj_fname_1850" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1849", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1851", align 8 + %"$msgobj_td_1852" = getelementptr i8, i8* %"$msgobj_1840", i32 61 + %"$msgobj_td_1853" = bitcast i8* %"$msgobj_td_1852" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1853", align 8 + %"$msgobj_v_1855" = getelementptr i8, i8* %"$msgobj_1840", i32 69 + %"$msgobj_v_1856" = bitcast i8* %"$msgobj_v_1855" to %String* + store %String { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$stringlit_1854", i32 0, i32 0), i32 20 }, %String* %"$msgobj_v_1856", align 8 + %"$msgobj_fname_1858" = getelementptr i8, i8* %"$msgobj_1840", i32 85 + %"$msgobj_fname_1859" = bitcast i8* %"$msgobj_fname_1858" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1857", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1859", align 8 + %"$msgobj_td_1860" = getelementptr i8, i8* %"$msgobj_1840", i32 101 + %"$msgobj_td_1861" = bitcast i8* %"$msgobj_td_1860" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1861", align 8 + %"$msgobj_v_1862" = getelementptr i8, i8* %"$msgobj_1840", i32 109 + %"$msgobj_v_1863" = bitcast i8* %"$msgobj_v_1862" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1863", align 8 + store i8* %"$msgobj_1840", i8** %msg_final, align 8, !dbg !168 + %"$gasrem_1865" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1866" = icmp ugt i64 1, %"$gasrem_1865" + br i1 %"$gascmp_1866", label %"$out_of_gas_1867", label %"$have_gas_1868" + +"$out_of_gas_1867": ; preds = %"$have_gas_1838" + call void @_out_of_gas() + br label %"$have_gas_1868" + +"$have_gas_1868": ; preds = %"$out_of_gas_1867", %"$have_gas_1838" + %"$consume_1869" = sub i64 %"$gasrem_1865", 1 + store i64 %"$consume_1869", i64* @_gasrem, align 8 + %msgs_final = alloca %TName_List_Message*, align 8 + %"$gasrem_1870" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1871" = icmp ugt i64 1, %"$gasrem_1870" + br i1 %"$gascmp_1871", label %"$out_of_gas_1872", label %"$have_gas_1873" + +"$out_of_gas_1872": ; preds = %"$have_gas_1868" + call void @_out_of_gas() + br label %"$have_gas_1873" + +"$have_gas_1873": ; preds = %"$out_of_gas_1872", %"$have_gas_1868" + %"$consume_1874" = sub i64 %"$gasrem_1870", 1 + store i64 %"$consume_1874", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_23" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1875" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1876" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1875", 0 + %"$accounting_tests.one_msg_envptr_1877" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1875", 1 + %"$msg_final_1878" = load i8*, i8** %msg_final, align 8 + %"$accounting_tests.one_msg_call_1879" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1876"(i8* %"$accounting_tests.one_msg_envptr_1877", i8* %"$msg_final_1878"), !dbg !169 + store %TName_List_Message* %"$accounting_tests.one_msg_call_1879", %TName_List_Message** %"$accounting_tests.one_msg_23", align 8, !dbg !169 + %"$$accounting_tests.one_msg_23_1880" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_23", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_23_1880", %TName_List_Message** %msgs_final, align 8, !dbg !169 + %"$msgs_final_1881" = load %TName_List_Message*, %TName_List_Message** %msgs_final, align 8 + %"$$msgs_final_1881_1882" = bitcast %TName_List_Message* %"$msgs_final_1881" to i8* + %"$_literal_cost_call_1883" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_final_1881_1882") + %"$gasrem_1884" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1885" = icmp ugt i64 %"$_literal_cost_call_1883", %"$gasrem_1884" + br i1 %"$gascmp_1885", label %"$out_of_gas_1886", label %"$have_gas_1887" + +"$out_of_gas_1886": ; preds = %"$have_gas_1873" + call void @_out_of_gas() + br label %"$have_gas_1887" + +"$have_gas_1887": ; preds = %"$out_of_gas_1886", %"$have_gas_1873" + %"$consume_1888" = sub i64 %"$gasrem_1884", %"$_literal_cost_call_1883" + store i64 %"$consume_1888", i64* @_gasrem, align 8 + %"$execptr_load_1889" = load i8*, i8** @_execptr, align 8 + %"$msgs_final_1890" = load %TName_List_Message*, %TName_List_Message** %msgs_final, align 8 + call void @_send(i8* %"$execptr_load_1889", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_final_1890"), !dbg !170 + ret void +} + +define void @Test_Send_2(i8* %0) !dbg !171 { +entry: + %"$_amount_1892" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1893" = bitcast i8* %"$_amount_1892" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1893", align 8 + %"$_origin_1894" = getelementptr i8, i8* %0, i32 16 + %"$_origin_1895" = bitcast i8* %"$_origin_1894" to [20 x i8]* + %"$_sender_1896" = getelementptr i8, i8* %0, i32 36 + %"$_sender_1897" = bitcast i8* %"$_sender_1896" to [20 x i8]* + call void @"$Test_Send_2_1661"(%Uint128 %_amount, [20 x i8]* %"$_origin_1895", [20 x i8]* %"$_sender_1897"), !dbg !172 + ret void +} + +define internal void @"$Finalize_Test_Send_2_1898"(%Uint128 %_amount, [20 x i8]* %"$_origin_1899", [20 x i8]* %"$_sender_1900") !dbg !173 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1899", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1900", align 1 + %"$gasrem_1901" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1902" = icmp ugt i64 1, %"$gasrem_1901" + br i1 %"$gascmp_1902", label %"$out_of_gas_1903", label %"$have_gas_1904" + +"$out_of_gas_1903": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1904" + +"$have_gas_1904": ; preds = %"$out_of_gas_1903", %entry + %"$consume_1905" = sub i64 %"$gasrem_1901", 1 + store i64 %"$consume_1905", i64* @_gasrem, align 8 + %x = alloca %Uint128, align 8 + %"$gasrem_1906" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1907" = icmp ugt i64 1, %"$gasrem_1906" + br i1 %"$gascmp_1907", label %"$out_of_gas_1908", label %"$have_gas_1909" + +"$out_of_gas_1908": ; preds = %"$have_gas_1904" + call void @_out_of_gas() + br label %"$have_gas_1909" + +"$have_gas_1909": ; preds = %"$out_of_gas_1908", %"$have_gas_1904" + %"$consume_1910" = sub i64 %"$gasrem_1906", 1 + store i64 %"$consume_1910", i64* @_gasrem, align 8 + store %Uint128 { i128 2 }, %Uint128* %x, align 8, !dbg !174 + %"$gasrem_1911" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1912" = icmp ugt i64 1, %"$gasrem_1911" + br i1 %"$gascmp_1912", label %"$out_of_gas_1913", label %"$have_gas_1914" + +"$out_of_gas_1913": ; preds = %"$have_gas_1909" + call void @_out_of_gas() + br label %"$have_gas_1914" + +"$have_gas_1914": ; preds = %"$out_of_gas_1913", %"$have_gas_1909" + %"$consume_1915" = sub i64 %"$gasrem_1911", 1 + store i64 %"$consume_1915", i64* @_gasrem, align 8 + %"$Finalize_Test_Send_Helper_2_Msgs__origin_1916" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__origin_1916", align 1 + %"$Finalize_Test_Send_Helper_2_Msgs__sender_1917" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__sender_1917", align 1 + %"$x_1918" = load %Uint128, %Uint128* %x, align 8 + call void @"$Finalize_Test_Send_Helper_2_Msgs_1450"(%Uint128 %_amount, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__origin_1916", [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__sender_1917", %Uint128 %"$x_1918"), !dbg !175 + ret void +} + +define void @Finalize_Test_Send_2(i8* %0) !dbg !176 { +entry: + %"$_amount_1920" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1921" = bitcast i8* %"$_amount_1920" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1921", align 8 + %"$_origin_1922" = getelementptr i8, i8* %0, i32 16 + %"$_origin_1923" = bitcast i8* %"$_origin_1922" to [20 x i8]* + %"$_sender_1924" = getelementptr i8, i8* %0, i32 36 + %"$_sender_1925" = bitcast i8* %"$_sender_1924" to [20 x i8]* + call void @"$Finalize_Test_Send_2_1898"(%Uint128 %_amount, [20 x i8]* %"$_origin_1923", [20 x i8]* %"$_sender_1925"), !dbg !177 + ret void +} + +define internal void @"$Test_Send_3_1926"(%Uint128 %_amount, [20 x i8]* %"$_origin_1927", [20 x i8]* %"$_sender_1928") !dbg !178 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1927", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1928", align 1 + %"$gasrem_1929" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1930" = icmp ugt i64 1, %"$gasrem_1929" + br i1 %"$gascmp_1930", label %"$out_of_gas_1931", label %"$have_gas_1932" + +"$out_of_gas_1931": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1932" + +"$have_gas_1932": ; preds = %"$out_of_gas_1931", %entry + %"$consume_1933" = sub i64 %"$gasrem_1929", 1 + store i64 %"$consume_1933", i64* @_gasrem, align 8 + %"$AssertReset__origin_1934" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_1934", align 1 + %"$AssertReset__sender_1935" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_1935", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_1934", [20 x i8]* %"$AssertReset__sender_1935"), !dbg !179 + %"$gasrem_1937" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1938" = icmp ugt i64 0, %"$gasrem_1937" + br i1 %"$gascmp_1938", label %"$out_of_gas_1939", label %"$have_gas_1940" + +"$out_of_gas_1939": ; preds = %"$have_gas_1932" + call void @_out_of_gas() + br label %"$have_gas_1940" + +"$have_gas_1940": ; preds = %"$out_of_gas_1939", %"$have_gas_1932" + %"$consume_1941" = sub i64 %"$gasrem_1937", 0 + store i64 %"$consume_1941", i64* @_gasrem, align 8 + %"$gasrem_1942" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1943" = icmp ugt i64 1, %"$gasrem_1942" + br i1 %"$gascmp_1943", label %"$out_of_gas_1944", label %"$have_gas_1945" + +"$out_of_gas_1944": ; preds = %"$have_gas_1940" + call void @_out_of_gas() + br label %"$have_gas_1945" + +"$have_gas_1945": ; preds = %"$out_of_gas_1944", %"$have_gas_1940" + %"$consume_1946" = sub i64 %"$gasrem_1942", 1 + store i64 %"$consume_1946", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_1947" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1948" = icmp ugt i64 1, %"$gasrem_1947" + br i1 %"$gascmp_1948", label %"$out_of_gas_1949", label %"$have_gas_1950" + +"$out_of_gas_1949": ; preds = %"$have_gas_1945" + call void @_out_of_gas() + br label %"$have_gas_1950" + +"$have_gas_1950": ; preds = %"$out_of_gas_1949", %"$have_gas_1945" + %"$consume_1951" = sub i64 %"$gasrem_1947", 1 + store i64 %"$consume_1951", i64* @_gasrem, align 8 + %"$msgobj_1952_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1952_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1952_salloc_load", i64 125) + %"$msgobj_1952_salloc" = bitcast i8* %"$msgobj_1952_salloc_salloc" to [125 x i8]* + %"$msgobj_1952" = bitcast [125 x i8]* %"$msgobj_1952_salloc" to i8* + store i8 3, i8* %"$msgobj_1952", align 1 + %"$msgobj_fname_1954" = getelementptr i8, i8* %"$msgobj_1952", i32 1 + %"$msgobj_fname_1955" = bitcast i8* %"$msgobj_fname_1954" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1953", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1955", align 8 + %"$msgobj_td_1956" = getelementptr i8, i8* %"$msgobj_1952", i32 17 + %"$msgobj_td_1957" = bitcast i8* %"$msgobj_td_1956" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1957", align 8 + %"$_this_address_1958" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_1959" = getelementptr i8, i8* %"$msgobj_1952", i32 25 + %"$msgobj_v_1960" = bitcast i8* %"$msgobj_v_1959" to [20 x i8]* + store [20 x i8] %"$_this_address_1958", [20 x i8]* %"$msgobj_v_1960", align 1 + %"$msgobj_fname_1962" = getelementptr i8, i8* %"$msgobj_1952", i32 45 + %"$msgobj_fname_1963" = bitcast i8* %"$msgobj_fname_1962" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1961", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1963", align 8 + %"$msgobj_td_1964" = getelementptr i8, i8* %"$msgobj_1952", i32 61 + %"$msgobj_td_1965" = bitcast i8* %"$msgobj_td_1964" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1965", align 8 + %"$msgobj_v_1967" = getelementptr i8, i8* %"$msgobj_1952", i32 69 + %"$msgobj_v_1968" = bitcast i8* %"$msgobj_v_1967" to %String* + store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_1966", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_1968", align 8 + %"$msgobj_fname_1970" = getelementptr i8, i8* %"$msgobj_1952", i32 85 + %"$msgobj_fname_1971" = bitcast i8* %"$msgobj_fname_1970" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1969", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1971", align 8 + %"$msgobj_td_1972" = getelementptr i8, i8* %"$msgobj_1952", i32 101 + %"$msgobj_td_1973" = bitcast i8* %"$msgobj_td_1972" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1973", align 8 + %"$msgobj_v_1974" = getelementptr i8, i8* %"$msgobj_1952", i32 109 + %"$msgobj_v_1975" = bitcast i8* %"$msgobj_v_1974" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1975", align 8 + store i8* %"$msgobj_1952", i8** %msg1, align 8, !dbg !180 + %"$gasrem_1977" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1978" = icmp ugt i64 1, %"$gasrem_1977" + br i1 %"$gascmp_1978", label %"$out_of_gas_1979", label %"$have_gas_1980" + +"$out_of_gas_1979": ; preds = %"$have_gas_1950" + call void @_out_of_gas() + br label %"$have_gas_1980" + +"$have_gas_1980": ; preds = %"$out_of_gas_1979", %"$have_gas_1950" + %"$consume_1981" = sub i64 %"$gasrem_1977", 1 + store i64 %"$consume_1981", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_1982" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1983" = icmp ugt i64 1, %"$gasrem_1982" + br i1 %"$gascmp_1983", label %"$out_of_gas_1984", label %"$have_gas_1985" + +"$out_of_gas_1984": ; preds = %"$have_gas_1980" + call void @_out_of_gas() + br label %"$have_gas_1985" + +"$have_gas_1985": ; preds = %"$out_of_gas_1984", %"$have_gas_1980" + %"$consume_1986" = sub i64 %"$gasrem_1982", 1 + store i64 %"$consume_1986", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_27" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1987" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1988" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1987", 0 + %"$accounting_tests.one_msg_envptr_1989" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1987", 1 + %"$msg1_1990" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_1991" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1988"(i8* %"$accounting_tests.one_msg_envptr_1989", i8* %"$msg1_1990"), !dbg !181 + store %TName_List_Message* %"$accounting_tests.one_msg_call_1991", %TName_List_Message** %"$accounting_tests.one_msg_27", align 8, !dbg !181 + %"$$accounting_tests.one_msg_27_1992" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_27", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_27_1992", %TName_List_Message** %msgs1, align 8, !dbg !181 + %"$msgs1_1993" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_1993_1994" = bitcast %TName_List_Message* %"$msgs1_1993" to i8* + %"$_literal_cost_call_1995" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_1993_1994") + %"$gasrem_1996" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1997" = icmp ugt i64 %"$_literal_cost_call_1995", %"$gasrem_1996" + br i1 %"$gascmp_1997", label %"$out_of_gas_1998", label %"$have_gas_1999" + +"$out_of_gas_1998": ; preds = %"$have_gas_1985" + call void @_out_of_gas() + br label %"$have_gas_1999" + +"$have_gas_1999": ; preds = %"$out_of_gas_1998", %"$have_gas_1985" + %"$consume_2000" = sub i64 %"$gasrem_1996", %"$_literal_cost_call_1995" + store i64 %"$consume_2000", i64* @_gasrem, align 8 + %"$execptr_load_2001" = load i8*, i8** @_execptr, align 8 + %"$msgs1_2002" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_2001", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_2002"), !dbg !182 + %s2 = alloca %String, align 8 + %"$execptr_load_2004" = load i8*, i8** @_execptr, align 8 + %"$s2_call_2005" = call i8* @_fetch_field(i8* %"$execptr_load_2004", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_2_2003", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1), !dbg !183 + %"$s2_2006" = bitcast i8* %"$s2_call_2005" to %String* + %"$s2_2007" = load %String, %String* %"$s2_2006", align 8 + store %String %"$s2_2007", %String* %s2, align 8 + %"$_literal_cost_s2_2008" = alloca %String, align 8 + %"$s2_2009" = load %String, %String* %s2, align 8 + store %String %"$s2_2009", %String* %"$_literal_cost_s2_2008", align 8 + %"$$_literal_cost_s2_2008_2010" = bitcast %String* %"$_literal_cost_s2_2008" to i8* + %"$_literal_cost_call_2011" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s2_2008_2010") + %"$gasadd_2012" = add i64 %"$_literal_cost_call_2011", 0 + %"$gasrem_2013" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2014" = icmp ugt i64 %"$gasadd_2012", %"$gasrem_2013" + br i1 %"$gascmp_2014", label %"$out_of_gas_2015", label %"$have_gas_2016" + +"$out_of_gas_2015": ; preds = %"$have_gas_1999" + call void @_out_of_gas() + br label %"$have_gas_2016" + +"$have_gas_2016": ; preds = %"$out_of_gas_2015", %"$have_gas_1999" + %"$consume_2017" = sub i64 %"$gasrem_2013", %"$gasadd_2012" + store i64 %"$consume_2017", i64* @_gasrem, align 8 + %"$gasrem_2018" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2019" = icmp ugt i64 1, %"$gasrem_2018" + br i1 %"$gascmp_2019", label %"$out_of_gas_2020", label %"$have_gas_2021" + +"$out_of_gas_2020": ; preds = %"$have_gas_2016" + call void @_out_of_gas() + br label %"$have_gas_2021" + +"$have_gas_2021": ; preds = %"$out_of_gas_2020", %"$have_gas_2016" + %"$consume_2022" = sub i64 %"$gasrem_2018", 1 + store i64 %"$consume_2022", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_2023" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2024" = icmp ugt i64 1, %"$gasrem_2023" + br i1 %"$gascmp_2024", label %"$out_of_gas_2025", label %"$have_gas_2026" + +"$out_of_gas_2025": ; preds = %"$have_gas_2021" + call void @_out_of_gas() + br label %"$have_gas_2026" + +"$have_gas_2026": ; preds = %"$out_of_gas_2025", %"$have_gas_2021" + %"$consume_2027" = sub i64 %"$gasrem_2023", 1 + store i64 %"$consume_2027", i64* @_gasrem, align 8 + %"$msgobj_2028_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2028_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2028_salloc_load", i64 165) + %"$msgobj_2028_salloc" = bitcast i8* %"$msgobj_2028_salloc_salloc" to [165 x i8]* + %"$msgobj_2028" = bitcast [165 x i8]* %"$msgobj_2028_salloc" to i8* + store i8 4, i8* %"$msgobj_2028", align 1 + %"$msgobj_fname_2030" = getelementptr i8, i8* %"$msgobj_2028", i32 1 + %"$msgobj_fname_2031" = bitcast i8* %"$msgobj_fname_2030" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2029", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2031", align 8 + %"$msgobj_td_2032" = getelementptr i8, i8* %"$msgobj_2028", i32 17 + %"$msgobj_td_2033" = bitcast i8* %"$msgobj_td_2032" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2033", align 8 + %"$support_contract_2034" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2035" = getelementptr i8, i8* %"$msgobj_2028", i32 25 + %"$msgobj_v_2036" = bitcast i8* %"$msgobj_v_2035" to [20 x i8]* + store [20 x i8] %"$support_contract_2034", [20 x i8]* %"$msgobj_v_2036", align 1 + %"$msgobj_fname_2038" = getelementptr i8, i8* %"$msgobj_2028", i32 45 + %"$msgobj_fname_2039" = bitcast i8* %"$msgobj_fname_2038" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2037", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2039", align 8 + %"$msgobj_td_2040" = getelementptr i8, i8* %"$msgobj_2028", i32 61 + %"$msgobj_td_2041" = bitcast i8* %"$msgobj_td_2040" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2041", align 8 + %"$msgobj_v_2043" = getelementptr i8, i8* %"$msgobj_2028", i32 69 + %"$msgobj_v_2044" = bitcast i8* %"$msgobj_v_2043" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_2042", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_2044", align 8 + %"$msgobj_fname_2046" = getelementptr i8, i8* %"$msgobj_2028", i32 85 + %"$msgobj_fname_2047" = bitcast i8* %"$msgobj_fname_2046" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2045", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2047", align 8 + %"$msgobj_td_2048" = getelementptr i8, i8* %"$msgobj_2028", i32 101 + %"$msgobj_td_2049" = bitcast i8* %"$msgobj_td_2048" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2049", align 8 + %"$msgobj_v_2050" = getelementptr i8, i8* %"$msgobj_2028", i32 109 + %"$msgobj_v_2051" = bitcast i8* %"$msgobj_v_2050" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_2051", align 8 + %"$msgobj_fname_2053" = getelementptr i8, i8* %"$msgobj_2028", i32 125 + %"$msgobj_fname_2054" = bitcast i8* %"$msgobj_fname_2053" to %String* + store %String { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$stringlit_2052", i32 0, i32 0), i32 1 }, %String* %"$msgobj_fname_2054", align 8 + %"$msgobj_td_2055" = getelementptr i8, i8* %"$msgobj_2028", i32 141 + %"$msgobj_td_2056" = bitcast i8* %"$msgobj_td_2055" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2056", align 8 + %"$s2_2057" = load %String, %String* %s2, align 8 + %"$msgobj_v_2058" = getelementptr i8, i8* %"$msgobj_2028", i32 149 + %"$msgobj_v_2059" = bitcast i8* %"$msgobj_v_2058" to %String* + store %String %"$s2_2057", %String* %"$msgobj_v_2059", align 8 + store i8* %"$msgobj_2028", i8** %msg2, align 8, !dbg !184 + %"$gasrem_2061" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2062" = icmp ugt i64 1, %"$gasrem_2061" + br i1 %"$gascmp_2062", label %"$out_of_gas_2063", label %"$have_gas_2064" + +"$out_of_gas_2063": ; preds = %"$have_gas_2026" + call void @_out_of_gas() + br label %"$have_gas_2064" + +"$have_gas_2064": ; preds = %"$out_of_gas_2063", %"$have_gas_2026" + %"$consume_2065" = sub i64 %"$gasrem_2061", 1 + store i64 %"$consume_2065", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_2066" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2067" = icmp ugt i64 1, %"$gasrem_2066" + br i1 %"$gascmp_2067", label %"$out_of_gas_2068", label %"$have_gas_2069" + +"$out_of_gas_2068": ; preds = %"$have_gas_2064" + call void @_out_of_gas() + br label %"$have_gas_2069" + +"$have_gas_2069": ; preds = %"$out_of_gas_2068", %"$have_gas_2064" + %"$consume_2070" = sub i64 %"$gasrem_2066", 1 + store i64 %"$consume_2070", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_26" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2071" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2072" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2071", 0 + %"$accounting_tests.one_msg_envptr_2073" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2071", 1 + %"$msg2_2074" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_2075" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2072"(i8* %"$accounting_tests.one_msg_envptr_2073", i8* %"$msg2_2074"), !dbg !185 + store %TName_List_Message* %"$accounting_tests.one_msg_call_2075", %TName_List_Message** %"$accounting_tests.one_msg_26", align 8, !dbg !185 + %"$$accounting_tests.one_msg_26_2076" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_26", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_26_2076", %TName_List_Message** %msgs2, align 8, !dbg !185 + %"$msgs2_2077" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_2077_2078" = bitcast %TName_List_Message* %"$msgs2_2077" to i8* + %"$_literal_cost_call_2079" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_2077_2078") + %"$gasrem_2080" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2081" = icmp ugt i64 %"$_literal_cost_call_2079", %"$gasrem_2080" + br i1 %"$gascmp_2081", label %"$out_of_gas_2082", label %"$have_gas_2083" + +"$out_of_gas_2082": ; preds = %"$have_gas_2069" + call void @_out_of_gas() + br label %"$have_gas_2083" + +"$have_gas_2083": ; preds = %"$out_of_gas_2082", %"$have_gas_2069" + %"$consume_2084" = sub i64 %"$gasrem_2080", %"$_literal_cost_call_2079" + store i64 %"$consume_2084", i64* @_gasrem, align 8 + %"$execptr_load_2085" = load i8*, i8** @_execptr, align 8 + %"$msgs2_2086" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_2085", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_2086"), !dbg !186 + %"$gasrem_2087" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2088" = icmp ugt i64 1, %"$gasrem_2087" + br i1 %"$gascmp_2088", label %"$out_of_gas_2089", label %"$have_gas_2090" + +"$out_of_gas_2089": ; preds = %"$have_gas_2083" + call void @_out_of_gas() + br label %"$have_gas_2090" + +"$have_gas_2090": ; preds = %"$out_of_gas_2089", %"$have_gas_2083" + %"$consume_2091" = sub i64 %"$gasrem_2087", 1 + store i64 %"$consume_2091", i64* @_gasrem, align 8 + %msg_final = alloca i8*, align 8 + %"$gasrem_2092" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2093" = icmp ugt i64 1, %"$gasrem_2092" + br i1 %"$gascmp_2093", label %"$out_of_gas_2094", label %"$have_gas_2095" + +"$out_of_gas_2094": ; preds = %"$have_gas_2090" + call void @_out_of_gas() + br label %"$have_gas_2095" + +"$have_gas_2095": ; preds = %"$out_of_gas_2094", %"$have_gas_2090" + %"$consume_2096" = sub i64 %"$gasrem_2092", 1 + store i64 %"$consume_2096", i64* @_gasrem, align 8 + %"$msgobj_2097_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2097_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2097_salloc_load", i64 125) + %"$msgobj_2097_salloc" = bitcast i8* %"$msgobj_2097_salloc_salloc" to [125 x i8]* + %"$msgobj_2097" = bitcast [125 x i8]* %"$msgobj_2097_salloc" to i8* + store i8 3, i8* %"$msgobj_2097", align 1 + %"$msgobj_fname_2099" = getelementptr i8, i8* %"$msgobj_2097", i32 1 + %"$msgobj_fname_2100" = bitcast i8* %"$msgobj_fname_2099" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2098", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2100", align 8 + %"$msgobj_td_2101" = getelementptr i8, i8* %"$msgobj_2097", i32 17 + %"$msgobj_td_2102" = bitcast i8* %"$msgobj_td_2101" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2102", align 8 + %"$_this_address_2103" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_2104" = getelementptr i8, i8* %"$msgobj_2097", i32 25 + %"$msgobj_v_2105" = bitcast i8* %"$msgobj_v_2104" to [20 x i8]* + store [20 x i8] %"$_this_address_2103", [20 x i8]* %"$msgobj_v_2105", align 1 + %"$msgobj_fname_2107" = getelementptr i8, i8* %"$msgobj_2097", i32 45 + %"$msgobj_fname_2108" = bitcast i8* %"$msgobj_fname_2107" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2106", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2108", align 8 + %"$msgobj_td_2109" = getelementptr i8, i8* %"$msgobj_2097", i32 61 + %"$msgobj_td_2110" = bitcast i8* %"$msgobj_td_2109" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2110", align 8 + %"$msgobj_v_2112" = getelementptr i8, i8* %"$msgobj_2097", i32 69 + %"$msgobj_v_2113" = bitcast i8* %"$msgobj_v_2112" to %String* + store %String { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$stringlit_2111", i32 0, i32 0), i32 20 }, %String* %"$msgobj_v_2113", align 8 + %"$msgobj_fname_2115" = getelementptr i8, i8* %"$msgobj_2097", i32 85 + %"$msgobj_fname_2116" = bitcast i8* %"$msgobj_fname_2115" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2114", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2116", align 8 + %"$msgobj_td_2117" = getelementptr i8, i8* %"$msgobj_2097", i32 101 + %"$msgobj_td_2118" = bitcast i8* %"$msgobj_td_2117" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2118", align 8 + %"$msgobj_v_2119" = getelementptr i8, i8* %"$msgobj_2097", i32 109 + %"$msgobj_v_2120" = bitcast i8* %"$msgobj_v_2119" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_2120", align 8 + store i8* %"$msgobj_2097", i8** %msg_final, align 8, !dbg !187 + %"$gasrem_2122" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2123" = icmp ugt i64 1, %"$gasrem_2122" + br i1 %"$gascmp_2123", label %"$out_of_gas_2124", label %"$have_gas_2125" + +"$out_of_gas_2124": ; preds = %"$have_gas_2095" + call void @_out_of_gas() + br label %"$have_gas_2125" + +"$have_gas_2125": ; preds = %"$out_of_gas_2124", %"$have_gas_2095" + %"$consume_2126" = sub i64 %"$gasrem_2122", 1 + store i64 %"$consume_2126", i64* @_gasrem, align 8 + %msgs_final = alloca %TName_List_Message*, align 8 + %"$gasrem_2127" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2128" = icmp ugt i64 1, %"$gasrem_2127" + br i1 %"$gascmp_2128", label %"$out_of_gas_2129", label %"$have_gas_2130" + +"$out_of_gas_2129": ; preds = %"$have_gas_2125" + call void @_out_of_gas() + br label %"$have_gas_2130" + +"$have_gas_2130": ; preds = %"$out_of_gas_2129", %"$have_gas_2125" + %"$consume_2131" = sub i64 %"$gasrem_2127", 1 + store i64 %"$consume_2131", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_25" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2132" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2133" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2132", 0 + %"$accounting_tests.one_msg_envptr_2134" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2132", 1 + %"$msg_final_2135" = load i8*, i8** %msg_final, align 8 + %"$accounting_tests.one_msg_call_2136" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2133"(i8* %"$accounting_tests.one_msg_envptr_2134", i8* %"$msg_final_2135"), !dbg !188 + store %TName_List_Message* %"$accounting_tests.one_msg_call_2136", %TName_List_Message** %"$accounting_tests.one_msg_25", align 8, !dbg !188 + %"$$accounting_tests.one_msg_25_2137" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_25", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_25_2137", %TName_List_Message** %msgs_final, align 8, !dbg !188 + %"$msgs_final_2138" = load %TName_List_Message*, %TName_List_Message** %msgs_final, align 8 + %"$$msgs_final_2138_2139" = bitcast %TName_List_Message* %"$msgs_final_2138" to i8* + %"$_literal_cost_call_2140" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_final_2138_2139") + %"$gasrem_2141" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2142" = icmp ugt i64 %"$_literal_cost_call_2140", %"$gasrem_2141" + br i1 %"$gascmp_2142", label %"$out_of_gas_2143", label %"$have_gas_2144" + +"$out_of_gas_2143": ; preds = %"$have_gas_2130" + call void @_out_of_gas() + br label %"$have_gas_2144" + +"$have_gas_2144": ; preds = %"$out_of_gas_2143", %"$have_gas_2130" + %"$consume_2145" = sub i64 %"$gasrem_2141", %"$_literal_cost_call_2140" + store i64 %"$consume_2145", i64* @_gasrem, align 8 + %"$execptr_load_2146" = load i8*, i8** @_execptr, align 8 + %"$msgs_final_2147" = load %TName_List_Message*, %TName_List_Message** %msgs_final, align 8 + call void @_send(i8* %"$execptr_load_2146", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_final_2147"), !dbg !189 + ret void +} + +define void @Test_Send_3(i8* %0) !dbg !190 { +entry: + %"$_amount_2149" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2150" = bitcast i8* %"$_amount_2149" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2150", align 8 + %"$_origin_2151" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2152" = bitcast i8* %"$_origin_2151" to [20 x i8]* + %"$_sender_2153" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2154" = bitcast i8* %"$_sender_2153" to [20 x i8]* + call void @"$Test_Send_3_1926"(%Uint128 %_amount, [20 x i8]* %"$_origin_2152", [20 x i8]* %"$_sender_2154"), !dbg !191 + ret void +} + +define internal void @"$Test_Send_3_Helper_2155"(%Uint128 %_amount, [20 x i8]* %"$_origin_2156", [20 x i8]* %"$_sender_2157") !dbg !192 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2156", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2157", align 1 + %s1 = alloca %String, align 8 + %"$execptr_load_2159" = load i8*, i8** @_execptr, align 8 + %"$s1_call_2160" = call i8* @_fetch_field(i8* %"$execptr_load_2159", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_1_2158", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1), !dbg !193 + %"$s1_2161" = bitcast i8* %"$s1_call_2160" to %String* + %"$s1_2162" = load %String, %String* %"$s1_2161", align 8 + store %String %"$s1_2162", %String* %s1, align 8 + %"$_literal_cost_s1_2163" = alloca %String, align 8 + %"$s1_2164" = load %String, %String* %s1, align 8 + store %String %"$s1_2164", %String* %"$_literal_cost_s1_2163", align 8 + %"$$_literal_cost_s1_2163_2165" = bitcast %String* %"$_literal_cost_s1_2163" to i8* + %"$_literal_cost_call_2166" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s1_2163_2165") + %"$gasadd_2167" = add i64 %"$_literal_cost_call_2166", 0 + %"$gasrem_2168" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2169" = icmp ugt i64 %"$gasadd_2167", %"$gasrem_2168" + br i1 %"$gascmp_2169", label %"$out_of_gas_2170", label %"$have_gas_2171" + +"$out_of_gas_2170": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2171" + +"$have_gas_2171": ; preds = %"$out_of_gas_2170", %entry + %"$consume_2172" = sub i64 %"$gasrem_2168", %"$gasadd_2167" + store i64 %"$consume_2172", i64* @_gasrem, align 8 + %"$gasrem_2173" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2174" = icmp ugt i64 1, %"$gasrem_2173" + br i1 %"$gascmp_2174", label %"$out_of_gas_2175", label %"$have_gas_2176" + +"$out_of_gas_2175": ; preds = %"$have_gas_2171" + call void @_out_of_gas() + br label %"$have_gas_2176" + +"$have_gas_2176": ; preds = %"$out_of_gas_2175", %"$have_gas_2171" + %"$consume_2177" = sub i64 %"$gasrem_2173", 1 + store i64 %"$consume_2177", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_2178" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2179" = icmp ugt i64 1, %"$gasrem_2178" + br i1 %"$gascmp_2179", label %"$out_of_gas_2180", label %"$have_gas_2181" + +"$out_of_gas_2180": ; preds = %"$have_gas_2176" + call void @_out_of_gas() + br label %"$have_gas_2181" + +"$have_gas_2181": ; preds = %"$out_of_gas_2180", %"$have_gas_2176" + %"$consume_2182" = sub i64 %"$gasrem_2178", 1 + store i64 %"$consume_2182", i64* @_gasrem, align 8 + %"$msgobj_2183_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2183_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2183_salloc_load", i64 165) + %"$msgobj_2183_salloc" = bitcast i8* %"$msgobj_2183_salloc_salloc" to [165 x i8]* + %"$msgobj_2183" = bitcast [165 x i8]* %"$msgobj_2183_salloc" to i8* + store i8 4, i8* %"$msgobj_2183", align 1 + %"$msgobj_fname_2185" = getelementptr i8, i8* %"$msgobj_2183", i32 1 + %"$msgobj_fname_2186" = bitcast i8* %"$msgobj_fname_2185" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2184", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2186", align 8 + %"$msgobj_td_2187" = getelementptr i8, i8* %"$msgobj_2183", i32 17 + %"$msgobj_td_2188" = bitcast i8* %"$msgobj_td_2187" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2188", align 8 + %"$support_contract_2189" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2190" = getelementptr i8, i8* %"$msgobj_2183", i32 25 + %"$msgobj_v_2191" = bitcast i8* %"$msgobj_v_2190" to [20 x i8]* + store [20 x i8] %"$support_contract_2189", [20 x i8]* %"$msgobj_v_2191", align 1 + %"$msgobj_fname_2193" = getelementptr i8, i8* %"$msgobj_2183", i32 45 + %"$msgobj_fname_2194" = bitcast i8* %"$msgobj_fname_2193" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2192", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2194", align 8 + %"$msgobj_td_2195" = getelementptr i8, i8* %"$msgobj_2183", i32 61 + %"$msgobj_td_2196" = bitcast i8* %"$msgobj_td_2195" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2196", align 8 + %"$msgobj_v_2198" = getelementptr i8, i8* %"$msgobj_2183", i32 69 + %"$msgobj_v_2199" = bitcast i8* %"$msgobj_v_2198" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_2197", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_2199", align 8 + %"$msgobj_fname_2201" = getelementptr i8, i8* %"$msgobj_2183", i32 85 + %"$msgobj_fname_2202" = bitcast i8* %"$msgobj_fname_2201" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2200", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2202", align 8 + %"$msgobj_td_2203" = getelementptr i8, i8* %"$msgobj_2183", i32 101 + %"$msgobj_td_2204" = bitcast i8* %"$msgobj_td_2203" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2204", align 8 + %"$msgobj_v_2205" = getelementptr i8, i8* %"$msgobj_2183", i32 109 + %"$msgobj_v_2206" = bitcast i8* %"$msgobj_v_2205" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_2206", align 8 + %"$msgobj_fname_2208" = getelementptr i8, i8* %"$msgobj_2183", i32 125 + %"$msgobj_fname_2209" = bitcast i8* %"$msgobj_fname_2208" to %String* + store %String { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$stringlit_2207", i32 0, i32 0), i32 1 }, %String* %"$msgobj_fname_2209", align 8 + %"$msgobj_td_2210" = getelementptr i8, i8* %"$msgobj_2183", i32 141 + %"$msgobj_td_2211" = bitcast i8* %"$msgobj_td_2210" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2211", align 8 + %"$s1_2212" = load %String, %String* %s1, align 8 + %"$msgobj_v_2213" = getelementptr i8, i8* %"$msgobj_2183", i32 149 + %"$msgobj_v_2214" = bitcast i8* %"$msgobj_v_2213" to %String* + store %String %"$s1_2212", %String* %"$msgobj_v_2214", align 8 + store i8* %"$msgobj_2183", i8** %msg1, align 8, !dbg !194 + %"$gasrem_2216" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2217" = icmp ugt i64 1, %"$gasrem_2216" + br i1 %"$gascmp_2217", label %"$out_of_gas_2218", label %"$have_gas_2219" + +"$out_of_gas_2218": ; preds = %"$have_gas_2181" + call void @_out_of_gas() + br label %"$have_gas_2219" + +"$have_gas_2219": ; preds = %"$out_of_gas_2218", %"$have_gas_2181" + %"$consume_2220" = sub i64 %"$gasrem_2216", 1 + store i64 %"$consume_2220", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_2221" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2222" = icmp ugt i64 1, %"$gasrem_2221" + br i1 %"$gascmp_2222", label %"$out_of_gas_2223", label %"$have_gas_2224" + +"$out_of_gas_2223": ; preds = %"$have_gas_2219" + call void @_out_of_gas() + br label %"$have_gas_2224" + +"$have_gas_2224": ; preds = %"$out_of_gas_2223", %"$have_gas_2219" + %"$consume_2225" = sub i64 %"$gasrem_2221", 1 + store i64 %"$consume_2225", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_28" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2226" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2227" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2226", 0 + %"$accounting_tests.one_msg_envptr_2228" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2226", 1 + %"$msg1_2229" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_2230" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2227"(i8* %"$accounting_tests.one_msg_envptr_2228", i8* %"$msg1_2229"), !dbg !195 + store %TName_List_Message* %"$accounting_tests.one_msg_call_2230", %TName_List_Message** %"$accounting_tests.one_msg_28", align 8, !dbg !195 + %"$$accounting_tests.one_msg_28_2231" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_28", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_28_2231", %TName_List_Message** %msgs1, align 8, !dbg !195 + %"$msgs1_2232" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_2232_2233" = bitcast %TName_List_Message* %"$msgs1_2232" to i8* + %"$_literal_cost_call_2234" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_2232_2233") + %"$gasrem_2235" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2236" = icmp ugt i64 %"$_literal_cost_call_2234", %"$gasrem_2235" + br i1 %"$gascmp_2236", label %"$out_of_gas_2237", label %"$have_gas_2238" + +"$out_of_gas_2237": ; preds = %"$have_gas_2224" + call void @_out_of_gas() + br label %"$have_gas_2238" + +"$have_gas_2238": ; preds = %"$out_of_gas_2237", %"$have_gas_2224" + %"$consume_2239" = sub i64 %"$gasrem_2235", %"$_literal_cost_call_2234" + store i64 %"$consume_2239", i64* @_gasrem, align 8 + %"$execptr_load_2240" = load i8*, i8** @_execptr, align 8 + %"$msgs1_2241" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_2240", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_2241"), !dbg !196 + ret void +} + +define void @Test_Send_3_Helper(i8* %0) !dbg !197 { +entry: + %"$_amount_2243" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2244" = bitcast i8* %"$_amount_2243" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2244", align 8 + %"$_origin_2245" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2246" = bitcast i8* %"$_origin_2245" to [20 x i8]* + %"$_sender_2247" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2248" = bitcast i8* %"$_sender_2247" to [20 x i8]* + call void @"$Test_Send_3_Helper_2155"(%Uint128 %_amount, [20 x i8]* %"$_origin_2246", [20 x i8]* %"$_sender_2248"), !dbg !198 + ret void +} + +define internal void @"$Finalize_Test_Send_3_2249"(%Uint128 %_amount, [20 x i8]* %"$_origin_2250", [20 x i8]* %"$_sender_2251") !dbg !199 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2250", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2251", align 1 + %"$gasrem_2252" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2253" = icmp ugt i64 1, %"$gasrem_2252" + br i1 %"$gascmp_2253", label %"$out_of_gas_2254", label %"$have_gas_2255" + +"$out_of_gas_2254": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2255" + +"$have_gas_2255": ; preds = %"$out_of_gas_2254", %entry + %"$consume_2256" = sub i64 %"$gasrem_2252", 1 + store i64 %"$consume_2256", i64* @_gasrem, align 8 + %x = alloca %Uint128, align 8 + %"$gasrem_2257" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2258" = icmp ugt i64 1, %"$gasrem_2257" + br i1 %"$gascmp_2258", label %"$out_of_gas_2259", label %"$have_gas_2260" + +"$out_of_gas_2259": ; preds = %"$have_gas_2255" + call void @_out_of_gas() + br label %"$have_gas_2260" + +"$have_gas_2260": ; preds = %"$out_of_gas_2259", %"$have_gas_2255" + %"$consume_2261" = sub i64 %"$gasrem_2257", 1 + store i64 %"$consume_2261", i64* @_gasrem, align 8 + store %Uint128 { i128 3 }, %Uint128* %x, align 8, !dbg !200 + %"$gasrem_2262" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2263" = icmp ugt i64 1, %"$gasrem_2262" + br i1 %"$gascmp_2263", label %"$out_of_gas_2264", label %"$have_gas_2265" + +"$out_of_gas_2264": ; preds = %"$have_gas_2260" + call void @_out_of_gas() + br label %"$have_gas_2265" + +"$have_gas_2265": ; preds = %"$out_of_gas_2264", %"$have_gas_2260" + %"$consume_2266" = sub i64 %"$gasrem_2262", 1 + store i64 %"$consume_2266", i64* @_gasrem, align 8 + %"$Finalize_Test_Send_Helper_2_Msgs__origin_2267" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__origin_2267", align 1 + %"$Finalize_Test_Send_Helper_2_Msgs__sender_2268" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__sender_2268", align 1 + %"$x_2269" = load %Uint128, %Uint128* %x, align 8 + call void @"$Finalize_Test_Send_Helper_2_Msgs_1450"(%Uint128 %_amount, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__origin_2267", [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__sender_2268", %Uint128 %"$x_2269"), !dbg !201 + ret void +} + +define void @Finalize_Test_Send_3(i8* %0) !dbg !202 { +entry: + %"$_amount_2271" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2272" = bitcast i8* %"$_amount_2271" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2272", align 8 + %"$_origin_2273" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2274" = bitcast i8* %"$_origin_2273" to [20 x i8]* + %"$_sender_2275" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2276" = bitcast i8* %"$_sender_2275" to [20 x i8]* + call void @"$Finalize_Test_Send_3_2249"(%Uint128 %_amount, [20 x i8]* %"$_origin_2274", [20 x i8]* %"$_sender_2276"), !dbg !203 + ret void +} + +define internal void @"$CheckBalance_2277"(%Uint128 %_amount, [20 x i8]* %"$_origin_2278", [20 x i8]* %"$_sender_2279", %Uint128 %expected_balance) !dbg !204 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2278", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2279", align 1 + %cur_balance = alloca %Uint128, align 8 + %"$execptr_load_2281" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_call_2282" = call i8* @_fetch_field(i8* %"$execptr_load_2281", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_2280", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !205 + %"$cur_balance_2283" = bitcast i8* %"$cur_balance_call_2282" to %Uint128* + %"$cur_balance_2284" = load %Uint128, %Uint128* %"$cur_balance_2283", align 8 + store %Uint128 %"$cur_balance_2284", %Uint128* %cur_balance, align 8 + %"$_literal_cost_cur_balance_2285" = alloca %Uint128, align 8 + %"$cur_balance_2286" = load %Uint128, %Uint128* %cur_balance, align 8 + store %Uint128 %"$cur_balance_2286", %Uint128* %"$_literal_cost_cur_balance_2285", align 8 + %"$$_literal_cost_cur_balance_2285_2287" = bitcast %Uint128* %"$_literal_cost_cur_balance_2285" to i8* + %"$_literal_cost_call_2288" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_cur_balance_2285_2287") + %"$gasadd_2289" = add i64 %"$_literal_cost_call_2288", 0 + %"$gasrem_2290" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2291" = icmp ugt i64 %"$gasadd_2289", %"$gasrem_2290" + br i1 %"$gascmp_2291", label %"$out_of_gas_2292", label %"$have_gas_2293" + +"$out_of_gas_2292": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2293" + +"$have_gas_2293": ; preds = %"$out_of_gas_2292", %entry + %"$consume_2294" = sub i64 %"$gasrem_2290", %"$gasadd_2289" + store i64 %"$consume_2294", i64* @_gasrem, align 8 + %"$gasrem_2295" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2296" = icmp ugt i64 1, %"$gasrem_2295" + br i1 %"$gascmp_2296", label %"$out_of_gas_2297", label %"$have_gas_2298" + +"$out_of_gas_2297": ; preds = %"$have_gas_2293" + call void @_out_of_gas() + br label %"$have_gas_2298" + +"$have_gas_2298": ; preds = %"$out_of_gas_2297", %"$have_gas_2293" + %"$consume_2299" = sub i64 %"$gasrem_2295", 1 + store i64 %"$consume_2299", i64* @_gasrem, align 8 + %is_expected = alloca %TName_Bool*, align 8 + %"$execptr_load_2300" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_2301" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$eq_call_2302" = call %TName_Bool* @_eq_Uint128(i8* %"$execptr_load_2300", %Uint128 %expected_balance, %Uint128 %"$cur_balance_2301"), !dbg !206 + store %TName_Bool* %"$eq_call_2302", %TName_Bool** %is_expected, align 8, !dbg !206 + %"$gasrem_2304" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2305" = icmp ugt i64 2, %"$gasrem_2304" + br i1 %"$gascmp_2305", label %"$out_of_gas_2306", label %"$have_gas_2307" + +"$out_of_gas_2306": ; preds = %"$have_gas_2298" + call void @_out_of_gas() + br label %"$have_gas_2307" + +"$have_gas_2307": ; preds = %"$out_of_gas_2306", %"$have_gas_2298" + %"$consume_2308" = sub i64 %"$gasrem_2304", 2 + store i64 %"$consume_2308", i64* @_gasrem, align 8 + %"$is_expected_2310" = load %TName_Bool*, %TName_Bool** %is_expected, align 8 + %"$is_expected_tag_2311" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_expected_2310", i32 0, i32 0 + %"$is_expected_tag_2312" = load i8, i8* %"$is_expected_tag_2311", align 1 + switch i8 %"$is_expected_tag_2312", label %"$empty_default_2313" [ + i8 0, label %"$True_2314" + i8 1, label %"$False_2316" + ], !dbg !207 + +"$True_2314": ; preds = %"$have_gas_2307" + %"$is_expected_2315" = bitcast %TName_Bool* %"$is_expected_2310" to %CName_True* + br label %"$matchsucc_2309" + +"$False_2316": ; preds = %"$have_gas_2307" + %"$is_expected_2317" = bitcast %TName_Bool* %"$is_expected_2310" to %CName_False* + %"$gasrem_2318" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2319" = icmp ugt i64 1, %"$gasrem_2318" + br i1 %"$gascmp_2319", label %"$out_of_gas_2320", label %"$have_gas_2321" + +"$out_of_gas_2320": ; preds = %"$False_2316" + call void @_out_of_gas() + br label %"$have_gas_2321" + +"$have_gas_2321": ; preds = %"$out_of_gas_2320", %"$False_2316" + %"$consume_2322" = sub i64 %"$gasrem_2318", 1 + store i64 %"$consume_2322", i64* @_gasrem, align 8 + %e = alloca i8*, align 8 + %"$gasrem_2323" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2324" = icmp ugt i64 1, %"$gasrem_2323" + br i1 %"$gascmp_2324", label %"$out_of_gas_2325", label %"$have_gas_2326" + +"$out_of_gas_2325": ; preds = %"$have_gas_2321" + call void @_out_of_gas() + br label %"$have_gas_2326" + +"$have_gas_2326": ; preds = %"$out_of_gas_2325", %"$have_gas_2321" + %"$consume_2327" = sub i64 %"$gasrem_2323", 1 + store i64 %"$consume_2327", i64* @_gasrem, align 8 + %"$msgobj_2328_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2328_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2328_salloc_load", i64 121) + %"$msgobj_2328_salloc" = bitcast i8* %"$msgobj_2328_salloc_salloc" to [121 x i8]* + %"$msgobj_2328" = bitcast [121 x i8]* %"$msgobj_2328_salloc" to i8* + store i8 3, i8* %"$msgobj_2328", align 1 + %"$msgobj_fname_2330" = getelementptr i8, i8* %"$msgobj_2328", i32 1 + %"$msgobj_fname_2331" = bitcast i8* %"$msgobj_fname_2330" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2329", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2331", align 8 + %"$msgobj_td_2332" = getelementptr i8, i8* %"$msgobj_2328", i32 17 + %"$msgobj_td_2333" = bitcast i8* %"$msgobj_td_2332" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2333", align 8 + %"$msgobj_v_2335" = getelementptr i8, i8* %"$msgobj_2328", i32 25 + %"$msgobj_v_2336" = bitcast i8* %"$msgobj_v_2335" to %String* + store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_2334", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_2336", align 8 + %"$msgobj_fname_2338" = getelementptr i8, i8* %"$msgobj_2328", i32 41 + %"$msgobj_fname_2339" = bitcast i8* %"$msgobj_fname_2338" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_2337", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_2339", align 8 + %"$msgobj_td_2340" = getelementptr i8, i8* %"$msgobj_2328", i32 57 + %"$msgobj_td_2341" = bitcast i8* %"$msgobj_td_2340" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2341", align 8 + %"$msgobj_v_2342" = getelementptr i8, i8* %"$msgobj_2328", i32 65 + %"$msgobj_v_2343" = bitcast i8* %"$msgobj_v_2342" to %Uint128* + store %Uint128 %expected_balance, %Uint128* %"$msgobj_v_2343", align 8 + %"$msgobj_fname_2345" = getelementptr i8, i8* %"$msgobj_2328", i32 81 + %"$msgobj_fname_2346" = bitcast i8* %"$msgobj_fname_2345" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_2344", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_2346", align 8 + %"$msgobj_td_2347" = getelementptr i8, i8* %"$msgobj_2328", i32 97 + %"$msgobj_td_2348" = bitcast i8* %"$msgobj_td_2347" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2348", align 8 + %"$cur_balance_2349" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$msgobj_v_2350" = getelementptr i8, i8* %"$msgobj_2328", i32 105 + %"$msgobj_v_2351" = bitcast i8* %"$msgobj_v_2350" to %Uint128* + store %Uint128 %"$cur_balance_2349", %Uint128* %"$msgobj_v_2351", align 8 + store i8* %"$msgobj_2328", i8** %e, align 8, !dbg !208 + %"$e_2353" = load i8*, i8** %e, align 8 + %"$_literal_cost_call_2355" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_2353") + %"$gasrem_2356" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2357" = icmp ugt i64 %"$_literal_cost_call_2355", %"$gasrem_2356" + br i1 %"$gascmp_2357", label %"$out_of_gas_2358", label %"$have_gas_2359" + +"$out_of_gas_2358": ; preds = %"$have_gas_2326" + call void @_out_of_gas() + br label %"$have_gas_2359" + +"$have_gas_2359": ; preds = %"$out_of_gas_2358", %"$have_gas_2326" + %"$consume_2360" = sub i64 %"$gasrem_2356", %"$_literal_cost_call_2355" + store i64 %"$consume_2360", i64* @_gasrem, align 8 + %"$execptr_load_2361" = load i8*, i8** @_execptr, align 8 + %"$e_2362" = load i8*, i8** %e, align 8 + call void @_throw(i8* %"$execptr_load_2361", %_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_2362"), !dbg !211 + br label %"$matchsucc_2309" + +"$empty_default_2313": ; preds = %"$have_gas_2307" + br label %"$matchsucc_2309" + +"$matchsucc_2309": ; preds = %"$have_gas_2359", %"$True_2314", %"$empty_default_2313" + ret void +} + +declare %TName_Bool* @_eq_Uint128(i8*, %Uint128, %Uint128) + +define internal void @"$CheckSenderBalance_2363"(%Uint128 %_amount, [20 x i8]* %"$_origin_2364", [20 x i8]* %"$_sender_2365", %Uint128 %expected_balance) !dbg !212 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2364", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2365", align 1 + %"$gasrem_2366" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2367" = icmp ugt i64 1, %"$gasrem_2366" + br i1 %"$gascmp_2367", label %"$out_of_gas_2368", label %"$have_gas_2369" + +"$out_of_gas_2368": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2369" + +"$have_gas_2369": ; preds = %"$out_of_gas_2368", %entry + %"$consume_2370" = sub i64 %"$gasrem_2366", 1 + store i64 %"$consume_2370", i64* @_gasrem, align 8 + %"$CheckBalance__origin_2371" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_2371", align 1 + %"$CheckBalance__sender_2372" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_2372", align 1 + call void @"$CheckBalance_2277"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_2371", [20 x i8]* %"$CheckBalance__sender_2372", %Uint128 %expected_balance), !dbg !213 + ret void +} + +define void @CheckSenderBalance(i8* %0) !dbg !214 { +entry: + %"$_amount_2374" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2375" = bitcast i8* %"$_amount_2374" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2375", align 8 + %"$_origin_2376" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2377" = bitcast i8* %"$_origin_2376" to [20 x i8]* + %"$_sender_2378" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2379" = bitcast i8* %"$_sender_2378" to [20 x i8]* + %"$expected_balance_2380" = getelementptr i8, i8* %0, i32 56 + %"$expected_balance_2381" = bitcast i8* %"$expected_balance_2380" to %Uint128* + %expected_balance = load %Uint128, %Uint128* %"$expected_balance_2381", align 8 + call void @"$CheckSenderBalance_2363"(%Uint128 %_amount, [20 x i8]* %"$_origin_2377", [20 x i8]* %"$_sender_2379", %Uint128 %expected_balance), !dbg !215 + ret void +} + +define internal void @"$CheckSupportBalance_2382"(%Uint128 %_amount, [20 x i8]* %"$_origin_2383", [20 x i8]* %"$_sender_2384", %Uint128 %expected_balance) !dbg !216 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2383", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2384", align 1 + %cur_balance = alloca %Uint128, align 8 + %"$execptr_load_2386" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_support_contract_2387" = alloca [20 x i8], align 1 + %"$support_contract_2388" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + store [20 x i8] %"$support_contract_2388", [20 x i8]* %"$cur_balance_support_contract_2387", align 1 + %"$cur_balance_call_2389" = call i8* @_fetch_remote_field(i8* %"$execptr_load_2386", [20 x i8]* %"$cur_balance_support_contract_2387", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_2385", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !217 + %"$cur_balance_2390" = bitcast i8* %"$cur_balance_call_2389" to %Uint128* + %"$cur_balance_2391" = load %Uint128, %Uint128* %"$cur_balance_2390", align 8 + store %Uint128 %"$cur_balance_2391", %Uint128* %cur_balance, align 8 + %"$_literal_cost_cur_balance_2392" = alloca %Uint128, align 8 + %"$cur_balance_2393" = load %Uint128, %Uint128* %cur_balance, align 8 + store %Uint128 %"$cur_balance_2393", %Uint128* %"$_literal_cost_cur_balance_2392", align 8 + %"$$_literal_cost_cur_balance_2392_2394" = bitcast %Uint128* %"$_literal_cost_cur_balance_2392" to i8* + %"$_literal_cost_call_2395" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_cur_balance_2392_2394") + %"$gasadd_2396" = add i64 %"$_literal_cost_call_2395", 0 + %"$gasrem_2397" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2398" = icmp ugt i64 %"$gasadd_2396", %"$gasrem_2397" + br i1 %"$gascmp_2398", label %"$out_of_gas_2399", label %"$have_gas_2400" + +"$out_of_gas_2399": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2400" + +"$have_gas_2400": ; preds = %"$out_of_gas_2399", %entry + %"$consume_2401" = sub i64 %"$gasrem_2397", %"$gasadd_2396" + store i64 %"$consume_2401", i64* @_gasrem, align 8 + %"$gasrem_2402" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2403" = icmp ugt i64 1, %"$gasrem_2402" + br i1 %"$gascmp_2403", label %"$out_of_gas_2404", label %"$have_gas_2405" + +"$out_of_gas_2404": ; preds = %"$have_gas_2400" + call void @_out_of_gas() + br label %"$have_gas_2405" + +"$have_gas_2405": ; preds = %"$out_of_gas_2404", %"$have_gas_2400" + %"$consume_2406" = sub i64 %"$gasrem_2402", 1 + store i64 %"$consume_2406", i64* @_gasrem, align 8 + %is_expected = alloca %TName_Bool*, align 8 + %"$execptr_load_2407" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_2408" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$eq_call_2409" = call %TName_Bool* @_eq_Uint128(i8* %"$execptr_load_2407", %Uint128 %expected_balance, %Uint128 %"$cur_balance_2408"), !dbg !218 + store %TName_Bool* %"$eq_call_2409", %TName_Bool** %is_expected, align 8, !dbg !218 + %"$gasrem_2411" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2412" = icmp ugt i64 2, %"$gasrem_2411" + br i1 %"$gascmp_2412", label %"$out_of_gas_2413", label %"$have_gas_2414" + +"$out_of_gas_2413": ; preds = %"$have_gas_2405" + call void @_out_of_gas() + br label %"$have_gas_2414" + +"$have_gas_2414": ; preds = %"$out_of_gas_2413", %"$have_gas_2405" + %"$consume_2415" = sub i64 %"$gasrem_2411", 2 + store i64 %"$consume_2415", i64* @_gasrem, align 8 + %"$is_expected_2417" = load %TName_Bool*, %TName_Bool** %is_expected, align 8 + %"$is_expected_tag_2418" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_expected_2417", i32 0, i32 0 + %"$is_expected_tag_2419" = load i8, i8* %"$is_expected_tag_2418", align 1 + switch i8 %"$is_expected_tag_2419", label %"$empty_default_2420" [ + i8 0, label %"$True_2421" + i8 1, label %"$False_2423" + ], !dbg !219 + +"$True_2421": ; preds = %"$have_gas_2414" + %"$is_expected_2422" = bitcast %TName_Bool* %"$is_expected_2417" to %CName_True* + br label %"$matchsucc_2416" + +"$False_2423": ; preds = %"$have_gas_2414" + %"$is_expected_2424" = bitcast %TName_Bool* %"$is_expected_2417" to %CName_False* + %"$gasrem_2425" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2426" = icmp ugt i64 1, %"$gasrem_2425" + br i1 %"$gascmp_2426", label %"$out_of_gas_2427", label %"$have_gas_2428" + +"$out_of_gas_2427": ; preds = %"$False_2423" + call void @_out_of_gas() + br label %"$have_gas_2428" + +"$have_gas_2428": ; preds = %"$out_of_gas_2427", %"$False_2423" + %"$consume_2429" = sub i64 %"$gasrem_2425", 1 + store i64 %"$consume_2429", i64* @_gasrem, align 8 + %e = alloca i8*, align 8 + %"$gasrem_2430" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2431" = icmp ugt i64 1, %"$gasrem_2430" + br i1 %"$gascmp_2431", label %"$out_of_gas_2432", label %"$have_gas_2433" + +"$out_of_gas_2432": ; preds = %"$have_gas_2428" + call void @_out_of_gas() + br label %"$have_gas_2433" + +"$have_gas_2433": ; preds = %"$out_of_gas_2432", %"$have_gas_2428" + %"$consume_2434" = sub i64 %"$gasrem_2430", 1 + store i64 %"$consume_2434", i64* @_gasrem, align 8 + %"$msgobj_2435_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2435_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2435_salloc_load", i64 121) + %"$msgobj_2435_salloc" = bitcast i8* %"$msgobj_2435_salloc_salloc" to [121 x i8]* + %"$msgobj_2435" = bitcast [121 x i8]* %"$msgobj_2435_salloc" to i8* + store i8 3, i8* %"$msgobj_2435", align 1 + %"$msgobj_fname_2437" = getelementptr i8, i8* %"$msgobj_2435", i32 1 + %"$msgobj_fname_2438" = bitcast i8* %"$msgobj_fname_2437" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2436", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2438", align 8 + %"$msgobj_td_2439" = getelementptr i8, i8* %"$msgobj_2435", i32 17 + %"$msgobj_td_2440" = bitcast i8* %"$msgobj_td_2439" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2440", align 8 + %"$msgobj_v_2442" = getelementptr i8, i8* %"$msgobj_2435", i32 25 + %"$msgobj_v_2443" = bitcast i8* %"$msgobj_v_2442" to %String* + store %String { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"$stringlit_2441", i32 0, i32 0), i32 54 }, %String* %"$msgobj_v_2443", align 8 + %"$msgobj_fname_2445" = getelementptr i8, i8* %"$msgobj_2435", i32 41 + %"$msgobj_fname_2446" = bitcast i8* %"$msgobj_fname_2445" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_2444", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_2446", align 8 + %"$msgobj_td_2447" = getelementptr i8, i8* %"$msgobj_2435", i32 57 + %"$msgobj_td_2448" = bitcast i8* %"$msgobj_td_2447" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2448", align 8 + %"$msgobj_v_2449" = getelementptr i8, i8* %"$msgobj_2435", i32 65 + %"$msgobj_v_2450" = bitcast i8* %"$msgobj_v_2449" to %Uint128* + store %Uint128 %expected_balance, %Uint128* %"$msgobj_v_2450", align 8 + %"$msgobj_fname_2452" = getelementptr i8, i8* %"$msgobj_2435", i32 81 + %"$msgobj_fname_2453" = bitcast i8* %"$msgobj_fname_2452" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_2451", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_2453", align 8 + %"$msgobj_td_2454" = getelementptr i8, i8* %"$msgobj_2435", i32 97 + %"$msgobj_td_2455" = bitcast i8* %"$msgobj_td_2454" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2455", align 8 + %"$cur_balance_2456" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$msgobj_v_2457" = getelementptr i8, i8* %"$msgobj_2435", i32 105 + %"$msgobj_v_2458" = bitcast i8* %"$msgobj_v_2457" to %Uint128* + store %Uint128 %"$cur_balance_2456", %Uint128* %"$msgobj_v_2458", align 8 + store i8* %"$msgobj_2435", i8** %e, align 8, !dbg !220 + %"$e_2460" = load i8*, i8** %e, align 8 + %"$_literal_cost_call_2462" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_2460") + %"$gasrem_2463" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2464" = icmp ugt i64 %"$_literal_cost_call_2462", %"$gasrem_2463" + br i1 %"$gascmp_2464", label %"$out_of_gas_2465", label %"$have_gas_2466" + +"$out_of_gas_2465": ; preds = %"$have_gas_2433" + call void @_out_of_gas() + br label %"$have_gas_2466" + +"$have_gas_2466": ; preds = %"$out_of_gas_2465", %"$have_gas_2433" + %"$consume_2467" = sub i64 %"$gasrem_2463", %"$_literal_cost_call_2462" + store i64 %"$consume_2467", i64* @_gasrem, align 8 + %"$execptr_load_2468" = load i8*, i8** @_execptr, align 8 + %"$e_2469" = load i8*, i8** %e, align 8 + call void @_throw(i8* %"$execptr_load_2468", %_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_2469"), !dbg !223 + br label %"$matchsucc_2416" + +"$empty_default_2420": ; preds = %"$have_gas_2414" + br label %"$matchsucc_2416" + +"$matchsucc_2416": ; preds = %"$have_gas_2466", %"$True_2421", %"$empty_default_2420" + ret void +} + +define internal void @"$CheckRecipientBalance_2470"(%Uint128 %_amount, [20 x i8]* %"$_origin_2471", [20 x i8]* %"$_sender_2472", %Uint128 %expected_balance) !dbg !224 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2471", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2472", align 1 + %"$gasrem_2473" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2474" = icmp ugt i64 1, %"$gasrem_2473" + br i1 %"$gascmp_2474", label %"$out_of_gas_2475", label %"$have_gas_2476" + +"$out_of_gas_2475": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2476" + +"$have_gas_2476": ; preds = %"$out_of_gas_2475", %entry + %"$consume_2477" = sub i64 %"$gasrem_2473", 1 + store i64 %"$consume_2477", i64* @_gasrem, align 8 + %"$CheckSupportBalance__origin_2478" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckSupportBalance__origin_2478", align 1 + %"$CheckSupportBalance__sender_2479" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckSupportBalance__sender_2479", align 1 + call void @"$CheckSupportBalance_2382"(%Uint128 %_amount, [20 x i8]* %"$CheckSupportBalance__origin_2478", [20 x i8]* %"$CheckSupportBalance__sender_2479", %Uint128 %expected_balance), !dbg !225 + ret void +} + +define void @CheckRecipientBalance(i8* %0) !dbg !226 { +entry: + %"$_amount_2481" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2482" = bitcast i8* %"$_amount_2481" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2482", align 8 + %"$_origin_2483" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2484" = bitcast i8* %"$_origin_2483" to [20 x i8]* + %"$_sender_2485" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2486" = bitcast i8* %"$_sender_2485" to [20 x i8]* + %"$expected_balance_2487" = getelementptr i8, i8* %0, i32 56 + %"$expected_balance_2488" = bitcast i8* %"$expected_balance_2487" to %Uint128* + %expected_balance = load %Uint128, %Uint128* %"$expected_balance_2488", align 8 + call void @"$CheckRecipientBalance_2470"(%Uint128 %_amount, [20 x i8]* %"$_origin_2484", [20 x i8]* %"$_sender_2486", %Uint128 %expected_balance), !dbg !227 + ret void +} + +define internal void @"$Test_Send_4_2489"(%Uint128 %_amount, [20 x i8]* %"$_origin_2490", [20 x i8]* %"$_sender_2491") !dbg !228 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2490", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2491", align 1 + %"$gasrem_2492" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2493" = icmp ugt i64 1, %"$gasrem_2492" + br i1 %"$gascmp_2493", label %"$out_of_gas_2494", label %"$have_gas_2495" + +"$out_of_gas_2494": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2495" + +"$have_gas_2495": ; preds = %"$out_of_gas_2494", %entry + %"$consume_2496" = sub i64 %"$gasrem_2492", 1 + store i64 %"$consume_2496", i64* @_gasrem, align 8 + %"$AssertReset__origin_2497" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_2497", align 1 + %"$AssertReset__sender_2498" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_2498", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_2497", [20 x i8]* %"$AssertReset__sender_2498"), !dbg !229 + %amount = alloca %Uint128, align 8 + %"$execptr_load_2500" = load i8*, i8** @_execptr, align 8 + %"$amount_call_2501" = call i8* @_fetch_field(i8* %"$execptr_load_2500", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_2499", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !230 + %"$amount_2502" = bitcast i8* %"$amount_call_2501" to %Uint128* + %"$amount_2503" = load %Uint128, %Uint128* %"$amount_2502", align 8 + store %Uint128 %"$amount_2503", %Uint128* %amount, align 8 + %"$_literal_cost_amount_2504" = alloca %Uint128, align 8 + %"$amount_2505" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_2505", %Uint128* %"$_literal_cost_amount_2504", align 8 + %"$$_literal_cost_amount_2504_2506" = bitcast %Uint128* %"$_literal_cost_amount_2504" to i8* + %"$_literal_cost_call_2507" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_2504_2506") + %"$gasadd_2508" = add i64 %"$_literal_cost_call_2507", 0 + %"$gasrem_2509" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2510" = icmp ugt i64 %"$gasadd_2508", %"$gasrem_2509" + br i1 %"$gascmp_2510", label %"$out_of_gas_2511", label %"$have_gas_2512" + +"$out_of_gas_2511": ; preds = %"$have_gas_2495" + call void @_out_of_gas() + br label %"$have_gas_2512" + +"$have_gas_2512": ; preds = %"$out_of_gas_2511", %"$have_gas_2495" + %"$consume_2513" = sub i64 %"$gasrem_2509", %"$gasadd_2508" + store i64 %"$consume_2513", i64* @_gasrem, align 8 + %init_bal = alloca %Uint128, align 8 + %"$execptr_load_2515" = load i8*, i8** @_execptr, align 8 + %"$init_bal_call_2516" = call i8* @_fetch_field(i8* %"$execptr_load_2515", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_2514", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !231 + %"$init_bal_2517" = bitcast i8* %"$init_bal_call_2516" to %Uint128* + %"$init_bal_2518" = load %Uint128, %Uint128* %"$init_bal_2517", align 8 + store %Uint128 %"$init_bal_2518", %Uint128* %init_bal, align 8 + %"$_literal_cost_init_bal_2519" = alloca %Uint128, align 8 + %"$init_bal_2520" = load %Uint128, %Uint128* %init_bal, align 8 + store %Uint128 %"$init_bal_2520", %Uint128* %"$_literal_cost_init_bal_2519", align 8 + %"$$_literal_cost_init_bal_2519_2521" = bitcast %Uint128* %"$_literal_cost_init_bal_2519" to i8* + %"$_literal_cost_call_2522" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_init_bal_2519_2521") + %"$gasadd_2523" = add i64 %"$_literal_cost_call_2522", 0 + %"$gasrem_2524" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2525" = icmp ugt i64 %"$gasadd_2523", %"$gasrem_2524" + br i1 %"$gascmp_2525", label %"$out_of_gas_2526", label %"$have_gas_2527" + +"$out_of_gas_2526": ; preds = %"$have_gas_2512" + call void @_out_of_gas() + br label %"$have_gas_2527" + +"$have_gas_2527": ; preds = %"$out_of_gas_2526", %"$have_gas_2512" + %"$consume_2528" = sub i64 %"$gasrem_2524", %"$gasadd_2523" + store i64 %"$consume_2528", i64* @_gasrem, align 8 + %"$gasrem_2529" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2530" = icmp ugt i64 1, %"$gasrem_2529" + br i1 %"$gascmp_2530", label %"$out_of_gas_2531", label %"$have_gas_2532" + +"$out_of_gas_2531": ; preds = %"$have_gas_2527" + call void @_out_of_gas() + br label %"$have_gas_2532" + +"$have_gas_2532": ; preds = %"$out_of_gas_2531", %"$have_gas_2527" + %"$consume_2533" = sub i64 %"$gasrem_2529", 1 + store i64 %"$consume_2533", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_2534" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2535" = icmp ugt i64 1, %"$gasrem_2534" + br i1 %"$gascmp_2535", label %"$out_of_gas_2536", label %"$have_gas_2537" + +"$out_of_gas_2536": ; preds = %"$have_gas_2532" + call void @_out_of_gas() + br label %"$have_gas_2537" + +"$have_gas_2537": ; preds = %"$out_of_gas_2536", %"$have_gas_2532" + %"$consume_2538" = sub i64 %"$gasrem_2534", 1 + store i64 %"$consume_2538", i64* @_gasrem, align 8 + %"$msgobj_2539_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2539_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2539_salloc_load", i64 125) + %"$msgobj_2539_salloc" = bitcast i8* %"$msgobj_2539_salloc_salloc" to [125 x i8]* + %"$msgobj_2539" = bitcast [125 x i8]* %"$msgobj_2539_salloc" to i8* + store i8 3, i8* %"$msgobj_2539", align 1 + %"$msgobj_fname_2541" = getelementptr i8, i8* %"$msgobj_2539", i32 1 + %"$msgobj_fname_2542" = bitcast i8* %"$msgobj_fname_2541" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2540", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2542", align 8 + %"$msgobj_td_2543" = getelementptr i8, i8* %"$msgobj_2539", i32 17 + %"$msgobj_td_2544" = bitcast i8* %"$msgobj_td_2543" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2544", align 8 + %"$support_contract_2545" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2546" = getelementptr i8, i8* %"$msgobj_2539", i32 25 + %"$msgobj_v_2547" = bitcast i8* %"$msgobj_v_2546" to [20 x i8]* + store [20 x i8] %"$support_contract_2545", [20 x i8]* %"$msgobj_v_2547", align 1 + %"$msgobj_fname_2549" = getelementptr i8, i8* %"$msgobj_2539", i32 45 + %"$msgobj_fname_2550" = bitcast i8* %"$msgobj_fname_2549" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2548", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2550", align 8 + %"$msgobj_td_2551" = getelementptr i8, i8* %"$msgobj_2539", i32 61 + %"$msgobj_td_2552" = bitcast i8* %"$msgobj_td_2551" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2552", align 8 + %"$msgobj_v_2554" = getelementptr i8, i8* %"$msgobj_2539", i32 69 + %"$msgobj_v_2555" = bitcast i8* %"$msgobj_v_2554" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_2553", i32 0, i32 0), i32 6 }, %String* %"$msgobj_v_2555", align 8 + %"$msgobj_fname_2557" = getelementptr i8, i8* %"$msgobj_2539", i32 85 + %"$msgobj_fname_2558" = bitcast i8* %"$msgobj_fname_2557" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2556", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2558", align 8 + %"$msgobj_td_2559" = getelementptr i8, i8* %"$msgobj_2539", i32 101 + %"$msgobj_td_2560" = bitcast i8* %"$msgobj_td_2559" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2560", align 8 + %"$amount_2561" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_2562" = getelementptr i8, i8* %"$msgobj_2539", i32 109 + %"$msgobj_v_2563" = bitcast i8* %"$msgobj_v_2562" to %Uint128* + store %Uint128 %"$amount_2561", %Uint128* %"$msgobj_v_2563", align 8 + store i8* %"$msgobj_2539", i8** %msg1, align 8, !dbg !232 + %"$gasrem_2565" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2566" = icmp ugt i64 1, %"$gasrem_2565" + br i1 %"$gascmp_2566", label %"$out_of_gas_2567", label %"$have_gas_2568" + +"$out_of_gas_2567": ; preds = %"$have_gas_2537" + call void @_out_of_gas() + br label %"$have_gas_2568" + +"$have_gas_2568": ; preds = %"$out_of_gas_2567", %"$have_gas_2537" + %"$consume_2569" = sub i64 %"$gasrem_2565", 1 + store i64 %"$consume_2569", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_2570" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2571" = icmp ugt i64 1, %"$gasrem_2570" + br i1 %"$gascmp_2571", label %"$out_of_gas_2572", label %"$have_gas_2573" + +"$out_of_gas_2572": ; preds = %"$have_gas_2568" + call void @_out_of_gas() + br label %"$have_gas_2573" + +"$have_gas_2573": ; preds = %"$out_of_gas_2572", %"$have_gas_2568" + %"$consume_2574" = sub i64 %"$gasrem_2570", 1 + store i64 %"$consume_2574", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_30" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2575" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2576" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2575", 0 + %"$accounting_tests.one_msg_envptr_2577" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2575", 1 + %"$msg1_2578" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_2579" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2576"(i8* %"$accounting_tests.one_msg_envptr_2577", i8* %"$msg1_2578"), !dbg !233 + store %TName_List_Message* %"$accounting_tests.one_msg_call_2579", %TName_List_Message** %"$accounting_tests.one_msg_30", align 8, !dbg !233 + %"$$accounting_tests.one_msg_30_2580" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_30", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_30_2580", %TName_List_Message** %msgs1, align 8, !dbg !233 + %"$msgs1_2581" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_2581_2582" = bitcast %TName_List_Message* %"$msgs1_2581" to i8* + %"$_literal_cost_call_2583" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_2581_2582") + %"$gasrem_2584" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2585" = icmp ugt i64 %"$_literal_cost_call_2583", %"$gasrem_2584" + br i1 %"$gascmp_2585", label %"$out_of_gas_2586", label %"$have_gas_2587" + +"$out_of_gas_2586": ; preds = %"$have_gas_2573" + call void @_out_of_gas() + br label %"$have_gas_2587" + +"$have_gas_2587": ; preds = %"$out_of_gas_2586", %"$have_gas_2573" + %"$consume_2588" = sub i64 %"$gasrem_2584", %"$_literal_cost_call_2583" + store i64 %"$consume_2588", i64* @_gasrem, align 8 + %"$execptr_load_2589" = load i8*, i8** @_execptr, align 8 + %"$msgs1_2590" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_2589", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_2590"), !dbg !234 + %"$gasrem_2591" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2592" = icmp ugt i64 1, %"$gasrem_2591" + br i1 %"$gascmp_2592", label %"$out_of_gas_2593", label %"$have_gas_2594" + +"$out_of_gas_2593": ; preds = %"$have_gas_2587" + call void @_out_of_gas() + br label %"$have_gas_2594" + +"$have_gas_2594": ; preds = %"$out_of_gas_2593", %"$have_gas_2587" + %"$consume_2595" = sub i64 %"$gasrem_2591", 1 + store i64 %"$consume_2595", i64* @_gasrem, align 8 + %expected_intermediate_balance = alloca %Uint128, align 8 + %"$init_bal_2596" = load %Uint128, %Uint128* %init_bal, align 8 + %"$amount_2597" = load %Uint128, %Uint128* %amount, align 8 + %"$sub_call_2598" = call %Uint128 @_sub_Uint128(%Uint128 %"$init_bal_2596", %Uint128 %"$amount_2597"), !dbg !235 + store %Uint128 %"$sub_call_2598", %Uint128* %expected_intermediate_balance, align 8, !dbg !235 + %"$gasrem_2599" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2600" = icmp ugt i64 1, %"$gasrem_2599" + br i1 %"$gascmp_2600", label %"$out_of_gas_2601", label %"$have_gas_2602" + +"$out_of_gas_2601": ; preds = %"$have_gas_2594" + call void @_out_of_gas() + br label %"$have_gas_2602" + +"$have_gas_2602": ; preds = %"$out_of_gas_2601", %"$have_gas_2594" + %"$consume_2603" = sub i64 %"$gasrem_2599", 1 + store i64 %"$consume_2603", i64* @_gasrem, align 8 + %"$CheckBalance__origin_2604" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_2604", align 1 + %"$CheckBalance__sender_2605" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_2605", align 1 + %"$expected_intermediate_balance_2606" = load %Uint128, %Uint128* %expected_intermediate_balance, align 8 + call void @"$CheckBalance_2277"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_2604", [20 x i8]* %"$CheckBalance__sender_2605", %Uint128 %"$expected_intermediate_balance_2606"), !dbg !236 + %"$gasrem_2607" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2608" = icmp ugt i64 1, %"$gasrem_2607" + br i1 %"$gascmp_2608", label %"$out_of_gas_2609", label %"$have_gas_2610" + +"$out_of_gas_2609": ; preds = %"$have_gas_2602" + call void @_out_of_gas() + br label %"$have_gas_2610" + +"$have_gas_2610": ; preds = %"$out_of_gas_2609", %"$have_gas_2602" + %"$consume_2611" = sub i64 %"$gasrem_2607", 1 + store i64 %"$consume_2611", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_2612" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2613" = icmp ugt i64 1, %"$gasrem_2612" + br i1 %"$gascmp_2613", label %"$out_of_gas_2614", label %"$have_gas_2615" + +"$out_of_gas_2614": ; preds = %"$have_gas_2610" + call void @_out_of_gas() + br label %"$have_gas_2615" + +"$have_gas_2615": ; preds = %"$out_of_gas_2614", %"$have_gas_2610" + %"$consume_2616" = sub i64 %"$gasrem_2612", 1 + store i64 %"$consume_2616", i64* @_gasrem, align 8 + %"$msgobj_2617_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2617_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2617_salloc_load", i64 125) + %"$msgobj_2617_salloc" = bitcast i8* %"$msgobj_2617_salloc_salloc" to [125 x i8]* + %"$msgobj_2617" = bitcast [125 x i8]* %"$msgobj_2617_salloc" to i8* + store i8 3, i8* %"$msgobj_2617", align 1 + %"$msgobj_fname_2619" = getelementptr i8, i8* %"$msgobj_2617", i32 1 + %"$msgobj_fname_2620" = bitcast i8* %"$msgobj_fname_2619" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2618", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2620", align 8 + %"$msgobj_td_2621" = getelementptr i8, i8* %"$msgobj_2617", i32 17 + %"$msgobj_td_2622" = bitcast i8* %"$msgobj_td_2621" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2622", align 8 + %"$support_contract_2623" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2624" = getelementptr i8, i8* %"$msgobj_2617", i32 25 + %"$msgobj_v_2625" = bitcast i8* %"$msgobj_v_2624" to [20 x i8]* + store [20 x i8] %"$support_contract_2623", [20 x i8]* %"$msgobj_v_2625", align 1 + %"$msgobj_fname_2627" = getelementptr i8, i8* %"$msgobj_2617", i32 45 + %"$msgobj_fname_2628" = bitcast i8* %"$msgobj_fname_2627" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2626", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2628", align 8 + %"$msgobj_td_2629" = getelementptr i8, i8* %"$msgobj_2617", i32 61 + %"$msgobj_td_2630" = bitcast i8* %"$msgobj_td_2629" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2630", align 8 + %"$msgobj_v_2632" = getelementptr i8, i8* %"$msgobj_2617", i32 69 + %"$msgobj_v_2633" = bitcast i8* %"$msgobj_v_2632" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_2631", i32 0, i32 0), i32 9 }, %String* %"$msgobj_v_2633", align 8 + %"$msgobj_fname_2635" = getelementptr i8, i8* %"$msgobj_2617", i32 85 + %"$msgobj_fname_2636" = bitcast i8* %"$msgobj_fname_2635" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2634", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2636", align 8 + %"$msgobj_td_2637" = getelementptr i8, i8* %"$msgobj_2617", i32 101 + %"$msgobj_td_2638" = bitcast i8* %"$msgobj_td_2637" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2638", align 8 + %"$amount_2639" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_2640" = getelementptr i8, i8* %"$msgobj_2617", i32 109 + %"$msgobj_v_2641" = bitcast i8* %"$msgobj_v_2640" to %Uint128* + store %Uint128 %"$amount_2639", %Uint128* %"$msgobj_v_2641", align 8 + store i8* %"$msgobj_2617", i8** %msg2, align 8, !dbg !237 + %"$gasrem_2643" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2644" = icmp ugt i64 1, %"$gasrem_2643" + br i1 %"$gascmp_2644", label %"$out_of_gas_2645", label %"$have_gas_2646" + +"$out_of_gas_2645": ; preds = %"$have_gas_2615" + call void @_out_of_gas() + br label %"$have_gas_2646" + +"$have_gas_2646": ; preds = %"$out_of_gas_2645", %"$have_gas_2615" + %"$consume_2647" = sub i64 %"$gasrem_2643", 1 + store i64 %"$consume_2647", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_2648" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2649" = icmp ugt i64 1, %"$gasrem_2648" + br i1 %"$gascmp_2649", label %"$out_of_gas_2650", label %"$have_gas_2651" + +"$out_of_gas_2650": ; preds = %"$have_gas_2646" + call void @_out_of_gas() + br label %"$have_gas_2651" + +"$have_gas_2651": ; preds = %"$out_of_gas_2650", %"$have_gas_2646" + %"$consume_2652" = sub i64 %"$gasrem_2648", 1 + store i64 %"$consume_2652", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_29" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2653" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2654" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2653", 0 + %"$accounting_tests.one_msg_envptr_2655" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2653", 1 + %"$msg2_2656" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_2657" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2654"(i8* %"$accounting_tests.one_msg_envptr_2655", i8* %"$msg2_2656"), !dbg !238 + store %TName_List_Message* %"$accounting_tests.one_msg_call_2657", %TName_List_Message** %"$accounting_tests.one_msg_29", align 8, !dbg !238 + %"$$accounting_tests.one_msg_29_2658" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_29", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_29_2658", %TName_List_Message** %msgs2, align 8, !dbg !238 + %"$msgs2_2659" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_2659_2660" = bitcast %TName_List_Message* %"$msgs2_2659" to i8* + %"$_literal_cost_call_2661" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_2659_2660") + %"$gasrem_2662" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2663" = icmp ugt i64 %"$_literal_cost_call_2661", %"$gasrem_2662" + br i1 %"$gascmp_2663", label %"$out_of_gas_2664", label %"$have_gas_2665" + +"$out_of_gas_2664": ; preds = %"$have_gas_2651" + call void @_out_of_gas() + br label %"$have_gas_2665" + +"$have_gas_2665": ; preds = %"$out_of_gas_2664", %"$have_gas_2651" + %"$consume_2666" = sub i64 %"$gasrem_2662", %"$_literal_cost_call_2661" + store i64 %"$consume_2666", i64* @_gasrem, align 8 + %"$execptr_load_2667" = load i8*, i8** @_execptr, align 8 + %"$msgs2_2668" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_2667", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_2668"), !dbg !239 + %"$gasrem_2669" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2670" = icmp ugt i64 1, %"$gasrem_2669" + br i1 %"$gascmp_2670", label %"$out_of_gas_2671", label %"$have_gas_2672" + +"$out_of_gas_2671": ; preds = %"$have_gas_2665" + call void @_out_of_gas() + br label %"$have_gas_2672" + +"$have_gas_2672": ; preds = %"$out_of_gas_2671", %"$have_gas_2665" + %"$consume_2673" = sub i64 %"$gasrem_2669", 1 + store i64 %"$consume_2673", i64* @_gasrem, align 8 + %expected_final_balance = alloca %Uint128, align 8 + %"$expected_intermediate_balance_2674" = load %Uint128, %Uint128* %expected_intermediate_balance, align 8 + %"$amount_2675" = load %Uint128, %Uint128* %amount, align 8 + %"$sub_call_2676" = call %Uint128 @_sub_Uint128(%Uint128 %"$expected_intermediate_balance_2674", %Uint128 %"$amount_2675"), !dbg !240 + store %Uint128 %"$sub_call_2676", %Uint128* %expected_final_balance, align 8, !dbg !240 + %"$gasrem_2677" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2678" = icmp ugt i64 1, %"$gasrem_2677" + br i1 %"$gascmp_2678", label %"$out_of_gas_2679", label %"$have_gas_2680" + +"$out_of_gas_2679": ; preds = %"$have_gas_2672" + call void @_out_of_gas() + br label %"$have_gas_2680" + +"$have_gas_2680": ; preds = %"$out_of_gas_2679", %"$have_gas_2672" + %"$consume_2681" = sub i64 %"$gasrem_2677", 1 + store i64 %"$consume_2681", i64* @_gasrem, align 8 + %"$CheckBalance__origin_2682" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_2682", align 1 + %"$CheckBalance__sender_2683" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_2683", align 1 + %"$expected_final_balance_2684" = load %Uint128, %Uint128* %expected_final_balance, align 8 + call void @"$CheckBalance_2277"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_2682", [20 x i8]* %"$CheckBalance__sender_2683", %Uint128 %"$expected_final_balance_2684"), !dbg !241 + ret void +} + +declare %Uint128 @_sub_Uint128(%Uint128, %Uint128) + +define void @Test_Send_4(i8* %0) !dbg !242 { +entry: + %"$_amount_2686" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2687" = bitcast i8* %"$_amount_2686" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2687", align 8 + %"$_origin_2688" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2689" = bitcast i8* %"$_origin_2688" to [20 x i8]* + %"$_sender_2690" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2691" = bitcast i8* %"$_sender_2690" to [20 x i8]* + call void @"$Test_Send_4_2489"(%Uint128 %_amount, [20 x i8]* %"$_origin_2689", [20 x i8]* %"$_sender_2691"), !dbg !243 + ret void +} + +define internal void @"$Test_Send_5_2692"(%Uint128 %_amount, [20 x i8]* %"$_origin_2693", [20 x i8]* %"$_sender_2694") !dbg !244 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2693", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2694", align 1 + %"$gasrem_2695" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2696" = icmp ugt i64 1, %"$gasrem_2695" + br i1 %"$gascmp_2696", label %"$out_of_gas_2697", label %"$have_gas_2698" + +"$out_of_gas_2697": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2698" + +"$have_gas_2698": ; preds = %"$out_of_gas_2697", %entry + %"$consume_2699" = sub i64 %"$gasrem_2695", 1 + store i64 %"$consume_2699", i64* @_gasrem, align 8 + %"$AssertReset__origin_2700" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_2700", align 1 + %"$AssertReset__sender_2701" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_2701", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_2700", [20 x i8]* %"$AssertReset__sender_2701"), !dbg !245 + %amount = alloca %Uint128, align 8 + %"$execptr_load_2703" = load i8*, i8** @_execptr, align 8 + %"$amount_call_2704" = call i8* @_fetch_field(i8* %"$execptr_load_2703", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_2702", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !246 + %"$amount_2705" = bitcast i8* %"$amount_call_2704" to %Uint128* + %"$amount_2706" = load %Uint128, %Uint128* %"$amount_2705", align 8 + store %Uint128 %"$amount_2706", %Uint128* %amount, align 8 + %"$_literal_cost_amount_2707" = alloca %Uint128, align 8 + %"$amount_2708" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_2708", %Uint128* %"$_literal_cost_amount_2707", align 8 + %"$$_literal_cost_amount_2707_2709" = bitcast %Uint128* %"$_literal_cost_amount_2707" to i8* + %"$_literal_cost_call_2710" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_2707_2709") + %"$gasadd_2711" = add i64 %"$_literal_cost_call_2710", 0 + %"$gasrem_2712" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2713" = icmp ugt i64 %"$gasadd_2711", %"$gasrem_2712" + br i1 %"$gascmp_2713", label %"$out_of_gas_2714", label %"$have_gas_2715" + +"$out_of_gas_2714": ; preds = %"$have_gas_2698" + call void @_out_of_gas() + br label %"$have_gas_2715" + +"$have_gas_2715": ; preds = %"$out_of_gas_2714", %"$have_gas_2698" + %"$consume_2716" = sub i64 %"$gasrem_2712", %"$gasadd_2711" + store i64 %"$consume_2716", i64* @_gasrem, align 8 + %init_bal = alloca %Uint128, align 8 + %"$execptr_load_2718" = load i8*, i8** @_execptr, align 8 + %"$init_bal_call_2719" = call i8* @_fetch_field(i8* %"$execptr_load_2718", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_2717", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !247 + %"$init_bal_2720" = bitcast i8* %"$init_bal_call_2719" to %Uint128* + %"$init_bal_2721" = load %Uint128, %Uint128* %"$init_bal_2720", align 8 + store %Uint128 %"$init_bal_2721", %Uint128* %init_bal, align 8 + %"$_literal_cost_init_bal_2722" = alloca %Uint128, align 8 + %"$init_bal_2723" = load %Uint128, %Uint128* %init_bal, align 8 + store %Uint128 %"$init_bal_2723", %Uint128* %"$_literal_cost_init_bal_2722", align 8 + %"$$_literal_cost_init_bal_2722_2724" = bitcast %Uint128* %"$_literal_cost_init_bal_2722" to i8* + %"$_literal_cost_call_2725" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_init_bal_2722_2724") + %"$gasadd_2726" = add i64 %"$_literal_cost_call_2725", 0 + %"$gasrem_2727" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2728" = icmp ugt i64 %"$gasadd_2726", %"$gasrem_2727" + br i1 %"$gascmp_2728", label %"$out_of_gas_2729", label %"$have_gas_2730" + +"$out_of_gas_2729": ; preds = %"$have_gas_2715" + call void @_out_of_gas() + br label %"$have_gas_2730" + +"$have_gas_2730": ; preds = %"$out_of_gas_2729", %"$have_gas_2715" + %"$consume_2731" = sub i64 %"$gasrem_2727", %"$gasadd_2726" + store i64 %"$consume_2731", i64* @_gasrem, align 8 + %"$gasrem_2732" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2733" = icmp ugt i64 1, %"$gasrem_2732" + br i1 %"$gascmp_2733", label %"$out_of_gas_2734", label %"$have_gas_2735" + +"$out_of_gas_2734": ; preds = %"$have_gas_2730" + call void @_out_of_gas() + br label %"$have_gas_2735" + +"$have_gas_2735": ; preds = %"$out_of_gas_2734", %"$have_gas_2730" + %"$consume_2736" = sub i64 %"$gasrem_2732", 1 + store i64 %"$consume_2736", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_2737" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2738" = icmp ugt i64 1, %"$gasrem_2737" + br i1 %"$gascmp_2738", label %"$out_of_gas_2739", label %"$have_gas_2740" + +"$out_of_gas_2739": ; preds = %"$have_gas_2735" + call void @_out_of_gas() + br label %"$have_gas_2740" + +"$have_gas_2740": ; preds = %"$out_of_gas_2739", %"$have_gas_2735" + %"$consume_2741" = sub i64 %"$gasrem_2737", 1 + store i64 %"$consume_2741", i64* @_gasrem, align 8 + %"$msgobj_2742_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2742_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2742_salloc_load", i64 125) + %"$msgobj_2742_salloc" = bitcast i8* %"$msgobj_2742_salloc_salloc" to [125 x i8]* + %"$msgobj_2742" = bitcast [125 x i8]* %"$msgobj_2742_salloc" to i8* + store i8 3, i8* %"$msgobj_2742", align 1 + %"$msgobj_fname_2744" = getelementptr i8, i8* %"$msgobj_2742", i32 1 + %"$msgobj_fname_2745" = bitcast i8* %"$msgobj_fname_2744" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2743", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2745", align 8 + %"$msgobj_td_2746" = getelementptr i8, i8* %"$msgobj_2742", i32 17 + %"$msgobj_td_2747" = bitcast i8* %"$msgobj_td_2746" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2747", align 8 + %"$support_contract_2748" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2749" = getelementptr i8, i8* %"$msgobj_2742", i32 25 + %"$msgobj_v_2750" = bitcast i8* %"$msgobj_v_2749" to [20 x i8]* + store [20 x i8] %"$support_contract_2748", [20 x i8]* %"$msgobj_v_2750", align 1 + %"$msgobj_fname_2752" = getelementptr i8, i8* %"$msgobj_2742", i32 45 + %"$msgobj_fname_2753" = bitcast i8* %"$msgobj_fname_2752" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2751", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2753", align 8 + %"$msgobj_td_2754" = getelementptr i8, i8* %"$msgobj_2742", i32 61 + %"$msgobj_td_2755" = bitcast i8* %"$msgobj_td_2754" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2755", align 8 + %"$msgobj_v_2757" = getelementptr i8, i8* %"$msgobj_2742", i32 69 + %"$msgobj_v_2758" = bitcast i8* %"$msgobj_v_2757" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_2756", i32 0, i32 0), i32 6 }, %String* %"$msgobj_v_2758", align 8 + %"$msgobj_fname_2760" = getelementptr i8, i8* %"$msgobj_2742", i32 85 + %"$msgobj_fname_2761" = bitcast i8* %"$msgobj_fname_2760" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2759", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2761", align 8 + %"$msgobj_td_2762" = getelementptr i8, i8* %"$msgobj_2742", i32 101 + %"$msgobj_td_2763" = bitcast i8* %"$msgobj_td_2762" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2763", align 8 + %"$amount_2764" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_2765" = getelementptr i8, i8* %"$msgobj_2742", i32 109 + %"$msgobj_v_2766" = bitcast i8* %"$msgobj_v_2765" to %Uint128* + store %Uint128 %"$amount_2764", %Uint128* %"$msgobj_v_2766", align 8 + store i8* %"$msgobj_2742", i8** %msg1, align 8, !dbg !248 + %"$gasrem_2768" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2769" = icmp ugt i64 1, %"$gasrem_2768" + br i1 %"$gascmp_2769", label %"$out_of_gas_2770", label %"$have_gas_2771" + +"$out_of_gas_2770": ; preds = %"$have_gas_2740" + call void @_out_of_gas() + br label %"$have_gas_2771" + +"$have_gas_2771": ; preds = %"$out_of_gas_2770", %"$have_gas_2740" + %"$consume_2772" = sub i64 %"$gasrem_2768", 1 + store i64 %"$consume_2772", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_2773" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2774" = icmp ugt i64 1, %"$gasrem_2773" + br i1 %"$gascmp_2774", label %"$out_of_gas_2775", label %"$have_gas_2776" + +"$out_of_gas_2775": ; preds = %"$have_gas_2771" + call void @_out_of_gas() + br label %"$have_gas_2776" + +"$have_gas_2776": ; preds = %"$out_of_gas_2775", %"$have_gas_2771" + %"$consume_2777" = sub i64 %"$gasrem_2773", 1 + store i64 %"$consume_2777", i64* @_gasrem, align 8 + %"$msgobj_2778_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2778_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2778_salloc_load", i64 125) + %"$msgobj_2778_salloc" = bitcast i8* %"$msgobj_2778_salloc_salloc" to [125 x i8]* + %"$msgobj_2778" = bitcast [125 x i8]* %"$msgobj_2778_salloc" to i8* + store i8 3, i8* %"$msgobj_2778", align 1 + %"$msgobj_fname_2780" = getelementptr i8, i8* %"$msgobj_2778", i32 1 + %"$msgobj_fname_2781" = bitcast i8* %"$msgobj_fname_2780" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2779", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2781", align 8 + %"$msgobj_td_2782" = getelementptr i8, i8* %"$msgobj_2778", i32 17 + %"$msgobj_td_2783" = bitcast i8* %"$msgobj_td_2782" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2783", align 8 + %"$support_contract_2784" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2785" = getelementptr i8, i8* %"$msgobj_2778", i32 25 + %"$msgobj_v_2786" = bitcast i8* %"$msgobj_v_2785" to [20 x i8]* + store [20 x i8] %"$support_contract_2784", [20 x i8]* %"$msgobj_v_2786", align 1 + %"$msgobj_fname_2788" = getelementptr i8, i8* %"$msgobj_2778", i32 45 + %"$msgobj_fname_2789" = bitcast i8* %"$msgobj_fname_2788" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2787", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2789", align 8 + %"$msgobj_td_2790" = getelementptr i8, i8* %"$msgobj_2778", i32 61 + %"$msgobj_td_2791" = bitcast i8* %"$msgobj_td_2790" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2791", align 8 + %"$msgobj_v_2793" = getelementptr i8, i8* %"$msgobj_2778", i32 69 + %"$msgobj_v_2794" = bitcast i8* %"$msgobj_v_2793" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_2792", i32 0, i32 0), i32 9 }, %String* %"$msgobj_v_2794", align 8 + %"$msgobj_fname_2796" = getelementptr i8, i8* %"$msgobj_2778", i32 85 + %"$msgobj_fname_2797" = bitcast i8* %"$msgobj_fname_2796" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2795", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2797", align 8 + %"$msgobj_td_2798" = getelementptr i8, i8* %"$msgobj_2778", i32 101 + %"$msgobj_td_2799" = bitcast i8* %"$msgobj_td_2798" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2799", align 8 + %"$amount_2800" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_2801" = getelementptr i8, i8* %"$msgobj_2778", i32 109 + %"$msgobj_v_2802" = bitcast i8* %"$msgobj_v_2801" to %Uint128* + store %Uint128 %"$amount_2800", %Uint128* %"$msgobj_v_2802", align 8 + store i8* %"$msgobj_2778", i8** %msg2, align 8, !dbg !249 + %"$gasrem_2804" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2805" = icmp ugt i64 1, %"$gasrem_2804" + br i1 %"$gascmp_2805", label %"$out_of_gas_2806", label %"$have_gas_2807" + +"$out_of_gas_2806": ; preds = %"$have_gas_2776" + call void @_out_of_gas() + br label %"$have_gas_2807" + +"$have_gas_2807": ; preds = %"$out_of_gas_2806", %"$have_gas_2776" + %"$consume_2808" = sub i64 %"$gasrem_2804", 1 + store i64 %"$consume_2808", i64* @_gasrem, align 8 + %msgs_tmp = alloca %TName_List_Message*, align 8 + %"$gasrem_2809" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2810" = icmp ugt i64 1, %"$gasrem_2809" + br i1 %"$gascmp_2810", label %"$out_of_gas_2811", label %"$have_gas_2812" + +"$out_of_gas_2811": ; preds = %"$have_gas_2807" + call void @_out_of_gas() + br label %"$have_gas_2812" + +"$have_gas_2812": ; preds = %"$out_of_gas_2811", %"$have_gas_2807" + %"$consume_2813" = sub i64 %"$gasrem_2809", 1 + store i64 %"$consume_2813", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_31" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2814" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2815" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2814", 0 + %"$accounting_tests.one_msg_envptr_2816" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2814", 1 + %"$msg2_2817" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_2818" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2815"(i8* %"$accounting_tests.one_msg_envptr_2816", i8* %"$msg2_2817"), !dbg !250 + store %TName_List_Message* %"$accounting_tests.one_msg_call_2818", %TName_List_Message** %"$accounting_tests.one_msg_31", align 8, !dbg !250 + %"$$accounting_tests.one_msg_31_2819" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_31", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_31_2819", %TName_List_Message** %msgs_tmp, align 8, !dbg !250 + %"$gasrem_2820" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2821" = icmp ugt i64 1, %"$gasrem_2820" + br i1 %"$gascmp_2821", label %"$out_of_gas_2822", label %"$have_gas_2823" + +"$out_of_gas_2822": ; preds = %"$have_gas_2812" + call void @_out_of_gas() + br label %"$have_gas_2823" + +"$have_gas_2823": ; preds = %"$out_of_gas_2822", %"$have_gas_2812" + %"$consume_2824" = sub i64 %"$gasrem_2820", 1 + store i64 %"$consume_2824", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_2825" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2826" = icmp ugt i64 1, %"$gasrem_2825" + br i1 %"$gascmp_2826", label %"$out_of_gas_2827", label %"$have_gas_2828" + +"$out_of_gas_2827": ; preds = %"$have_gas_2823" + call void @_out_of_gas() + br label %"$have_gas_2828" + +"$have_gas_2828": ; preds = %"$out_of_gas_2827", %"$have_gas_2823" + %"$consume_2829" = sub i64 %"$gasrem_2825", 1 + store i64 %"$consume_2829", i64* @_gasrem, align 8 + %"$msg1_2830" = load i8*, i8** %msg1, align 8 + %"$msgs_tmp_2831" = load %TName_List_Message*, %TName_List_Message** %msgs_tmp, align 8 + %"$adtval_2832_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_2832_salloc" = call i8* @_salloc(i8* %"$adtval_2832_load", i64 17) + %"$adtval_2832" = bitcast i8* %"$adtval_2832_salloc" to %CName_Cons_Message* + %"$adtgep_2833" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_2832", i32 0, i32 0 + store i8 0, i8* %"$adtgep_2833", align 1 + %"$adtgep_2834" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_2832", i32 0, i32 1 + store i8* %"$msg1_2830", i8** %"$adtgep_2834", align 8 + %"$adtgep_2835" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_2832", i32 0, i32 2 + store %TName_List_Message* %"$msgs_tmp_2831", %TName_List_Message** %"$adtgep_2835", align 8 + %"$adtptr_2836" = bitcast %CName_Cons_Message* %"$adtval_2832" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_2836", %TName_List_Message** %msgs, align 8, !dbg !251 + %"$msgs_2837" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_2837_2838" = bitcast %TName_List_Message* %"$msgs_2837" to i8* + %"$_literal_cost_call_2839" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_2837_2838") + %"$gasrem_2840" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2841" = icmp ugt i64 %"$_literal_cost_call_2839", %"$gasrem_2840" + br i1 %"$gascmp_2841", label %"$out_of_gas_2842", label %"$have_gas_2843" + +"$out_of_gas_2842": ; preds = %"$have_gas_2828" + call void @_out_of_gas() + br label %"$have_gas_2843" + +"$have_gas_2843": ; preds = %"$out_of_gas_2842", %"$have_gas_2828" + %"$consume_2844" = sub i64 %"$gasrem_2840", %"$_literal_cost_call_2839" + store i64 %"$consume_2844", i64* @_gasrem, align 8 + %"$execptr_load_2845" = load i8*, i8** @_execptr, align 8 + %"$msgs_2846" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_2845", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_2846"), !dbg !252 + %"$gasrem_2847" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2848" = icmp ugt i64 1, %"$gasrem_2847" + br i1 %"$gascmp_2848", label %"$out_of_gas_2849", label %"$have_gas_2850" + +"$out_of_gas_2849": ; preds = %"$have_gas_2843" + call void @_out_of_gas() + br label %"$have_gas_2850" + +"$have_gas_2850": ; preds = %"$out_of_gas_2849", %"$have_gas_2843" + %"$consume_2851" = sub i64 %"$gasrem_2847", 1 + store i64 %"$consume_2851", i64* @_gasrem, align 8 + %expected_intermediate_balance = alloca %Uint128, align 8 + %"$init_bal_2852" = load %Uint128, %Uint128* %init_bal, align 8 + %"$amount_2853" = load %Uint128, %Uint128* %amount, align 8 + %"$sub_call_2854" = call %Uint128 @_sub_Uint128(%Uint128 %"$init_bal_2852", %Uint128 %"$amount_2853"), !dbg !253 + store %Uint128 %"$sub_call_2854", %Uint128* %expected_intermediate_balance, align 8, !dbg !253 + %"$gasrem_2855" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2856" = icmp ugt i64 1, %"$gasrem_2855" + br i1 %"$gascmp_2856", label %"$out_of_gas_2857", label %"$have_gas_2858" + +"$out_of_gas_2857": ; preds = %"$have_gas_2850" + call void @_out_of_gas() + br label %"$have_gas_2858" + +"$have_gas_2858": ; preds = %"$out_of_gas_2857", %"$have_gas_2850" + %"$consume_2859" = sub i64 %"$gasrem_2855", 1 + store i64 %"$consume_2859", i64* @_gasrem, align 8 + %expected_final_balance = alloca %Uint128, align 8 + %"$expected_intermediate_balance_2860" = load %Uint128, %Uint128* %expected_intermediate_balance, align 8 + %"$amount_2861" = load %Uint128, %Uint128* %amount, align 8 + %"$sub_call_2862" = call %Uint128 @_sub_Uint128(%Uint128 %"$expected_intermediate_balance_2860", %Uint128 %"$amount_2861"), !dbg !254 + store %Uint128 %"$sub_call_2862", %Uint128* %expected_final_balance, align 8, !dbg !254 + %"$gasrem_2863" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2864" = icmp ugt i64 1, %"$gasrem_2863" + br i1 %"$gascmp_2864", label %"$out_of_gas_2865", label %"$have_gas_2866" + +"$out_of_gas_2865": ; preds = %"$have_gas_2858" + call void @_out_of_gas() + br label %"$have_gas_2866" + +"$have_gas_2866": ; preds = %"$out_of_gas_2865", %"$have_gas_2858" + %"$consume_2867" = sub i64 %"$gasrem_2863", 1 + store i64 %"$consume_2867", i64* @_gasrem, align 8 + %"$CheckBalance__origin_2868" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_2868", align 1 + %"$CheckBalance__sender_2869" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_2869", align 1 + %"$expected_final_balance_2870" = load %Uint128, %Uint128* %expected_final_balance, align 8 + call void @"$CheckBalance_2277"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_2868", [20 x i8]* %"$CheckBalance__sender_2869", %Uint128 %"$expected_final_balance_2870"), !dbg !255 + ret void +} + +define void @Test_Send_5(i8* %0) !dbg !256 { +entry: + %"$_amount_2872" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2873" = bitcast i8* %"$_amount_2872" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2873", align 8 + %"$_origin_2874" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2875" = bitcast i8* %"$_origin_2874" to [20 x i8]* + %"$_sender_2876" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2877" = bitcast i8* %"$_sender_2876" to [20 x i8]* + call void @"$Test_Send_5_2692"(%Uint128 %_amount, [20 x i8]* %"$_origin_2875", [20 x i8]* %"$_sender_2877"), !dbg !257 + ret void +} + +define internal void @"$Test_Send_6_2878"(%Uint128 %_amount, [20 x i8]* %"$_origin_2879", [20 x i8]* %"$_sender_2880") !dbg !258 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2879", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2880", align 1 + %"$gasrem_2881" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2882" = icmp ugt i64 1, %"$gasrem_2881" + br i1 %"$gascmp_2882", label %"$out_of_gas_2883", label %"$have_gas_2884" + +"$out_of_gas_2883": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2884" + +"$have_gas_2884": ; preds = %"$out_of_gas_2883", %entry + %"$consume_2885" = sub i64 %"$gasrem_2881", 1 + store i64 %"$consume_2885", i64* @_gasrem, align 8 + %"$AssertReset__origin_2886" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_2886", align 1 + %"$AssertReset__sender_2887" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_2887", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_2886", [20 x i8]* %"$AssertReset__sender_2887"), !dbg !259 + %amount = alloca %Uint128, align 8 + %"$execptr_load_2889" = load i8*, i8** @_execptr, align 8 + %"$amount_call_2890" = call i8* @_fetch_field(i8* %"$execptr_load_2889", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_2888", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !260 + %"$amount_2891" = bitcast i8* %"$amount_call_2890" to %Uint128* + %"$amount_2892" = load %Uint128, %Uint128* %"$amount_2891", align 8 + store %Uint128 %"$amount_2892", %Uint128* %amount, align 8 + %"$_literal_cost_amount_2893" = alloca %Uint128, align 8 + %"$amount_2894" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_2894", %Uint128* %"$_literal_cost_amount_2893", align 8 + %"$$_literal_cost_amount_2893_2895" = bitcast %Uint128* %"$_literal_cost_amount_2893" to i8* + %"$_literal_cost_call_2896" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_2893_2895") + %"$gasadd_2897" = add i64 %"$_literal_cost_call_2896", 0 + %"$gasrem_2898" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2899" = icmp ugt i64 %"$gasadd_2897", %"$gasrem_2898" + br i1 %"$gascmp_2899", label %"$out_of_gas_2900", label %"$have_gas_2901" + +"$out_of_gas_2900": ; preds = %"$have_gas_2884" + call void @_out_of_gas() + br label %"$have_gas_2901" + +"$have_gas_2901": ; preds = %"$out_of_gas_2900", %"$have_gas_2884" + %"$consume_2902" = sub i64 %"$gasrem_2898", %"$gasadd_2897" + store i64 %"$consume_2902", i64* @_gasrem, align 8 + %bal = alloca %Uint128, align 8 + %"$execptr_load_2904" = load i8*, i8** @_execptr, align 8 + %"$bal_call_2905" = call i8* @_fetch_field(i8* %"$execptr_load_2904", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_2903", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !261 + %"$bal_2906" = bitcast i8* %"$bal_call_2905" to %Uint128* + %"$bal_2907" = load %Uint128, %Uint128* %"$bal_2906", align 8 + store %Uint128 %"$bal_2907", %Uint128* %bal, align 8 + %"$_literal_cost_bal_2908" = alloca %Uint128, align 8 + %"$bal_2909" = load %Uint128, %Uint128* %bal, align 8 + store %Uint128 %"$bal_2909", %Uint128* %"$_literal_cost_bal_2908", align 8 + %"$$_literal_cost_bal_2908_2910" = bitcast %Uint128* %"$_literal_cost_bal_2908" to i8* + %"$_literal_cost_call_2911" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_bal_2908_2910") + %"$gasadd_2912" = add i64 %"$_literal_cost_call_2911", 0 + %"$gasrem_2913" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2914" = icmp ugt i64 %"$gasadd_2912", %"$gasrem_2913" + br i1 %"$gascmp_2914", label %"$out_of_gas_2915", label %"$have_gas_2916" + +"$out_of_gas_2915": ; preds = %"$have_gas_2901" + call void @_out_of_gas() + br label %"$have_gas_2916" + +"$have_gas_2916": ; preds = %"$out_of_gas_2915", %"$have_gas_2901" + %"$consume_2917" = sub i64 %"$gasrem_2913", %"$gasadd_2912" + store i64 %"$consume_2917", i64* @_gasrem, align 8 + %"$gasrem_2918" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2919" = icmp ugt i64 1, %"$gasrem_2918" + br i1 %"$gascmp_2919", label %"$out_of_gas_2920", label %"$have_gas_2921" + +"$out_of_gas_2920": ; preds = %"$have_gas_2916" + call void @_out_of_gas() + br label %"$have_gas_2921" + +"$have_gas_2921": ; preds = %"$out_of_gas_2920", %"$have_gas_2916" + %"$consume_2922" = sub i64 %"$gasrem_2918", 1 + store i64 %"$consume_2922", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_2923" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2924" = icmp ugt i64 1, %"$gasrem_2923" + br i1 %"$gascmp_2924", label %"$out_of_gas_2925", label %"$have_gas_2926" + +"$out_of_gas_2925": ; preds = %"$have_gas_2921" + call void @_out_of_gas() + br label %"$have_gas_2926" + +"$have_gas_2926": ; preds = %"$out_of_gas_2925", %"$have_gas_2921" + %"$consume_2927" = sub i64 %"$gasrem_2923", 1 + store i64 %"$consume_2927", i64* @_gasrem, align 8 + %"$msgobj_2928_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2928_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2928_salloc_load", i64 125) + %"$msgobj_2928_salloc" = bitcast i8* %"$msgobj_2928_salloc_salloc" to [125 x i8]* + %"$msgobj_2928" = bitcast [125 x i8]* %"$msgobj_2928_salloc" to i8* + store i8 3, i8* %"$msgobj_2928", align 1 + %"$msgobj_fname_2930" = getelementptr i8, i8* %"$msgobj_2928", i32 1 + %"$msgobj_fname_2931" = bitcast i8* %"$msgobj_fname_2930" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2929", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2931", align 8 + %"$msgobj_td_2932" = getelementptr i8, i8* %"$msgobj_2928", i32 17 + %"$msgobj_td_2933" = bitcast i8* %"$msgobj_td_2932" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2933", align 8 + %"$support_contract_2934" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2935" = getelementptr i8, i8* %"$msgobj_2928", i32 25 + %"$msgobj_v_2936" = bitcast i8* %"$msgobj_v_2935" to [20 x i8]* + store [20 x i8] %"$support_contract_2934", [20 x i8]* %"$msgobj_v_2936", align 1 + %"$msgobj_fname_2938" = getelementptr i8, i8* %"$msgobj_2928", i32 45 + %"$msgobj_fname_2939" = bitcast i8* %"$msgobj_fname_2938" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2937", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2939", align 8 + %"$msgobj_td_2940" = getelementptr i8, i8* %"$msgobj_2928", i32 61 + %"$msgobj_td_2941" = bitcast i8* %"$msgobj_td_2940" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2941", align 8 + %"$msgobj_v_2943" = getelementptr i8, i8* %"$msgobj_2928", i32 69 + %"$msgobj_v_2944" = bitcast i8* %"$msgobj_v_2943" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_2942", i32 0, i32 0), i32 6 }, %String* %"$msgobj_v_2944", align 8 + %"$msgobj_fname_2946" = getelementptr i8, i8* %"$msgobj_2928", i32 85 + %"$msgobj_fname_2947" = bitcast i8* %"$msgobj_fname_2946" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2945", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2947", align 8 + %"$msgobj_td_2948" = getelementptr i8, i8* %"$msgobj_2928", i32 101 + %"$msgobj_td_2949" = bitcast i8* %"$msgobj_td_2948" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2949", align 8 + %"$amount_2950" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_2951" = getelementptr i8, i8* %"$msgobj_2928", i32 109 + %"$msgobj_v_2952" = bitcast i8* %"$msgobj_v_2951" to %Uint128* + store %Uint128 %"$amount_2950", %Uint128* %"$msgobj_v_2952", align 8 + store i8* %"$msgobj_2928", i8** %msg1, align 8, !dbg !262 + %"$gasrem_2954" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2955" = icmp ugt i64 1, %"$gasrem_2954" + br i1 %"$gascmp_2955", label %"$out_of_gas_2956", label %"$have_gas_2957" + +"$out_of_gas_2956": ; preds = %"$have_gas_2926" + call void @_out_of_gas() + br label %"$have_gas_2957" + +"$have_gas_2957": ; preds = %"$out_of_gas_2956", %"$have_gas_2926" + %"$consume_2958" = sub i64 %"$gasrem_2954", 1 + store i64 %"$consume_2958", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_2959" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2960" = icmp ugt i64 1, %"$gasrem_2959" + br i1 %"$gascmp_2960", label %"$out_of_gas_2961", label %"$have_gas_2962" + +"$out_of_gas_2961": ; preds = %"$have_gas_2957" + call void @_out_of_gas() + br label %"$have_gas_2962" + +"$have_gas_2962": ; preds = %"$out_of_gas_2961", %"$have_gas_2957" + %"$consume_2963" = sub i64 %"$gasrem_2959", 1 + store i64 %"$consume_2963", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_33" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2964" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2965" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2964", 0 + %"$accounting_tests.one_msg_envptr_2966" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2964", 1 + %"$msg1_2967" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_2968" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2965"(i8* %"$accounting_tests.one_msg_envptr_2966", i8* %"$msg1_2967"), !dbg !263 + store %TName_List_Message* %"$accounting_tests.one_msg_call_2968", %TName_List_Message** %"$accounting_tests.one_msg_33", align 8, !dbg !263 + %"$$accounting_tests.one_msg_33_2969" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_33", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_33_2969", %TName_List_Message** %msgs1, align 8, !dbg !263 + %"$msgs1_2970" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_2970_2971" = bitcast %TName_List_Message* %"$msgs1_2970" to i8* + %"$_literal_cost_call_2972" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_2970_2971") + %"$gasrem_2973" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2974" = icmp ugt i64 %"$_literal_cost_call_2972", %"$gasrem_2973" + br i1 %"$gascmp_2974", label %"$out_of_gas_2975", label %"$have_gas_2976" + +"$out_of_gas_2975": ; preds = %"$have_gas_2962" + call void @_out_of_gas() + br label %"$have_gas_2976" + +"$have_gas_2976": ; preds = %"$out_of_gas_2975", %"$have_gas_2962" + %"$consume_2977" = sub i64 %"$gasrem_2973", %"$_literal_cost_call_2972" + store i64 %"$consume_2977", i64* @_gasrem, align 8 + %"$execptr_load_2978" = load i8*, i8** @_execptr, align 8 + %"$msgs1_2979" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_2978", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_2979"), !dbg !264 + %"$gasrem_2980" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2981" = icmp ugt i64 1, %"$gasrem_2980" + br i1 %"$gascmp_2981", label %"$out_of_gas_2982", label %"$have_gas_2983" + +"$out_of_gas_2982": ; preds = %"$have_gas_2976" + call void @_out_of_gas() + br label %"$have_gas_2983" + +"$have_gas_2983": ; preds = %"$out_of_gas_2982", %"$have_gas_2976" + %"$consume_2984" = sub i64 %"$gasrem_2980", 1 + store i64 %"$consume_2984", i64* @_gasrem, align 8 + %expected_balance = alloca %Uint128, align 8 + %"$bal_2985" = load %Uint128, %Uint128* %bal, align 8 + %"$amount_2986" = load %Uint128, %Uint128* %amount, align 8 + %"$sub_call_2987" = call %Uint128 @_sub_Uint128(%Uint128 %"$bal_2985", %Uint128 %"$amount_2986"), !dbg !265 + store %Uint128 %"$sub_call_2987", %Uint128* %expected_balance, align 8, !dbg !265 + %"$gasrem_2988" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2989" = icmp ugt i64 1, %"$gasrem_2988" + br i1 %"$gascmp_2989", label %"$out_of_gas_2990", label %"$have_gas_2991" + +"$out_of_gas_2990": ; preds = %"$have_gas_2983" + call void @_out_of_gas() + br label %"$have_gas_2991" + +"$have_gas_2991": ; preds = %"$out_of_gas_2990", %"$have_gas_2983" + %"$consume_2992" = sub i64 %"$gasrem_2988", 1 + store i64 %"$consume_2992", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_2993" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2994" = icmp ugt i64 1, %"$gasrem_2993" + br i1 %"$gascmp_2994", label %"$out_of_gas_2995", label %"$have_gas_2996" + +"$out_of_gas_2995": ; preds = %"$have_gas_2991" + call void @_out_of_gas() + br label %"$have_gas_2996" + +"$have_gas_2996": ; preds = %"$out_of_gas_2995", %"$have_gas_2991" + %"$consume_2997" = sub i64 %"$gasrem_2993", 1 + store i64 %"$consume_2997", i64* @_gasrem, align 8 + %"$msgobj_2998_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2998_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2998_salloc_load", i64 165) + %"$msgobj_2998_salloc" = bitcast i8* %"$msgobj_2998_salloc_salloc" to [165 x i8]* + %"$msgobj_2998" = bitcast [165 x i8]* %"$msgobj_2998_salloc" to i8* + store i8 4, i8* %"$msgobj_2998", align 1 + %"$msgobj_fname_3000" = getelementptr i8, i8* %"$msgobj_2998", i32 1 + %"$msgobj_fname_3001" = bitcast i8* %"$msgobj_fname_3000" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2999", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3001", align 8 + %"$msgobj_td_3002" = getelementptr i8, i8* %"$msgobj_2998", i32 17 + %"$msgobj_td_3003" = bitcast i8* %"$msgobj_td_3002" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3003", align 8 + %"$_this_address_3004" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_3005" = getelementptr i8, i8* %"$msgobj_2998", i32 25 + %"$msgobj_v_3006" = bitcast i8* %"$msgobj_v_3005" to [20 x i8]* + store [20 x i8] %"$_this_address_3004", [20 x i8]* %"$msgobj_v_3006", align 1 + %"$msgobj_fname_3008" = getelementptr i8, i8* %"$msgobj_2998", i32 45 + %"$msgobj_fname_3009" = bitcast i8* %"$msgobj_fname_3008" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3007", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3009", align 8 + %"$msgobj_td_3010" = getelementptr i8, i8* %"$msgobj_2998", i32 61 + %"$msgobj_td_3011" = bitcast i8* %"$msgobj_td_3010" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3011", align 8 + %"$msgobj_v_3013" = getelementptr i8, i8* %"$msgobj_2998", i32 69 + %"$msgobj_v_3014" = bitcast i8* %"$msgobj_v_3013" to %String* + store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_3012", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_3014", align 8 + %"$msgobj_fname_3016" = getelementptr i8, i8* %"$msgobj_2998", i32 85 + %"$msgobj_fname_3017" = bitcast i8* %"$msgobj_fname_3016" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3015", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3017", align 8 + %"$msgobj_td_3018" = getelementptr i8, i8* %"$msgobj_2998", i32 101 + %"$msgobj_td_3019" = bitcast i8* %"$msgobj_td_3018" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3019", align 8 + %"$msgobj_v_3020" = getelementptr i8, i8* %"$msgobj_2998", i32 109 + %"$msgobj_v_3021" = bitcast i8* %"$msgobj_v_3020" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_3021", align 8 + %"$msgobj_fname_3023" = getelementptr i8, i8* %"$msgobj_2998", i32 125 + %"$msgobj_fname_3024" = bitcast i8* %"$msgobj_fname_3023" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_3022", i32 0, i32 0), i32 16 }, %String* %"$msgobj_fname_3024", align 8 + %"$msgobj_td_3025" = getelementptr i8, i8* %"$msgobj_2998", i32 141 + %"$msgobj_td_3026" = bitcast i8* %"$msgobj_td_3025" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3026", align 8 + %"$expected_balance_3027" = load %Uint128, %Uint128* %expected_balance, align 8 + %"$msgobj_v_3028" = getelementptr i8, i8* %"$msgobj_2998", i32 149 + %"$msgobj_v_3029" = bitcast i8* %"$msgobj_v_3028" to %Uint128* + store %Uint128 %"$expected_balance_3027", %Uint128* %"$msgobj_v_3029", align 8 + store i8* %"$msgobj_2998", i8** %msg2, align 8, !dbg !266 + %"$gasrem_3031" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3032" = icmp ugt i64 1, %"$gasrem_3031" + br i1 %"$gascmp_3032", label %"$out_of_gas_3033", label %"$have_gas_3034" + +"$out_of_gas_3033": ; preds = %"$have_gas_2996" + call void @_out_of_gas() + br label %"$have_gas_3034" + +"$have_gas_3034": ; preds = %"$out_of_gas_3033", %"$have_gas_2996" + %"$consume_3035" = sub i64 %"$gasrem_3031", 1 + store i64 %"$consume_3035", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_3036" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3037" = icmp ugt i64 1, %"$gasrem_3036" + br i1 %"$gascmp_3037", label %"$out_of_gas_3038", label %"$have_gas_3039" + +"$out_of_gas_3038": ; preds = %"$have_gas_3034" + call void @_out_of_gas() + br label %"$have_gas_3039" + +"$have_gas_3039": ; preds = %"$out_of_gas_3038", %"$have_gas_3034" + %"$consume_3040" = sub i64 %"$gasrem_3036", 1 + store i64 %"$consume_3040", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_32" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3041" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3042" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3041", 0 + %"$accounting_tests.one_msg_envptr_3043" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3041", 1 + %"$msg2_3044" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_3045" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3042"(i8* %"$accounting_tests.one_msg_envptr_3043", i8* %"$msg2_3044"), !dbg !267 + store %TName_List_Message* %"$accounting_tests.one_msg_call_3045", %TName_List_Message** %"$accounting_tests.one_msg_32", align 8, !dbg !267 + %"$$accounting_tests.one_msg_32_3046" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_32", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_32_3046", %TName_List_Message** %msgs2, align 8, !dbg !267 + %"$msgs2_3047" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_3047_3048" = bitcast %TName_List_Message* %"$msgs2_3047" to i8* + %"$_literal_cost_call_3049" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_3047_3048") + %"$gasrem_3050" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3051" = icmp ugt i64 %"$_literal_cost_call_3049", %"$gasrem_3050" + br i1 %"$gascmp_3051", label %"$out_of_gas_3052", label %"$have_gas_3053" + +"$out_of_gas_3052": ; preds = %"$have_gas_3039" + call void @_out_of_gas() + br label %"$have_gas_3053" + +"$have_gas_3053": ; preds = %"$out_of_gas_3052", %"$have_gas_3039" + %"$consume_3054" = sub i64 %"$gasrem_3050", %"$_literal_cost_call_3049" + store i64 %"$consume_3054", i64* @_gasrem, align 8 + %"$execptr_load_3055" = load i8*, i8** @_execptr, align 8 + %"$msgs2_3056" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_3055", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_3056"), !dbg !268 + ret void +} + +define void @Test_Send_6(i8* %0) !dbg !269 { +entry: + %"$_amount_3058" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3059" = bitcast i8* %"$_amount_3058" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3059", align 8 + %"$_origin_3060" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3061" = bitcast i8* %"$_origin_3060" to [20 x i8]* + %"$_sender_3062" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3063" = bitcast i8* %"$_sender_3062" to [20 x i8]* + call void @"$Test_Send_6_2878"(%Uint128 %_amount, [20 x i8]* %"$_origin_3061", [20 x i8]* %"$_sender_3063"), !dbg !270 + ret void +} + +define internal void @"$Test_Send_7_3064"(%Uint128 %_amount, [20 x i8]* %"$_origin_3065", [20 x i8]* %"$_sender_3066") !dbg !271 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3065", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3066", align 1 + %"$gasrem_3067" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3068" = icmp ugt i64 1, %"$gasrem_3067" + br i1 %"$gascmp_3068", label %"$out_of_gas_3069", label %"$have_gas_3070" + +"$out_of_gas_3069": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3070" + +"$have_gas_3070": ; preds = %"$out_of_gas_3069", %entry + %"$consume_3071" = sub i64 %"$gasrem_3067", 1 + store i64 %"$consume_3071", i64* @_gasrem, align 8 + %"$AssertReset__origin_3072" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_3072", align 1 + %"$AssertReset__sender_3073" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_3073", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_3072", [20 x i8]* %"$AssertReset__sender_3073"), !dbg !272 + %amount = alloca %Uint128, align 8 + %"$execptr_load_3075" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3076" = call i8* @_fetch_field(i8* %"$execptr_load_3075", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3074", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !273 + %"$amount_3077" = bitcast i8* %"$amount_call_3076" to %Uint128* + %"$amount_3078" = load %Uint128, %Uint128* %"$amount_3077", align 8 + store %Uint128 %"$amount_3078", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3079" = alloca %Uint128, align 8 + %"$amount_3080" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3080", %Uint128* %"$_literal_cost_amount_3079", align 8 + %"$$_literal_cost_amount_3079_3081" = bitcast %Uint128* %"$_literal_cost_amount_3079" to i8* + %"$_literal_cost_call_3082" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3079_3081") + %"$gasadd_3083" = add i64 %"$_literal_cost_call_3082", 0 + %"$gasrem_3084" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3085" = icmp ugt i64 %"$gasadd_3083", %"$gasrem_3084" + br i1 %"$gascmp_3085", label %"$out_of_gas_3086", label %"$have_gas_3087" + +"$out_of_gas_3086": ; preds = %"$have_gas_3070" + call void @_out_of_gas() + br label %"$have_gas_3087" + +"$have_gas_3087": ; preds = %"$out_of_gas_3086", %"$have_gas_3070" + %"$consume_3088" = sub i64 %"$gasrem_3084", %"$gasadd_3083" + store i64 %"$consume_3088", i64* @_gasrem, align 8 + %bal = alloca %Uint128, align 8 + %"$execptr_load_3090" = load i8*, i8** @_execptr, align 8 + %"$bal_call_3091" = call i8* @_fetch_field(i8* %"$execptr_load_3090", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_3089", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !274 + %"$bal_3092" = bitcast i8* %"$bal_call_3091" to %Uint128* + %"$bal_3093" = load %Uint128, %Uint128* %"$bal_3092", align 8 + store %Uint128 %"$bal_3093", %Uint128* %bal, align 8 + %"$_literal_cost_bal_3094" = alloca %Uint128, align 8 + %"$bal_3095" = load %Uint128, %Uint128* %bal, align 8 + store %Uint128 %"$bal_3095", %Uint128* %"$_literal_cost_bal_3094", align 8 + %"$$_literal_cost_bal_3094_3096" = bitcast %Uint128* %"$_literal_cost_bal_3094" to i8* + %"$_literal_cost_call_3097" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_bal_3094_3096") + %"$gasadd_3098" = add i64 %"$_literal_cost_call_3097", 0 + %"$gasrem_3099" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3100" = icmp ugt i64 %"$gasadd_3098", %"$gasrem_3099" + br i1 %"$gascmp_3100", label %"$out_of_gas_3101", label %"$have_gas_3102" + +"$out_of_gas_3101": ; preds = %"$have_gas_3087" + call void @_out_of_gas() + br label %"$have_gas_3102" + +"$have_gas_3102": ; preds = %"$out_of_gas_3101", %"$have_gas_3087" + %"$consume_3103" = sub i64 %"$gasrem_3099", %"$gasadd_3098" + store i64 %"$consume_3103", i64* @_gasrem, align 8 + %"$gasrem_3104" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3105" = icmp ugt i64 1, %"$gasrem_3104" + br i1 %"$gascmp_3105", label %"$out_of_gas_3106", label %"$have_gas_3107" + +"$out_of_gas_3106": ; preds = %"$have_gas_3102" + call void @_out_of_gas() + br label %"$have_gas_3107" + +"$have_gas_3107": ; preds = %"$out_of_gas_3106", %"$have_gas_3102" + %"$consume_3108" = sub i64 %"$gasrem_3104", 1 + store i64 %"$consume_3108", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_3109" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3110" = icmp ugt i64 1, %"$gasrem_3109" + br i1 %"$gascmp_3110", label %"$out_of_gas_3111", label %"$have_gas_3112" + +"$out_of_gas_3111": ; preds = %"$have_gas_3107" + call void @_out_of_gas() + br label %"$have_gas_3112" + +"$have_gas_3112": ; preds = %"$out_of_gas_3111", %"$have_gas_3107" + %"$consume_3113" = sub i64 %"$gasrem_3109", 1 + store i64 %"$consume_3113", i64* @_gasrem, align 8 + %"$msgobj_3114_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3114_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3114_salloc_load", i64 125) + %"$msgobj_3114_salloc" = bitcast i8* %"$msgobj_3114_salloc_salloc" to [125 x i8]* + %"$msgobj_3114" = bitcast [125 x i8]* %"$msgobj_3114_salloc" to i8* + store i8 3, i8* %"$msgobj_3114", align 1 + %"$msgobj_fname_3116" = getelementptr i8, i8* %"$msgobj_3114", i32 1 + %"$msgobj_fname_3117" = bitcast i8* %"$msgobj_fname_3116" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3115", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3117", align 8 + %"$msgobj_td_3118" = getelementptr i8, i8* %"$msgobj_3114", i32 17 + %"$msgobj_td_3119" = bitcast i8* %"$msgobj_td_3118" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3119", align 8 + %"$support_contract_3120" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_3121" = getelementptr i8, i8* %"$msgobj_3114", i32 25 + %"$msgobj_v_3122" = bitcast i8* %"$msgobj_v_3121" to [20 x i8]* + store [20 x i8] %"$support_contract_3120", [20 x i8]* %"$msgobj_v_3122", align 1 + %"$msgobj_fname_3124" = getelementptr i8, i8* %"$msgobj_3114", i32 45 + %"$msgobj_fname_3125" = bitcast i8* %"$msgobj_fname_3124" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3123", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3125", align 8 + %"$msgobj_td_3126" = getelementptr i8, i8* %"$msgobj_3114", i32 61 + %"$msgobj_td_3127" = bitcast i8* %"$msgobj_td_3126" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3127", align 8 + %"$msgobj_v_3129" = getelementptr i8, i8* %"$msgobj_3114", i32 69 + %"$msgobj_v_3130" = bitcast i8* %"$msgobj_v_3129" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_3128", i32 0, i32 0), i32 9 }, %String* %"$msgobj_v_3130", align 8 + %"$msgobj_fname_3132" = getelementptr i8, i8* %"$msgobj_3114", i32 85 + %"$msgobj_fname_3133" = bitcast i8* %"$msgobj_fname_3132" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3131", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3133", align 8 + %"$msgobj_td_3134" = getelementptr i8, i8* %"$msgobj_3114", i32 101 + %"$msgobj_td_3135" = bitcast i8* %"$msgobj_td_3134" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3135", align 8 + %"$amount_3136" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_3137" = getelementptr i8, i8* %"$msgobj_3114", i32 109 + %"$msgobj_v_3138" = bitcast i8* %"$msgobj_v_3137" to %Uint128* + store %Uint128 %"$amount_3136", %Uint128* %"$msgobj_v_3138", align 8 + store i8* %"$msgobj_3114", i8** %msg1, align 8, !dbg !275 + %"$gasrem_3140" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3141" = icmp ugt i64 1, %"$gasrem_3140" + br i1 %"$gascmp_3141", label %"$out_of_gas_3142", label %"$have_gas_3143" + +"$out_of_gas_3142": ; preds = %"$have_gas_3112" + call void @_out_of_gas() + br label %"$have_gas_3143" + +"$have_gas_3143": ; preds = %"$out_of_gas_3142", %"$have_gas_3112" + %"$consume_3144" = sub i64 %"$gasrem_3140", 1 + store i64 %"$consume_3144", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_3145" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3146" = icmp ugt i64 1, %"$gasrem_3145" + br i1 %"$gascmp_3146", label %"$out_of_gas_3147", label %"$have_gas_3148" + +"$out_of_gas_3147": ; preds = %"$have_gas_3143" + call void @_out_of_gas() + br label %"$have_gas_3148" + +"$have_gas_3148": ; preds = %"$out_of_gas_3147", %"$have_gas_3143" + %"$consume_3149" = sub i64 %"$gasrem_3145", 1 + store i64 %"$consume_3149", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_35" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3150" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3151" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3150", 0 + %"$accounting_tests.one_msg_envptr_3152" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3150", 1 + %"$msg1_3153" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_3154" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3151"(i8* %"$accounting_tests.one_msg_envptr_3152", i8* %"$msg1_3153"), !dbg !276 + store %TName_List_Message* %"$accounting_tests.one_msg_call_3154", %TName_List_Message** %"$accounting_tests.one_msg_35", align 8, !dbg !276 + %"$$accounting_tests.one_msg_35_3155" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_35", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_35_3155", %TName_List_Message** %msgs1, align 8, !dbg !276 + %"$msgs1_3156" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_3156_3157" = bitcast %TName_List_Message* %"$msgs1_3156" to i8* + %"$_literal_cost_call_3158" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_3156_3157") + %"$gasrem_3159" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3160" = icmp ugt i64 %"$_literal_cost_call_3158", %"$gasrem_3159" + br i1 %"$gascmp_3160", label %"$out_of_gas_3161", label %"$have_gas_3162" + +"$out_of_gas_3161": ; preds = %"$have_gas_3148" + call void @_out_of_gas() + br label %"$have_gas_3162" + +"$have_gas_3162": ; preds = %"$out_of_gas_3161", %"$have_gas_3148" + %"$consume_3163" = sub i64 %"$gasrem_3159", %"$_literal_cost_call_3158" + store i64 %"$consume_3163", i64* @_gasrem, align 8 + %"$execptr_load_3164" = load i8*, i8** @_execptr, align 8 + %"$msgs1_3165" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_3164", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_3165"), !dbg !277 + %"$gasrem_3166" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3167" = icmp ugt i64 1, %"$gasrem_3166" + br i1 %"$gascmp_3167", label %"$out_of_gas_3168", label %"$have_gas_3169" + +"$out_of_gas_3168": ; preds = %"$have_gas_3162" + call void @_out_of_gas() + br label %"$have_gas_3169" + +"$have_gas_3169": ; preds = %"$out_of_gas_3168", %"$have_gas_3162" + %"$consume_3170" = sub i64 %"$gasrem_3166", 1 + store i64 %"$consume_3170", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_3171" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3172" = icmp ugt i64 1, %"$gasrem_3171" + br i1 %"$gascmp_3172", label %"$out_of_gas_3173", label %"$have_gas_3174" + +"$out_of_gas_3173": ; preds = %"$have_gas_3169" + call void @_out_of_gas() + br label %"$have_gas_3174" + +"$have_gas_3174": ; preds = %"$out_of_gas_3173", %"$have_gas_3169" + %"$consume_3175" = sub i64 %"$gasrem_3171", 1 + store i64 %"$consume_3175", i64* @_gasrem, align 8 + %"$msgobj_3176_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3176_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3176_salloc_load", i64 165) + %"$msgobj_3176_salloc" = bitcast i8* %"$msgobj_3176_salloc_salloc" to [165 x i8]* + %"$msgobj_3176" = bitcast [165 x i8]* %"$msgobj_3176_salloc" to i8* + store i8 4, i8* %"$msgobj_3176", align 1 + %"$msgobj_fname_3178" = getelementptr i8, i8* %"$msgobj_3176", i32 1 + %"$msgobj_fname_3179" = bitcast i8* %"$msgobj_fname_3178" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3177", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3179", align 8 + %"$msgobj_td_3180" = getelementptr i8, i8* %"$msgobj_3176", i32 17 + %"$msgobj_td_3181" = bitcast i8* %"$msgobj_td_3180" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3181", align 8 + %"$_this_address_3182" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_3183" = getelementptr i8, i8* %"$msgobj_3176", i32 25 + %"$msgobj_v_3184" = bitcast i8* %"$msgobj_v_3183" to [20 x i8]* + store [20 x i8] %"$_this_address_3182", [20 x i8]* %"$msgobj_v_3184", align 1 + %"$msgobj_fname_3186" = getelementptr i8, i8* %"$msgobj_3176", i32 45 + %"$msgobj_fname_3187" = bitcast i8* %"$msgobj_fname_3186" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3185", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3187", align 8 + %"$msgobj_td_3188" = getelementptr i8, i8* %"$msgobj_3176", i32 61 + %"$msgobj_td_3189" = bitcast i8* %"$msgobj_td_3188" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3189", align 8 + %"$msgobj_v_3191" = getelementptr i8, i8* %"$msgobj_3176", i32 69 + %"$msgobj_v_3192" = bitcast i8* %"$msgobj_v_3191" to %String* + store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_3190", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_3192", align 8 + %"$msgobj_fname_3194" = getelementptr i8, i8* %"$msgobj_3176", i32 85 + %"$msgobj_fname_3195" = bitcast i8* %"$msgobj_fname_3194" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3193", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3195", align 8 + %"$msgobj_td_3196" = getelementptr i8, i8* %"$msgobj_3176", i32 101 + %"$msgobj_td_3197" = bitcast i8* %"$msgobj_td_3196" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3197", align 8 + %"$msgobj_v_3198" = getelementptr i8, i8* %"$msgobj_3176", i32 109 + %"$msgobj_v_3199" = bitcast i8* %"$msgobj_v_3198" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_3199", align 8 + %"$msgobj_fname_3201" = getelementptr i8, i8* %"$msgobj_3176", i32 125 + %"$msgobj_fname_3202" = bitcast i8* %"$msgobj_fname_3201" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_3200", i32 0, i32 0), i32 16 }, %String* %"$msgobj_fname_3202", align 8 + %"$msgobj_td_3203" = getelementptr i8, i8* %"$msgobj_3176", i32 141 + %"$msgobj_td_3204" = bitcast i8* %"$msgobj_td_3203" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3204", align 8 + %"$bal_3205" = load %Uint128, %Uint128* %bal, align 8 + %"$msgobj_v_3206" = getelementptr i8, i8* %"$msgobj_3176", i32 149 + %"$msgobj_v_3207" = bitcast i8* %"$msgobj_v_3206" to %Uint128* + store %Uint128 %"$bal_3205", %Uint128* %"$msgobj_v_3207", align 8 + store i8* %"$msgobj_3176", i8** %msg2, align 8, !dbg !278 + %"$gasrem_3209" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3210" = icmp ugt i64 1, %"$gasrem_3209" + br i1 %"$gascmp_3210", label %"$out_of_gas_3211", label %"$have_gas_3212" + +"$out_of_gas_3211": ; preds = %"$have_gas_3174" + call void @_out_of_gas() + br label %"$have_gas_3212" + +"$have_gas_3212": ; preds = %"$out_of_gas_3211", %"$have_gas_3174" + %"$consume_3213" = sub i64 %"$gasrem_3209", 1 + store i64 %"$consume_3213", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_3214" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3215" = icmp ugt i64 1, %"$gasrem_3214" + br i1 %"$gascmp_3215", label %"$out_of_gas_3216", label %"$have_gas_3217" + +"$out_of_gas_3216": ; preds = %"$have_gas_3212" + call void @_out_of_gas() + br label %"$have_gas_3217" + +"$have_gas_3217": ; preds = %"$out_of_gas_3216", %"$have_gas_3212" + %"$consume_3218" = sub i64 %"$gasrem_3214", 1 + store i64 %"$consume_3218", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_34" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3219" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3220" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3219", 0 + %"$accounting_tests.one_msg_envptr_3221" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3219", 1 + %"$msg2_3222" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_3223" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3220"(i8* %"$accounting_tests.one_msg_envptr_3221", i8* %"$msg2_3222"), !dbg !279 + store %TName_List_Message* %"$accounting_tests.one_msg_call_3223", %TName_List_Message** %"$accounting_tests.one_msg_34", align 8, !dbg !279 + %"$$accounting_tests.one_msg_34_3224" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_34", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_34_3224", %TName_List_Message** %msgs2, align 8, !dbg !279 + %"$msgs2_3225" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_3225_3226" = bitcast %TName_List_Message* %"$msgs2_3225" to i8* + %"$_literal_cost_call_3227" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_3225_3226") + %"$gasrem_3228" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3229" = icmp ugt i64 %"$_literal_cost_call_3227", %"$gasrem_3228" + br i1 %"$gascmp_3229", label %"$out_of_gas_3230", label %"$have_gas_3231" + +"$out_of_gas_3230": ; preds = %"$have_gas_3217" + call void @_out_of_gas() + br label %"$have_gas_3231" + +"$have_gas_3231": ; preds = %"$out_of_gas_3230", %"$have_gas_3217" + %"$consume_3232" = sub i64 %"$gasrem_3228", %"$_literal_cost_call_3227" + store i64 %"$consume_3232", i64* @_gasrem, align 8 + %"$execptr_load_3233" = load i8*, i8** @_execptr, align 8 + %"$msgs2_3234" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_3233", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_3234"), !dbg !280 + ret void +} + +define void @Test_Send_7(i8* %0) !dbg !281 { +entry: + %"$_amount_3236" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3237" = bitcast i8* %"$_amount_3236" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3237", align 8 + %"$_origin_3238" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3239" = bitcast i8* %"$_origin_3238" to [20 x i8]* + %"$_sender_3240" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3241" = bitcast i8* %"$_sender_3240" to [20 x i8]* + call void @"$Test_Send_7_3064"(%Uint128 %_amount, [20 x i8]* %"$_origin_3239", [20 x i8]* %"$_sender_3241"), !dbg !282 + ret void +} + +define internal void @"$Test_Send_8_3242"(%Uint128 %_amount, [20 x i8]* %"$_origin_3243", [20 x i8]* %"$_sender_3244") !dbg !283 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3243", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3244", align 1 + %"$gasrem_3245" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3246" = icmp ugt i64 1, %"$gasrem_3245" + br i1 %"$gascmp_3246", label %"$out_of_gas_3247", label %"$have_gas_3248" + +"$out_of_gas_3247": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3248" + +"$have_gas_3248": ; preds = %"$out_of_gas_3247", %entry + %"$consume_3249" = sub i64 %"$gasrem_3245", 1 + store i64 %"$consume_3249", i64* @_gasrem, align 8 + %"$AssertReset__origin_3250" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_3250", align 1 + %"$AssertReset__sender_3251" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_3251", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_3250", [20 x i8]* %"$AssertReset__sender_3251"), !dbg !284 + %amount = alloca %Uint128, align 8 + %"$execptr_load_3253" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3254" = call i8* @_fetch_field(i8* %"$execptr_load_3253", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3252", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !285 + %"$amount_3255" = bitcast i8* %"$amount_call_3254" to %Uint128* + %"$amount_3256" = load %Uint128, %Uint128* %"$amount_3255", align 8 + store %Uint128 %"$amount_3256", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3257" = alloca %Uint128, align 8 + %"$amount_3258" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3258", %Uint128* %"$_literal_cost_amount_3257", align 8 + %"$$_literal_cost_amount_3257_3259" = bitcast %Uint128* %"$_literal_cost_amount_3257" to i8* + %"$_literal_cost_call_3260" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3257_3259") + %"$gasadd_3261" = add i64 %"$_literal_cost_call_3260", 0 + %"$gasrem_3262" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3263" = icmp ugt i64 %"$gasadd_3261", %"$gasrem_3262" + br i1 %"$gascmp_3263", label %"$out_of_gas_3264", label %"$have_gas_3265" + +"$out_of_gas_3264": ; preds = %"$have_gas_3248" + call void @_out_of_gas() + br label %"$have_gas_3265" + +"$have_gas_3265": ; preds = %"$out_of_gas_3264", %"$have_gas_3248" + %"$consume_3266" = sub i64 %"$gasrem_3262", %"$gasadd_3261" + store i64 %"$consume_3266", i64* @_gasrem, align 8 + %"$gasrem_3267" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3268" = icmp ugt i64 1, %"$gasrem_3267" + br i1 %"$gascmp_3268", label %"$out_of_gas_3269", label %"$have_gas_3270" + +"$out_of_gas_3269": ; preds = %"$have_gas_3265" + call void @_out_of_gas() + br label %"$have_gas_3270" + +"$have_gas_3270": ; preds = %"$out_of_gas_3269", %"$have_gas_3265" + %"$consume_3271" = sub i64 %"$gasrem_3267", 1 + store i64 %"$consume_3271", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_3272" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3273" = icmp ugt i64 1, %"$gasrem_3272" + br i1 %"$gascmp_3273", label %"$out_of_gas_3274", label %"$have_gas_3275" + +"$out_of_gas_3274": ; preds = %"$have_gas_3270" + call void @_out_of_gas() + br label %"$have_gas_3275" + +"$have_gas_3275": ; preds = %"$out_of_gas_3274", %"$have_gas_3270" + %"$consume_3276" = sub i64 %"$gasrem_3272", 1 + store i64 %"$consume_3276", i64* @_gasrem, align 8 + %"$msgobj_3277_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3277_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3277_salloc_load", i64 125) + %"$msgobj_3277_salloc" = bitcast i8* %"$msgobj_3277_salloc_salloc" to [125 x i8]* + %"$msgobj_3277" = bitcast [125 x i8]* %"$msgobj_3277_salloc" to i8* + store i8 3, i8* %"$msgobj_3277", align 1 + %"$msgobj_fname_3279" = getelementptr i8, i8* %"$msgobj_3277", i32 1 + %"$msgobj_fname_3280" = bitcast i8* %"$msgobj_fname_3279" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3278", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3280", align 8 + %"$msgobj_td_3281" = getelementptr i8, i8* %"$msgobj_3277", i32 17 + %"$msgobj_td_3282" = bitcast i8* %"$msgobj_td_3281" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3282", align 8 + %"$support_contract_3283" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_3284" = getelementptr i8, i8* %"$msgobj_3277", i32 25 + %"$msgobj_v_3285" = bitcast i8* %"$msgobj_v_3284" to [20 x i8]* + store [20 x i8] %"$support_contract_3283", [20 x i8]* %"$msgobj_v_3285", align 1 + %"$msgobj_fname_3287" = getelementptr i8, i8* %"$msgobj_3277", i32 45 + %"$msgobj_fname_3288" = bitcast i8* %"$msgobj_fname_3287" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3286", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3288", align 8 + %"$msgobj_td_3289" = getelementptr i8, i8* %"$msgobj_3277", i32 61 + %"$msgobj_td_3290" = bitcast i8* %"$msgobj_td_3289" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3290", align 8 + %"$msgobj_v_3292" = getelementptr i8, i8* %"$msgobj_3277", i32 69 + %"$msgobj_v_3293" = bitcast i8* %"$msgobj_v_3292" to %String* + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_3291", i32 0, i32 0), i32 21 }, %String* %"$msgobj_v_3293", align 8 + %"$msgobj_fname_3295" = getelementptr i8, i8* %"$msgobj_3277", i32 85 + %"$msgobj_fname_3296" = bitcast i8* %"$msgobj_fname_3295" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3294", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3296", align 8 + %"$msgobj_td_3297" = getelementptr i8, i8* %"$msgobj_3277", i32 101 + %"$msgobj_td_3298" = bitcast i8* %"$msgobj_td_3297" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3298", align 8 + %"$amount_3299" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_3300" = getelementptr i8, i8* %"$msgobj_3277", i32 109 + %"$msgobj_v_3301" = bitcast i8* %"$msgobj_v_3300" to %Uint128* + store %Uint128 %"$amount_3299", %Uint128* %"$msgobj_v_3301", align 8 + store i8* %"$msgobj_3277", i8** %msg1, align 8, !dbg !286 + %"$gasrem_3303" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3304" = icmp ugt i64 1, %"$gasrem_3303" + br i1 %"$gascmp_3304", label %"$out_of_gas_3305", label %"$have_gas_3306" + +"$out_of_gas_3305": ; preds = %"$have_gas_3275" + call void @_out_of_gas() + br label %"$have_gas_3306" + +"$have_gas_3306": ; preds = %"$out_of_gas_3305", %"$have_gas_3275" + %"$consume_3307" = sub i64 %"$gasrem_3303", 1 + store i64 %"$consume_3307", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_3308" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3309" = icmp ugt i64 1, %"$gasrem_3308" + br i1 %"$gascmp_3309", label %"$out_of_gas_3310", label %"$have_gas_3311" + +"$out_of_gas_3310": ; preds = %"$have_gas_3306" + call void @_out_of_gas() + br label %"$have_gas_3311" + +"$have_gas_3311": ; preds = %"$out_of_gas_3310", %"$have_gas_3306" + %"$consume_3312" = sub i64 %"$gasrem_3308", 1 + store i64 %"$consume_3312", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_37" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3313" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3314" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3313", 0 + %"$accounting_tests.one_msg_envptr_3315" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3313", 1 + %"$msg1_3316" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_3317" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3314"(i8* %"$accounting_tests.one_msg_envptr_3315", i8* %"$msg1_3316"), !dbg !287 + store %TName_List_Message* %"$accounting_tests.one_msg_call_3317", %TName_List_Message** %"$accounting_tests.one_msg_37", align 8, !dbg !287 + %"$$accounting_tests.one_msg_37_3318" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_37", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_37_3318", %TName_List_Message** %msgs1, align 8, !dbg !287 + %"$msgs1_3319" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_3319_3320" = bitcast %TName_List_Message* %"$msgs1_3319" to i8* + %"$_literal_cost_call_3321" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_3319_3320") + %"$gasrem_3322" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3323" = icmp ugt i64 %"$_literal_cost_call_3321", %"$gasrem_3322" + br i1 %"$gascmp_3323", label %"$out_of_gas_3324", label %"$have_gas_3325" + +"$out_of_gas_3324": ; preds = %"$have_gas_3311" + call void @_out_of_gas() + br label %"$have_gas_3325" + +"$have_gas_3325": ; preds = %"$out_of_gas_3324", %"$have_gas_3311" + %"$consume_3326" = sub i64 %"$gasrem_3322", %"$_literal_cost_call_3321" + store i64 %"$consume_3326", i64* @_gasrem, align 8 + %"$execptr_load_3327" = load i8*, i8** @_execptr, align 8 + %"$msgs1_3328" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_3327", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_3328"), !dbg !288 + %support_bal = alloca %Uint128, align 8 + %"$execptr_load_3330" = load i8*, i8** @_execptr, align 8 + %"$support_bal_support_contract_3331" = alloca [20 x i8], align 1 + %"$support_contract_3332" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + store [20 x i8] %"$support_contract_3332", [20 x i8]* %"$support_bal_support_contract_3331", align 1 + %"$support_bal_call_3333" = call i8* @_fetch_remote_field(i8* %"$execptr_load_3330", [20 x i8]* %"$support_bal_support_contract_3331", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_3329", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !289 + %"$support_bal_3334" = bitcast i8* %"$support_bal_call_3333" to %Uint128* + %"$support_bal_3335" = load %Uint128, %Uint128* %"$support_bal_3334", align 8 + store %Uint128 %"$support_bal_3335", %Uint128* %support_bal, align 8 + %"$_literal_cost_support_bal_3336" = alloca %Uint128, align 8 + %"$support_bal_3337" = load %Uint128, %Uint128* %support_bal, align 8 + store %Uint128 %"$support_bal_3337", %Uint128* %"$_literal_cost_support_bal_3336", align 8 + %"$$_literal_cost_support_bal_3336_3338" = bitcast %Uint128* %"$_literal_cost_support_bal_3336" to i8* + %"$_literal_cost_call_3339" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_support_bal_3336_3338") + %"$gasadd_3340" = add i64 %"$_literal_cost_call_3339", 0 + %"$gasrem_3341" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3342" = icmp ugt i64 %"$gasadd_3340", %"$gasrem_3341" + br i1 %"$gascmp_3342", label %"$out_of_gas_3343", label %"$have_gas_3344" + +"$out_of_gas_3343": ; preds = %"$have_gas_3325" + call void @_out_of_gas() + br label %"$have_gas_3344" + +"$have_gas_3344": ; preds = %"$out_of_gas_3343", %"$have_gas_3325" + %"$consume_3345" = sub i64 %"$gasrem_3341", %"$gasadd_3340" + store i64 %"$consume_3345", i64* @_gasrem, align 8 + %"$gasrem_3346" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3347" = icmp ugt i64 1, %"$gasrem_3346" + br i1 %"$gascmp_3347", label %"$out_of_gas_3348", label %"$have_gas_3349" + +"$out_of_gas_3348": ; preds = %"$have_gas_3344" + call void @_out_of_gas() + br label %"$have_gas_3349" + +"$have_gas_3349": ; preds = %"$out_of_gas_3348", %"$have_gas_3344" + %"$consume_3350" = sub i64 %"$gasrem_3346", 1 + store i64 %"$consume_3350", i64* @_gasrem, align 8 + %expected_balance = alloca %Uint128, align 8 + %"$support_bal_3351" = load %Uint128, %Uint128* %support_bal, align 8 + %"$amount_3352" = load %Uint128, %Uint128* %amount, align 8 + %"$add_call_3353" = call %Uint128 @_add_Uint128(%Uint128 %"$support_bal_3351", %Uint128 %"$amount_3352"), !dbg !290 + store %Uint128 %"$add_call_3353", %Uint128* %expected_balance, align 8, !dbg !290 + %"$gasrem_3354" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3355" = icmp ugt i64 1, %"$gasrem_3354" + br i1 %"$gascmp_3355", label %"$out_of_gas_3356", label %"$have_gas_3357" + +"$out_of_gas_3356": ; preds = %"$have_gas_3349" + call void @_out_of_gas() + br label %"$have_gas_3357" + +"$have_gas_3357": ; preds = %"$out_of_gas_3356", %"$have_gas_3349" + %"$consume_3358" = sub i64 %"$gasrem_3354", 1 + store i64 %"$consume_3358", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_3359" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3360" = icmp ugt i64 1, %"$gasrem_3359" + br i1 %"$gascmp_3360", label %"$out_of_gas_3361", label %"$have_gas_3362" + +"$out_of_gas_3361": ; preds = %"$have_gas_3357" + call void @_out_of_gas() + br label %"$have_gas_3362" + +"$have_gas_3362": ; preds = %"$out_of_gas_3361", %"$have_gas_3357" + %"$consume_3363" = sub i64 %"$gasrem_3359", 1 + store i64 %"$consume_3363", i64* @_gasrem, align 8 + %"$msgobj_3364_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3364_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3364_salloc_load", i64 165) + %"$msgobj_3364_salloc" = bitcast i8* %"$msgobj_3364_salloc_salloc" to [165 x i8]* + %"$msgobj_3364" = bitcast [165 x i8]* %"$msgobj_3364_salloc" to i8* + store i8 4, i8* %"$msgobj_3364", align 1 + %"$msgobj_fname_3366" = getelementptr i8, i8* %"$msgobj_3364", i32 1 + %"$msgobj_fname_3367" = bitcast i8* %"$msgobj_fname_3366" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3365", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3367", align 8 + %"$msgobj_td_3368" = getelementptr i8, i8* %"$msgobj_3364", i32 17 + %"$msgobj_td_3369" = bitcast i8* %"$msgobj_td_3368" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3369", align 8 + %"$_this_address_3370" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_3371" = getelementptr i8, i8* %"$msgobj_3364", i32 25 + %"$msgobj_v_3372" = bitcast i8* %"$msgobj_v_3371" to [20 x i8]* + store [20 x i8] %"$_this_address_3370", [20 x i8]* %"$msgobj_v_3372", align 1 + %"$msgobj_fname_3374" = getelementptr i8, i8* %"$msgobj_3364", i32 45 + %"$msgobj_fname_3375" = bitcast i8* %"$msgobj_fname_3374" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3373", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3375", align 8 + %"$msgobj_td_3376" = getelementptr i8, i8* %"$msgobj_3364", i32 61 + %"$msgobj_td_3377" = bitcast i8* %"$msgobj_td_3376" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3377", align 8 + %"$msgobj_v_3379" = getelementptr i8, i8* %"$msgobj_3364", i32 69 + %"$msgobj_v_3380" = bitcast i8* %"$msgobj_v_3379" to %String* + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_3378", i32 0, i32 0), i32 21 }, %String* %"$msgobj_v_3380", align 8 + %"$msgobj_fname_3382" = getelementptr i8, i8* %"$msgobj_3364", i32 85 + %"$msgobj_fname_3383" = bitcast i8* %"$msgobj_fname_3382" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3381", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3383", align 8 + %"$msgobj_td_3384" = getelementptr i8, i8* %"$msgobj_3364", i32 101 + %"$msgobj_td_3385" = bitcast i8* %"$msgobj_td_3384" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3385", align 8 + %"$msgobj_v_3386" = getelementptr i8, i8* %"$msgobj_3364", i32 109 + %"$msgobj_v_3387" = bitcast i8* %"$msgobj_v_3386" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_3387", align 8 + %"$msgobj_fname_3389" = getelementptr i8, i8* %"$msgobj_3364", i32 125 + %"$msgobj_fname_3390" = bitcast i8* %"$msgobj_fname_3389" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_3388", i32 0, i32 0), i32 16 }, %String* %"$msgobj_fname_3390", align 8 + %"$msgobj_td_3391" = getelementptr i8, i8* %"$msgobj_3364", i32 141 + %"$msgobj_td_3392" = bitcast i8* %"$msgobj_td_3391" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3392", align 8 + %"$expected_balance_3393" = load %Uint128, %Uint128* %expected_balance, align 8 + %"$msgobj_v_3394" = getelementptr i8, i8* %"$msgobj_3364", i32 149 + %"$msgobj_v_3395" = bitcast i8* %"$msgobj_v_3394" to %Uint128* + store %Uint128 %"$expected_balance_3393", %Uint128* %"$msgobj_v_3395", align 8 + store i8* %"$msgobj_3364", i8** %msg2, align 8, !dbg !291 + %"$gasrem_3397" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3398" = icmp ugt i64 1, %"$gasrem_3397" + br i1 %"$gascmp_3398", label %"$out_of_gas_3399", label %"$have_gas_3400" + +"$out_of_gas_3399": ; preds = %"$have_gas_3362" + call void @_out_of_gas() + br label %"$have_gas_3400" + +"$have_gas_3400": ; preds = %"$out_of_gas_3399", %"$have_gas_3362" + %"$consume_3401" = sub i64 %"$gasrem_3397", 1 + store i64 %"$consume_3401", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_3402" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3403" = icmp ugt i64 1, %"$gasrem_3402" + br i1 %"$gascmp_3403", label %"$out_of_gas_3404", label %"$have_gas_3405" + +"$out_of_gas_3404": ; preds = %"$have_gas_3400" + call void @_out_of_gas() + br label %"$have_gas_3405" + +"$have_gas_3405": ; preds = %"$out_of_gas_3404", %"$have_gas_3400" + %"$consume_3406" = sub i64 %"$gasrem_3402", 1 + store i64 %"$consume_3406", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_36" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3407" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3408" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3407", 0 + %"$accounting_tests.one_msg_envptr_3409" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3407", 1 + %"$msg2_3410" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_3411" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3408"(i8* %"$accounting_tests.one_msg_envptr_3409", i8* %"$msg2_3410"), !dbg !292 + store %TName_List_Message* %"$accounting_tests.one_msg_call_3411", %TName_List_Message** %"$accounting_tests.one_msg_36", align 8, !dbg !292 + %"$$accounting_tests.one_msg_36_3412" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_36", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_36_3412", %TName_List_Message** %msgs2, align 8, !dbg !292 + %"$msgs2_3413" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_3413_3414" = bitcast %TName_List_Message* %"$msgs2_3413" to i8* + %"$_literal_cost_call_3415" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_3413_3414") + %"$gasrem_3416" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3417" = icmp ugt i64 %"$_literal_cost_call_3415", %"$gasrem_3416" + br i1 %"$gascmp_3417", label %"$out_of_gas_3418", label %"$have_gas_3419" + +"$out_of_gas_3418": ; preds = %"$have_gas_3405" + call void @_out_of_gas() + br label %"$have_gas_3419" + +"$have_gas_3419": ; preds = %"$out_of_gas_3418", %"$have_gas_3405" + %"$consume_3420" = sub i64 %"$gasrem_3416", %"$_literal_cost_call_3415" + store i64 %"$consume_3420", i64* @_gasrem, align 8 + %"$execptr_load_3421" = load i8*, i8** @_execptr, align 8 + %"$msgs2_3422" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_3421", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_3422"), !dbg !293 + ret void +} + +declare %Uint128 @_add_Uint128(%Uint128, %Uint128) + +define void @Test_Send_8(i8* %0) !dbg !294 { +entry: + %"$_amount_3424" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3425" = bitcast i8* %"$_amount_3424" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3425", align 8 + %"$_origin_3426" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3427" = bitcast i8* %"$_origin_3426" to [20 x i8]* + %"$_sender_3428" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3429" = bitcast i8* %"$_sender_3428" to [20 x i8]* + call void @"$Test_Send_8_3242"(%Uint128 %_amount, [20 x i8]* %"$_origin_3427", [20 x i8]* %"$_sender_3429"), !dbg !295 + ret void +} + +define internal void @"$Test_Send_9_3430"(%Uint128 %_amount, [20 x i8]* %"$_origin_3431", [20 x i8]* %"$_sender_3432") !dbg !296 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3431", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3432", align 1 + %"$gasrem_3433" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3434" = icmp ugt i64 1, %"$gasrem_3433" + br i1 %"$gascmp_3434", label %"$out_of_gas_3435", label %"$have_gas_3436" + +"$out_of_gas_3435": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3436" + +"$have_gas_3436": ; preds = %"$out_of_gas_3435", %entry + %"$consume_3437" = sub i64 %"$gasrem_3433", 1 + store i64 %"$consume_3437", i64* @_gasrem, align 8 + %"$AssertReset__origin_3438" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_3438", align 1 + %"$AssertReset__sender_3439" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_3439", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_3438", [20 x i8]* %"$AssertReset__sender_3439"), !dbg !297 + %amount = alloca %Uint128, align 8 + %"$execptr_load_3441" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3442" = call i8* @_fetch_field(i8* %"$execptr_load_3441", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3440", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !298 + %"$amount_3443" = bitcast i8* %"$amount_call_3442" to %Uint128* + %"$amount_3444" = load %Uint128, %Uint128* %"$amount_3443", align 8 + store %Uint128 %"$amount_3444", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3445" = alloca %Uint128, align 8 + %"$amount_3446" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3446", %Uint128* %"$_literal_cost_amount_3445", align 8 + %"$$_literal_cost_amount_3445_3447" = bitcast %Uint128* %"$_literal_cost_amount_3445" to i8* + %"$_literal_cost_call_3448" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3445_3447") + %"$gasadd_3449" = add i64 %"$_literal_cost_call_3448", 0 + %"$gasrem_3450" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3451" = icmp ugt i64 %"$gasadd_3449", %"$gasrem_3450" + br i1 %"$gascmp_3451", label %"$out_of_gas_3452", label %"$have_gas_3453" + +"$out_of_gas_3452": ; preds = %"$have_gas_3436" + call void @_out_of_gas() + br label %"$have_gas_3453" + +"$have_gas_3453": ; preds = %"$out_of_gas_3452", %"$have_gas_3436" + %"$consume_3454" = sub i64 %"$gasrem_3450", %"$gasadd_3449" + store i64 %"$consume_3454", i64* @_gasrem, align 8 + %"$gasrem_3455" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3456" = icmp ugt i64 1, %"$gasrem_3455" + br i1 %"$gascmp_3456", label %"$out_of_gas_3457", label %"$have_gas_3458" + +"$out_of_gas_3457": ; preds = %"$have_gas_3453" + call void @_out_of_gas() + br label %"$have_gas_3458" + +"$have_gas_3458": ; preds = %"$out_of_gas_3457", %"$have_gas_3453" + %"$consume_3459" = sub i64 %"$gasrem_3455", 1 + store i64 %"$consume_3459", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_3460" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3461" = icmp ugt i64 1, %"$gasrem_3460" + br i1 %"$gascmp_3461", label %"$out_of_gas_3462", label %"$have_gas_3463" + +"$out_of_gas_3462": ; preds = %"$have_gas_3458" + call void @_out_of_gas() + br label %"$have_gas_3463" + +"$have_gas_3463": ; preds = %"$out_of_gas_3462", %"$have_gas_3458" + %"$consume_3464" = sub i64 %"$gasrem_3460", 1 + store i64 %"$consume_3464", i64* @_gasrem, align 8 + %"$msgobj_3465_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3465_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3465_salloc_load", i64 125) + %"$msgobj_3465_salloc" = bitcast i8* %"$msgobj_3465_salloc_salloc" to [125 x i8]* + %"$msgobj_3465" = bitcast [125 x i8]* %"$msgobj_3465_salloc" to i8* + store i8 3, i8* %"$msgobj_3465", align 1 + %"$msgobj_fname_3467" = getelementptr i8, i8* %"$msgobj_3465", i32 1 + %"$msgobj_fname_3468" = bitcast i8* %"$msgobj_fname_3467" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3466", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3468", align 8 + %"$msgobj_td_3469" = getelementptr i8, i8* %"$msgobj_3465", i32 17 + %"$msgobj_td_3470" = bitcast i8* %"$msgobj_td_3469" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3470", align 8 + %"$support_contract_3471" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_3472" = getelementptr i8, i8* %"$msgobj_3465", i32 25 + %"$msgobj_v_3473" = bitcast i8* %"$msgobj_v_3472" to [20 x i8]* + store [20 x i8] %"$support_contract_3471", [20 x i8]* %"$msgobj_v_3473", align 1 + %"$msgobj_fname_3475" = getelementptr i8, i8* %"$msgobj_3465", i32 45 + %"$msgobj_fname_3476" = bitcast i8* %"$msgobj_fname_3475" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3474", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3476", align 8 + %"$msgobj_td_3477" = getelementptr i8, i8* %"$msgobj_3465", i32 61 + %"$msgobj_td_3478" = bitcast i8* %"$msgobj_td_3477" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3478", align 8 + %"$msgobj_v_3480" = getelementptr i8, i8* %"$msgobj_3465", i32 69 + %"$msgobj_v_3481" = bitcast i8* %"$msgobj_v_3480" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_3479", i32 0, i32 0), i32 9 }, %String* %"$msgobj_v_3481", align 8 + %"$msgobj_fname_3483" = getelementptr i8, i8* %"$msgobj_3465", i32 85 + %"$msgobj_fname_3484" = bitcast i8* %"$msgobj_fname_3483" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3482", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3484", align 8 + %"$msgobj_td_3485" = getelementptr i8, i8* %"$msgobj_3465", i32 101 + %"$msgobj_td_3486" = bitcast i8* %"$msgobj_td_3485" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3486", align 8 + %"$amount_3487" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_3488" = getelementptr i8, i8* %"$msgobj_3465", i32 109 + %"$msgobj_v_3489" = bitcast i8* %"$msgobj_v_3488" to %Uint128* + store %Uint128 %"$amount_3487", %Uint128* %"$msgobj_v_3489", align 8 + store i8* %"$msgobj_3465", i8** %msg1, align 8, !dbg !299 + %"$gasrem_3491" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3492" = icmp ugt i64 1, %"$gasrem_3491" + br i1 %"$gascmp_3492", label %"$out_of_gas_3493", label %"$have_gas_3494" + +"$out_of_gas_3493": ; preds = %"$have_gas_3463" + call void @_out_of_gas() + br label %"$have_gas_3494" + +"$have_gas_3494": ; preds = %"$out_of_gas_3493", %"$have_gas_3463" + %"$consume_3495" = sub i64 %"$gasrem_3491", 1 + store i64 %"$consume_3495", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_3496" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3497" = icmp ugt i64 1, %"$gasrem_3496" + br i1 %"$gascmp_3497", label %"$out_of_gas_3498", label %"$have_gas_3499" + +"$out_of_gas_3498": ; preds = %"$have_gas_3494" + call void @_out_of_gas() + br label %"$have_gas_3499" + +"$have_gas_3499": ; preds = %"$out_of_gas_3498", %"$have_gas_3494" + %"$consume_3500" = sub i64 %"$gasrem_3496", 1 + store i64 %"$consume_3500", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_39" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3501" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3502" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3501", 0 + %"$accounting_tests.one_msg_envptr_3503" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3501", 1 + %"$msg1_3504" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_3505" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3502"(i8* %"$accounting_tests.one_msg_envptr_3503", i8* %"$msg1_3504"), !dbg !300 + store %TName_List_Message* %"$accounting_tests.one_msg_call_3505", %TName_List_Message** %"$accounting_tests.one_msg_39", align 8, !dbg !300 + %"$$accounting_tests.one_msg_39_3506" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_39", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_39_3506", %TName_List_Message** %msgs1, align 8, !dbg !300 + %"$msgs1_3507" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_3507_3508" = bitcast %TName_List_Message* %"$msgs1_3507" to i8* + %"$_literal_cost_call_3509" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_3507_3508") + %"$gasrem_3510" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3511" = icmp ugt i64 %"$_literal_cost_call_3509", %"$gasrem_3510" + br i1 %"$gascmp_3511", label %"$out_of_gas_3512", label %"$have_gas_3513" + +"$out_of_gas_3512": ; preds = %"$have_gas_3499" + call void @_out_of_gas() + br label %"$have_gas_3513" + +"$have_gas_3513": ; preds = %"$out_of_gas_3512", %"$have_gas_3499" + %"$consume_3514" = sub i64 %"$gasrem_3510", %"$_literal_cost_call_3509" + store i64 %"$consume_3514", i64* @_gasrem, align 8 + %"$execptr_load_3515" = load i8*, i8** @_execptr, align 8 + %"$msgs1_3516" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_3515", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_3516"), !dbg !301 + %support_bal = alloca %Uint128, align 8 + %"$execptr_load_3518" = load i8*, i8** @_execptr, align 8 + %"$support_bal_support_contract_3519" = alloca [20 x i8], align 1 + %"$support_contract_3520" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + store [20 x i8] %"$support_contract_3520", [20 x i8]* %"$support_bal_support_contract_3519", align 1 + %"$support_bal_call_3521" = call i8* @_fetch_remote_field(i8* %"$execptr_load_3518", [20 x i8]* %"$support_bal_support_contract_3519", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_3517", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !302 + %"$support_bal_3522" = bitcast i8* %"$support_bal_call_3521" to %Uint128* + %"$support_bal_3523" = load %Uint128, %Uint128* %"$support_bal_3522", align 8 + store %Uint128 %"$support_bal_3523", %Uint128* %support_bal, align 8 + %"$_literal_cost_support_bal_3524" = alloca %Uint128, align 8 + %"$support_bal_3525" = load %Uint128, %Uint128* %support_bal, align 8 + store %Uint128 %"$support_bal_3525", %Uint128* %"$_literal_cost_support_bal_3524", align 8 + %"$$_literal_cost_support_bal_3524_3526" = bitcast %Uint128* %"$_literal_cost_support_bal_3524" to i8* + %"$_literal_cost_call_3527" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_support_bal_3524_3526") + %"$gasadd_3528" = add i64 %"$_literal_cost_call_3527", 0 + %"$gasrem_3529" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3530" = icmp ugt i64 %"$gasadd_3528", %"$gasrem_3529" + br i1 %"$gascmp_3530", label %"$out_of_gas_3531", label %"$have_gas_3532" + +"$out_of_gas_3531": ; preds = %"$have_gas_3513" + call void @_out_of_gas() + br label %"$have_gas_3532" + +"$have_gas_3532": ; preds = %"$out_of_gas_3531", %"$have_gas_3513" + %"$consume_3533" = sub i64 %"$gasrem_3529", %"$gasadd_3528" + store i64 %"$consume_3533", i64* @_gasrem, align 8 + %"$gasrem_3534" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3535" = icmp ugt i64 1, %"$gasrem_3534" + br i1 %"$gascmp_3535", label %"$out_of_gas_3536", label %"$have_gas_3537" + +"$out_of_gas_3536": ; preds = %"$have_gas_3532" + call void @_out_of_gas() + br label %"$have_gas_3537" + +"$have_gas_3537": ; preds = %"$out_of_gas_3536", %"$have_gas_3532" + %"$consume_3538" = sub i64 %"$gasrem_3534", 1 + store i64 %"$consume_3538", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_3539" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3540" = icmp ugt i64 1, %"$gasrem_3539" + br i1 %"$gascmp_3540", label %"$out_of_gas_3541", label %"$have_gas_3542" + +"$out_of_gas_3541": ; preds = %"$have_gas_3537" + call void @_out_of_gas() + br label %"$have_gas_3542" + +"$have_gas_3542": ; preds = %"$out_of_gas_3541", %"$have_gas_3537" + %"$consume_3543" = sub i64 %"$gasrem_3539", 1 + store i64 %"$consume_3543", i64* @_gasrem, align 8 + %"$msgobj_3544_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3544_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3544_salloc_load", i64 165) + %"$msgobj_3544_salloc" = bitcast i8* %"$msgobj_3544_salloc_salloc" to [165 x i8]* + %"$msgobj_3544" = bitcast [165 x i8]* %"$msgobj_3544_salloc" to i8* + store i8 4, i8* %"$msgobj_3544", align 1 + %"$msgobj_fname_3546" = getelementptr i8, i8* %"$msgobj_3544", i32 1 + %"$msgobj_fname_3547" = bitcast i8* %"$msgobj_fname_3546" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3545", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3547", align 8 + %"$msgobj_td_3548" = getelementptr i8, i8* %"$msgobj_3544", i32 17 + %"$msgobj_td_3549" = bitcast i8* %"$msgobj_td_3548" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3549", align 8 + %"$_this_address_3550" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_3551" = getelementptr i8, i8* %"$msgobj_3544", i32 25 + %"$msgobj_v_3552" = bitcast i8* %"$msgobj_v_3551" to [20 x i8]* + store [20 x i8] %"$_this_address_3550", [20 x i8]* %"$msgobj_v_3552", align 1 + %"$msgobj_fname_3554" = getelementptr i8, i8* %"$msgobj_3544", i32 45 + %"$msgobj_fname_3555" = bitcast i8* %"$msgobj_fname_3554" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3553", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3555", align 8 + %"$msgobj_td_3556" = getelementptr i8, i8* %"$msgobj_3544", i32 61 + %"$msgobj_td_3557" = bitcast i8* %"$msgobj_td_3556" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3557", align 8 + %"$msgobj_v_3559" = getelementptr i8, i8* %"$msgobj_3544", i32 69 + %"$msgobj_v_3560" = bitcast i8* %"$msgobj_v_3559" to %String* + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_3558", i32 0, i32 0), i32 21 }, %String* %"$msgobj_v_3560", align 8 + %"$msgobj_fname_3562" = getelementptr i8, i8* %"$msgobj_3544", i32 85 + %"$msgobj_fname_3563" = bitcast i8* %"$msgobj_fname_3562" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3561", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3563", align 8 + %"$msgobj_td_3564" = getelementptr i8, i8* %"$msgobj_3544", i32 101 + %"$msgobj_td_3565" = bitcast i8* %"$msgobj_td_3564" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3565", align 8 + %"$msgobj_v_3566" = getelementptr i8, i8* %"$msgobj_3544", i32 109 + %"$msgobj_v_3567" = bitcast i8* %"$msgobj_v_3566" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_3567", align 8 + %"$msgobj_fname_3569" = getelementptr i8, i8* %"$msgobj_3544", i32 125 + %"$msgobj_fname_3570" = bitcast i8* %"$msgobj_fname_3569" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_3568", i32 0, i32 0), i32 16 }, %String* %"$msgobj_fname_3570", align 8 + %"$msgobj_td_3571" = getelementptr i8, i8* %"$msgobj_3544", i32 141 + %"$msgobj_td_3572" = bitcast i8* %"$msgobj_td_3571" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3572", align 8 + %"$support_bal_3573" = load %Uint128, %Uint128* %support_bal, align 8 + %"$msgobj_v_3574" = getelementptr i8, i8* %"$msgobj_3544", i32 149 + %"$msgobj_v_3575" = bitcast i8* %"$msgobj_v_3574" to %Uint128* + store %Uint128 %"$support_bal_3573", %Uint128* %"$msgobj_v_3575", align 8 + store i8* %"$msgobj_3544", i8** %msg2, align 8, !dbg !303 + %"$gasrem_3577" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3578" = icmp ugt i64 1, %"$gasrem_3577" + br i1 %"$gascmp_3578", label %"$out_of_gas_3579", label %"$have_gas_3580" + +"$out_of_gas_3579": ; preds = %"$have_gas_3542" + call void @_out_of_gas() + br label %"$have_gas_3580" + +"$have_gas_3580": ; preds = %"$out_of_gas_3579", %"$have_gas_3542" + %"$consume_3581" = sub i64 %"$gasrem_3577", 1 + store i64 %"$consume_3581", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_3582" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3583" = icmp ugt i64 1, %"$gasrem_3582" + br i1 %"$gascmp_3583", label %"$out_of_gas_3584", label %"$have_gas_3585" + +"$out_of_gas_3584": ; preds = %"$have_gas_3580" + call void @_out_of_gas() + br label %"$have_gas_3585" + +"$have_gas_3585": ; preds = %"$out_of_gas_3584", %"$have_gas_3580" + %"$consume_3586" = sub i64 %"$gasrem_3582", 1 + store i64 %"$consume_3586", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_38" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3587" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3588" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3587", 0 + %"$accounting_tests.one_msg_envptr_3589" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3587", 1 + %"$msg2_3590" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_3591" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3588"(i8* %"$accounting_tests.one_msg_envptr_3589", i8* %"$msg2_3590"), !dbg !304 + store %TName_List_Message* %"$accounting_tests.one_msg_call_3591", %TName_List_Message** %"$accounting_tests.one_msg_38", align 8, !dbg !304 + %"$$accounting_tests.one_msg_38_3592" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_38", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_38_3592", %TName_List_Message** %msgs2, align 8, !dbg !304 + %"$msgs2_3593" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_3593_3594" = bitcast %TName_List_Message* %"$msgs2_3593" to i8* + %"$_literal_cost_call_3595" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_3593_3594") + %"$gasrem_3596" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3597" = icmp ugt i64 %"$_literal_cost_call_3595", %"$gasrem_3596" + br i1 %"$gascmp_3597", label %"$out_of_gas_3598", label %"$have_gas_3599" + +"$out_of_gas_3598": ; preds = %"$have_gas_3585" + call void @_out_of_gas() + br label %"$have_gas_3599" + +"$have_gas_3599": ; preds = %"$out_of_gas_3598", %"$have_gas_3585" + %"$consume_3600" = sub i64 %"$gasrem_3596", %"$_literal_cost_call_3595" + store i64 %"$consume_3600", i64* @_gasrem, align 8 + %"$execptr_load_3601" = load i8*, i8** @_execptr, align 8 + %"$msgs2_3602" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_3601", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_3602"), !dbg !305 + ret void +} + +define void @Test_Send_9(i8* %0) !dbg !306 { +entry: + %"$_amount_3604" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3605" = bitcast i8* %"$_amount_3604" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3605", align 8 + %"$_origin_3606" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3607" = bitcast i8* %"$_origin_3606" to [20 x i8]* + %"$_sender_3608" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3609" = bitcast i8* %"$_sender_3608" to [20 x i8]* + call void @"$Test_Send_9_3430"(%Uint128 %_amount, [20 x i8]* %"$_origin_3607", [20 x i8]* %"$_sender_3609"), !dbg !307 + ret void +} + +define internal void @"$Test_Send_10_3610"(%Uint128 %_amount, [20 x i8]* %"$_origin_3611", [20 x i8]* %"$_sender_3612") !dbg !308 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3611", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3612", align 1 + %"$gasrem_3613" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3614" = icmp ugt i64 1, %"$gasrem_3613" + br i1 %"$gascmp_3614", label %"$out_of_gas_3615", label %"$have_gas_3616" + +"$out_of_gas_3615": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3616" + +"$have_gas_3616": ; preds = %"$out_of_gas_3615", %entry + %"$consume_3617" = sub i64 %"$gasrem_3613", 1 + store i64 %"$consume_3617", i64* @_gasrem, align 8 + %"$AssertReset__origin_3618" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_3618", align 1 + %"$AssertReset__sender_3619" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_3619", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_3618", [20 x i8]* %"$AssertReset__sender_3619"), !dbg !309 + %amount = alloca %Uint128, align 8 + %"$execptr_load_3621" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3622" = call i8* @_fetch_field(i8* %"$execptr_load_3621", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3620", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !310 + %"$amount_3623" = bitcast i8* %"$amount_call_3622" to %Uint128* + %"$amount_3624" = load %Uint128, %Uint128* %"$amount_3623", align 8 + store %Uint128 %"$amount_3624", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3625" = alloca %Uint128, align 8 + %"$amount_3626" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3626", %Uint128* %"$_literal_cost_amount_3625", align 8 + %"$$_literal_cost_amount_3625_3627" = bitcast %Uint128* %"$_literal_cost_amount_3625" to i8* + %"$_literal_cost_call_3628" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3625_3627") + %"$gasadd_3629" = add i64 %"$_literal_cost_call_3628", 0 + %"$gasrem_3630" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3631" = icmp ugt i64 %"$gasadd_3629", %"$gasrem_3630" + br i1 %"$gascmp_3631", label %"$out_of_gas_3632", label %"$have_gas_3633" + +"$out_of_gas_3632": ; preds = %"$have_gas_3616" + call void @_out_of_gas() + br label %"$have_gas_3633" + +"$have_gas_3633": ; preds = %"$out_of_gas_3632", %"$have_gas_3616" + %"$consume_3634" = sub i64 %"$gasrem_3630", %"$gasadd_3629" + store i64 %"$consume_3634", i64* @_gasrem, align 8 + %"$gasrem_3635" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3636" = icmp ugt i64 1, %"$gasrem_3635" + br i1 %"$gascmp_3636", label %"$out_of_gas_3637", label %"$have_gas_3638" + +"$out_of_gas_3637": ; preds = %"$have_gas_3633" + call void @_out_of_gas() + br label %"$have_gas_3638" + +"$have_gas_3638": ; preds = %"$out_of_gas_3637", %"$have_gas_3633" + %"$consume_3639" = sub i64 %"$gasrem_3635", 1 + store i64 %"$consume_3639", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_3640" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3641" = icmp ugt i64 1, %"$gasrem_3640" + br i1 %"$gascmp_3641", label %"$out_of_gas_3642", label %"$have_gas_3643" + +"$out_of_gas_3642": ; preds = %"$have_gas_3638" + call void @_out_of_gas() + br label %"$have_gas_3643" + +"$have_gas_3643": ; preds = %"$out_of_gas_3642", %"$have_gas_3638" + %"$consume_3644" = sub i64 %"$gasrem_3640", 1 + store i64 %"$consume_3644", i64* @_gasrem, align 8 + %"$msgobj_3645_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3645_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3645_salloc_load", i64 125) + %"$msgobj_3645_salloc" = bitcast i8* %"$msgobj_3645_salloc_salloc" to [125 x i8]* + %"$msgobj_3645" = bitcast [125 x i8]* %"$msgobj_3645_salloc" to i8* + store i8 3, i8* %"$msgobj_3645", align 1 + %"$msgobj_fname_3647" = getelementptr i8, i8* %"$msgobj_3645", i32 1 + %"$msgobj_fname_3648" = bitcast i8* %"$msgobj_fname_3647" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3646", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3648", align 8 + %"$msgobj_td_3649" = getelementptr i8, i8* %"$msgobj_3645", i32 17 + %"$msgobj_td_3650" = bitcast i8* %"$msgobj_td_3649" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3650", align 8 + %"$support_contract_3651" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_3652" = getelementptr i8, i8* %"$msgobj_3645", i32 25 + %"$msgobj_v_3653" = bitcast i8* %"$msgobj_v_3652" to [20 x i8]* + store [20 x i8] %"$support_contract_3651", [20 x i8]* %"$msgobj_v_3653", align 1 + %"$msgobj_fname_3655" = getelementptr i8, i8* %"$msgobj_3645", i32 45 + %"$msgobj_fname_3656" = bitcast i8* %"$msgobj_fname_3655" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3654", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3656", align 8 + %"$msgobj_td_3657" = getelementptr i8, i8* %"$msgobj_3645", i32 61 + %"$msgobj_td_3658" = bitcast i8* %"$msgobj_td_3657" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3658", align 8 + %"$msgobj_v_3660" = getelementptr i8, i8* %"$msgobj_3645", i32 69 + %"$msgobj_v_3661" = bitcast i8* %"$msgobj_v_3660" to %String* + store %String { i8* getelementptr inbounds ([27 x i8], [27 x i8]* @"$stringlit_3659", i32 0, i32 0), i32 27 }, %String* %"$msgobj_v_3661", align 8 + %"$msgobj_fname_3663" = getelementptr i8, i8* %"$msgobj_3645", i32 85 + %"$msgobj_fname_3664" = bitcast i8* %"$msgobj_fname_3663" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3662", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3664", align 8 + %"$msgobj_td_3665" = getelementptr i8, i8* %"$msgobj_3645", i32 101 + %"$msgobj_td_3666" = bitcast i8* %"$msgobj_td_3665" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3666", align 8 + %"$amount_3667" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_3668" = getelementptr i8, i8* %"$msgobj_3645", i32 109 + %"$msgobj_v_3669" = bitcast i8* %"$msgobj_v_3668" to %Uint128* + store %Uint128 %"$amount_3667", %Uint128* %"$msgobj_v_3669", align 8 + store i8* %"$msgobj_3645", i8** %msg1, align 8, !dbg !311 + %"$gasrem_3671" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3672" = icmp ugt i64 1, %"$gasrem_3671" + br i1 %"$gascmp_3672", label %"$out_of_gas_3673", label %"$have_gas_3674" + +"$out_of_gas_3673": ; preds = %"$have_gas_3643" + call void @_out_of_gas() + br label %"$have_gas_3674" + +"$have_gas_3674": ; preds = %"$out_of_gas_3673", %"$have_gas_3643" + %"$consume_3675" = sub i64 %"$gasrem_3671", 1 + store i64 %"$consume_3675", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_3676" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3677" = icmp ugt i64 1, %"$gasrem_3676" + br i1 %"$gascmp_3677", label %"$out_of_gas_3678", label %"$have_gas_3679" + +"$out_of_gas_3678": ; preds = %"$have_gas_3674" + call void @_out_of_gas() + br label %"$have_gas_3679" + +"$have_gas_3679": ; preds = %"$out_of_gas_3678", %"$have_gas_3674" + %"$consume_3680" = sub i64 %"$gasrem_3676", 1 + store i64 %"$consume_3680", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_40" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3681" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3682" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3681", 0 + %"$accounting_tests.one_msg_envptr_3683" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3681", 1 + %"$msg1_3684" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_3685" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3682"(i8* %"$accounting_tests.one_msg_envptr_3683", i8* %"$msg1_3684"), !dbg !312 + store %TName_List_Message* %"$accounting_tests.one_msg_call_3685", %TName_List_Message** %"$accounting_tests.one_msg_40", align 8, !dbg !312 + %"$$accounting_tests.one_msg_40_3686" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_40", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_40_3686", %TName_List_Message** %msgs, align 8, !dbg !312 + %"$msgs_3687" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_3687_3688" = bitcast %TName_List_Message* %"$msgs_3687" to i8* + %"$_literal_cost_call_3689" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_3687_3688") + %"$gasrem_3690" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3691" = icmp ugt i64 %"$_literal_cost_call_3689", %"$gasrem_3690" + br i1 %"$gascmp_3691", label %"$out_of_gas_3692", label %"$have_gas_3693" + +"$out_of_gas_3692": ; preds = %"$have_gas_3679" + call void @_out_of_gas() + br label %"$have_gas_3693" + +"$have_gas_3693": ; preds = %"$out_of_gas_3692", %"$have_gas_3679" + %"$consume_3694" = sub i64 %"$gasrem_3690", %"$_literal_cost_call_3689" + store i64 %"$consume_3694", i64* @_gasrem, align 8 + %"$execptr_load_3695" = load i8*, i8** @_execptr, align 8 + %"$msgs_3696" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_3695", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_3696"), !dbg !313 + ret void +} + +define void @Test_Send_10(i8* %0) !dbg !314 { +entry: + %"$_amount_3698" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3699" = bitcast i8* %"$_amount_3698" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3699", align 8 + %"$_origin_3700" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3701" = bitcast i8* %"$_origin_3700" to [20 x i8]* + %"$_sender_3702" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3703" = bitcast i8* %"$_sender_3702" to [20 x i8]* + call void @"$Test_Send_10_3610"(%Uint128 %_amount, [20 x i8]* %"$_origin_3701", [20 x i8]* %"$_sender_3703"), !dbg !315 + ret void +} + +define internal void @"$Test_Send_11_3704"(%Uint128 %_amount, [20 x i8]* %"$_origin_3705", [20 x i8]* %"$_sender_3706") !dbg !316 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3705", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3706", align 1 + %"$gasrem_3707" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3708" = icmp ugt i64 1, %"$gasrem_3707" + br i1 %"$gascmp_3708", label %"$out_of_gas_3709", label %"$have_gas_3710" + +"$out_of_gas_3709": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3710" + +"$have_gas_3710": ; preds = %"$out_of_gas_3709", %entry + %"$consume_3711" = sub i64 %"$gasrem_3707", 1 + store i64 %"$consume_3711", i64* @_gasrem, align 8 + %"$AssertReset__origin_3712" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_3712", align 1 + %"$AssertReset__sender_3713" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_3713", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_3712", [20 x i8]* %"$AssertReset__sender_3713"), !dbg !317 + %amount = alloca %Uint128, align 8 + %"$execptr_load_3715" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3716" = call i8* @_fetch_field(i8* %"$execptr_load_3715", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3714", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !318 + %"$amount_3717" = bitcast i8* %"$amount_call_3716" to %Uint128* + %"$amount_3718" = load %Uint128, %Uint128* %"$amount_3717", align 8 + store %Uint128 %"$amount_3718", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3719" = alloca %Uint128, align 8 + %"$amount_3720" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3720", %Uint128* %"$_literal_cost_amount_3719", align 8 + %"$$_literal_cost_amount_3719_3721" = bitcast %Uint128* %"$_literal_cost_amount_3719" to i8* + %"$_literal_cost_call_3722" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3719_3721") + %"$gasadd_3723" = add i64 %"$_literal_cost_call_3722", 0 + %"$gasrem_3724" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3725" = icmp ugt i64 %"$gasadd_3723", %"$gasrem_3724" + br i1 %"$gascmp_3725", label %"$out_of_gas_3726", label %"$have_gas_3727" + +"$out_of_gas_3726": ; preds = %"$have_gas_3710" + call void @_out_of_gas() + br label %"$have_gas_3727" + +"$have_gas_3727": ; preds = %"$out_of_gas_3726", %"$have_gas_3710" + %"$consume_3728" = sub i64 %"$gasrem_3724", %"$gasadd_3723" + store i64 %"$consume_3728", i64* @_gasrem, align 8 + %"$gasrem_3729" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3730" = icmp ugt i64 1, %"$gasrem_3729" + br i1 %"$gascmp_3730", label %"$out_of_gas_3731", label %"$have_gas_3732" + +"$out_of_gas_3731": ; preds = %"$have_gas_3727" + call void @_out_of_gas() + br label %"$have_gas_3732" + +"$have_gas_3732": ; preds = %"$out_of_gas_3731", %"$have_gas_3727" + %"$consume_3733" = sub i64 %"$gasrem_3729", 1 + store i64 %"$consume_3733", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_3734" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3735" = icmp ugt i64 1, %"$gasrem_3734" + br i1 %"$gascmp_3735", label %"$out_of_gas_3736", label %"$have_gas_3737" + +"$out_of_gas_3736": ; preds = %"$have_gas_3732" + call void @_out_of_gas() + br label %"$have_gas_3737" + +"$have_gas_3737": ; preds = %"$out_of_gas_3736", %"$have_gas_3732" + %"$consume_3738" = sub i64 %"$gasrem_3734", 1 + store i64 %"$consume_3738", i64* @_gasrem, align 8 + %"$msgobj_3739_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3739_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3739_salloc_load", i64 125) + %"$msgobj_3739_salloc" = bitcast i8* %"$msgobj_3739_salloc_salloc" to [125 x i8]* + %"$msgobj_3739" = bitcast [125 x i8]* %"$msgobj_3739_salloc" to i8* + store i8 3, i8* %"$msgobj_3739", align 1 + %"$msgobj_fname_3741" = getelementptr i8, i8* %"$msgobj_3739", i32 1 + %"$msgobj_fname_3742" = bitcast i8* %"$msgobj_fname_3741" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3740", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3742", align 8 + %"$msgobj_td_3743" = getelementptr i8, i8* %"$msgobj_3739", i32 17 + %"$msgobj_td_3744" = bitcast i8* %"$msgobj_td_3743" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3744", align 8 + %"$support_contract_3745" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_3746" = getelementptr i8, i8* %"$msgobj_3739", i32 25 + %"$msgobj_v_3747" = bitcast i8* %"$msgobj_v_3746" to [20 x i8]* + store [20 x i8] %"$support_contract_3745", [20 x i8]* %"$msgobj_v_3747", align 1 + %"$msgobj_fname_3749" = getelementptr i8, i8* %"$msgobj_3739", i32 45 + %"$msgobj_fname_3750" = bitcast i8* %"$msgobj_fname_3749" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3748", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3750", align 8 + %"$msgobj_td_3751" = getelementptr i8, i8* %"$msgobj_3739", i32 61 + %"$msgobj_td_3752" = bitcast i8* %"$msgobj_td_3751" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3752", align 8 + %"$msgobj_v_3754" = getelementptr i8, i8* %"$msgobj_3739", i32 69 + %"$msgobj_v_3755" = bitcast i8* %"$msgobj_v_3754" to %String* + store %String { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"$stringlit_3753", i32 0, i32 0), i32 26 }, %String* %"$msgobj_v_3755", align 8 + %"$msgobj_fname_3757" = getelementptr i8, i8* %"$msgobj_3739", i32 85 + %"$msgobj_fname_3758" = bitcast i8* %"$msgobj_fname_3757" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3756", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3758", align 8 + %"$msgobj_td_3759" = getelementptr i8, i8* %"$msgobj_3739", i32 101 + %"$msgobj_td_3760" = bitcast i8* %"$msgobj_td_3759" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3760", align 8 + %"$amount_3761" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_3762" = getelementptr i8, i8* %"$msgobj_3739", i32 109 + %"$msgobj_v_3763" = bitcast i8* %"$msgobj_v_3762" to %Uint128* + store %Uint128 %"$amount_3761", %Uint128* %"$msgobj_v_3763", align 8 + store i8* %"$msgobj_3739", i8** %msg1, align 8, !dbg !319 + %"$gasrem_3765" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3766" = icmp ugt i64 1, %"$gasrem_3765" + br i1 %"$gascmp_3766", label %"$out_of_gas_3767", label %"$have_gas_3768" + +"$out_of_gas_3767": ; preds = %"$have_gas_3737" + call void @_out_of_gas() + br label %"$have_gas_3768" + +"$have_gas_3768": ; preds = %"$out_of_gas_3767", %"$have_gas_3737" + %"$consume_3769" = sub i64 %"$gasrem_3765", 1 + store i64 %"$consume_3769", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_3770" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3771" = icmp ugt i64 1, %"$gasrem_3770" + br i1 %"$gascmp_3771", label %"$out_of_gas_3772", label %"$have_gas_3773" + +"$out_of_gas_3772": ; preds = %"$have_gas_3768" + call void @_out_of_gas() + br label %"$have_gas_3773" + +"$have_gas_3773": ; preds = %"$out_of_gas_3772", %"$have_gas_3768" + %"$consume_3774" = sub i64 %"$gasrem_3770", 1 + store i64 %"$consume_3774", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_41" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3775" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3776" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3775", 0 + %"$accounting_tests.one_msg_envptr_3777" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3775", 1 + %"$msg1_3778" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_3779" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3776"(i8* %"$accounting_tests.one_msg_envptr_3777", i8* %"$msg1_3778"), !dbg !320 + store %TName_List_Message* %"$accounting_tests.one_msg_call_3779", %TName_List_Message** %"$accounting_tests.one_msg_41", align 8, !dbg !320 + %"$$accounting_tests.one_msg_41_3780" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_41", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_41_3780", %TName_List_Message** %msgs, align 8, !dbg !320 + %"$msgs_3781" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_3781_3782" = bitcast %TName_List_Message* %"$msgs_3781" to i8* + %"$_literal_cost_call_3783" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_3781_3782") + %"$gasrem_3784" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3785" = icmp ugt i64 %"$_literal_cost_call_3783", %"$gasrem_3784" + br i1 %"$gascmp_3785", label %"$out_of_gas_3786", label %"$have_gas_3787" + +"$out_of_gas_3786": ; preds = %"$have_gas_3773" + call void @_out_of_gas() + br label %"$have_gas_3787" + +"$have_gas_3787": ; preds = %"$out_of_gas_3786", %"$have_gas_3773" + %"$consume_3788" = sub i64 %"$gasrem_3784", %"$_literal_cost_call_3783" + store i64 %"$consume_3788", i64* @_gasrem, align 8 + %"$execptr_load_3789" = load i8*, i8** @_execptr, align 8 + %"$msgs_3790" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_3789", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_3790"), !dbg !321 + ret void +} + +define void @Test_Send_11(i8* %0) !dbg !322 { +entry: + %"$_amount_3792" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3793" = bitcast i8* %"$_amount_3792" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3793", align 8 + %"$_origin_3794" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3795" = bitcast i8* %"$_origin_3794" to [20 x i8]* + %"$_sender_3796" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3797" = bitcast i8* %"$_sender_3796" to [20 x i8]* + call void @"$Test_Send_11_3704"(%Uint128 %_amount, [20 x i8]* %"$_origin_3795", [20 x i8]* %"$_sender_3797"), !dbg !323 + ret void +} + +define internal void @"$Test_Send_12_3798"(%Uint128 %_amount, [20 x i8]* %"$_origin_3799", [20 x i8]* %"$_sender_3800") !dbg !324 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3799", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3800", align 1 + %amount = alloca %Uint128, align 8 + %"$execptr_load_3802" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3803" = call i8* @_fetch_field(i8* %"$execptr_load_3802", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3801", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !325 + %"$amount_3804" = bitcast i8* %"$amount_call_3803" to %Uint128* + %"$amount_3805" = load %Uint128, %Uint128* %"$amount_3804", align 8 + store %Uint128 %"$amount_3805", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3806" = alloca %Uint128, align 8 + %"$amount_3807" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3807", %Uint128* %"$_literal_cost_amount_3806", align 8 + %"$$_literal_cost_amount_3806_3808" = bitcast %Uint128* %"$_literal_cost_amount_3806" to i8* + %"$_literal_cost_call_3809" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3806_3808") + %"$gasadd_3810" = add i64 %"$_literal_cost_call_3809", 0 + %"$gasrem_3811" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3812" = icmp ugt i64 %"$gasadd_3810", %"$gasrem_3811" + br i1 %"$gascmp_3812", label %"$out_of_gas_3813", label %"$have_gas_3814" + +"$out_of_gas_3813": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3814" + +"$have_gas_3814": ; preds = %"$out_of_gas_3813", %entry + %"$consume_3815" = sub i64 %"$gasrem_3811", %"$gasadd_3810" + store i64 %"$consume_3815", i64* @_gasrem, align 8 + %bal = alloca %Uint128, align 8 + %"$execptr_load_3817" = load i8*, i8** @_execptr, align 8 + %"$bal_call_3818" = call i8* @_fetch_field(i8* %"$execptr_load_3817", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_3816", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !326 + %"$bal_3819" = bitcast i8* %"$bal_call_3818" to %Uint128* + %"$bal_3820" = load %Uint128, %Uint128* %"$bal_3819", align 8 + store %Uint128 %"$bal_3820", %Uint128* %bal, align 8 + %"$_literal_cost_bal_3821" = alloca %Uint128, align 8 + %"$bal_3822" = load %Uint128, %Uint128* %bal, align 8 + store %Uint128 %"$bal_3822", %Uint128* %"$_literal_cost_bal_3821", align 8 + %"$$_literal_cost_bal_3821_3823" = bitcast %Uint128* %"$_literal_cost_bal_3821" to i8* + %"$_literal_cost_call_3824" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_bal_3821_3823") + %"$gasadd_3825" = add i64 %"$_literal_cost_call_3824", 0 + %"$gasrem_3826" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3827" = icmp ugt i64 %"$gasadd_3825", %"$gasrem_3826" + br i1 %"$gascmp_3827", label %"$out_of_gas_3828", label %"$have_gas_3829" + +"$out_of_gas_3828": ; preds = %"$have_gas_3814" + call void @_out_of_gas() + br label %"$have_gas_3829" + +"$have_gas_3829": ; preds = %"$out_of_gas_3828", %"$have_gas_3814" + %"$consume_3830" = sub i64 %"$gasrem_3826", %"$gasadd_3825" + store i64 %"$consume_3830", i64* @_gasrem, align 8 + %"$gasrem_3831" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3832" = icmp ugt i64 1, %"$gasrem_3831" + br i1 %"$gascmp_3832", label %"$out_of_gas_3833", label %"$have_gas_3834" + +"$out_of_gas_3833": ; preds = %"$have_gas_3829" + call void @_out_of_gas() + br label %"$have_gas_3834" + +"$have_gas_3834": ; preds = %"$out_of_gas_3833", %"$have_gas_3829" + %"$consume_3835" = sub i64 %"$gasrem_3831", 1 + store i64 %"$consume_3835", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_3836" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3837" = icmp ugt i64 1, %"$gasrem_3836" + br i1 %"$gascmp_3837", label %"$out_of_gas_3838", label %"$have_gas_3839" + +"$out_of_gas_3838": ; preds = %"$have_gas_3834" + call void @_out_of_gas() + br label %"$have_gas_3839" + +"$have_gas_3839": ; preds = %"$out_of_gas_3838", %"$have_gas_3834" + %"$consume_3840" = sub i64 %"$gasrem_3836", 1 + store i64 %"$consume_3840", i64* @_gasrem, align 8 + %"$msgobj_3841_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3841_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3841_salloc_load", i64 125) + %"$msgobj_3841_salloc" = bitcast i8* %"$msgobj_3841_salloc_salloc" to [125 x i8]* + %"$msgobj_3841" = bitcast [125 x i8]* %"$msgobj_3841_salloc" to i8* + store i8 3, i8* %"$msgobj_3841", align 1 + %"$msgobj_fname_3843" = getelementptr i8, i8* %"$msgobj_3841", i32 1 + %"$msgobj_fname_3844" = bitcast i8* %"$msgobj_fname_3843" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3842", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3844", align 8 + %"$msgobj_td_3845" = getelementptr i8, i8* %"$msgobj_3841", i32 17 + %"$msgobj_td_3846" = bitcast i8* %"$msgobj_td_3845" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3846", align 8 + %"$support_contract_3847" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_3848" = getelementptr i8, i8* %"$msgobj_3841", i32 25 + %"$msgobj_v_3849" = bitcast i8* %"$msgobj_v_3848" to [20 x i8]* + store [20 x i8] %"$support_contract_3847", [20 x i8]* %"$msgobj_v_3849", align 1 + %"$msgobj_fname_3851" = getelementptr i8, i8* %"$msgobj_3841", i32 45 + %"$msgobj_fname_3852" = bitcast i8* %"$msgobj_fname_3851" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3850", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3852", align 8 + %"$msgobj_td_3853" = getelementptr i8, i8* %"$msgobj_3841", i32 61 + %"$msgobj_td_3854" = bitcast i8* %"$msgobj_td_3853" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3854", align 8 + %"$msgobj_v_3856" = getelementptr i8, i8* %"$msgobj_3841", i32 69 + %"$msgobj_v_3857" = bitcast i8* %"$msgobj_v_3856" to %String* + store %String { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"$stringlit_3855", i32 0, i32 0), i32 26 }, %String* %"$msgobj_v_3857", align 8 + %"$msgobj_fname_3859" = getelementptr i8, i8* %"$msgobj_3841", i32 85 + %"$msgobj_fname_3860" = bitcast i8* %"$msgobj_fname_3859" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3858", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3860", align 8 + %"$msgobj_td_3861" = getelementptr i8, i8* %"$msgobj_3841", i32 101 + %"$msgobj_td_3862" = bitcast i8* %"$msgobj_td_3861" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3862", align 8 + %"$amount_3863" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_3864" = getelementptr i8, i8* %"$msgobj_3841", i32 109 + %"$msgobj_v_3865" = bitcast i8* %"$msgobj_v_3864" to %Uint128* + store %Uint128 %"$amount_3863", %Uint128* %"$msgobj_v_3865", align 8 + store i8* %"$msgobj_3841", i8** %msg1, align 8, !dbg !327 + %"$gasrem_3867" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3868" = icmp ugt i64 1, %"$gasrem_3867" + br i1 %"$gascmp_3868", label %"$out_of_gas_3869", label %"$have_gas_3870" + +"$out_of_gas_3869": ; preds = %"$have_gas_3839" + call void @_out_of_gas() + br label %"$have_gas_3870" + +"$have_gas_3870": ; preds = %"$out_of_gas_3869", %"$have_gas_3839" + %"$consume_3871" = sub i64 %"$gasrem_3867", 1 + store i64 %"$consume_3871", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_3872" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3873" = icmp ugt i64 1, %"$gasrem_3872" + br i1 %"$gascmp_3873", label %"$out_of_gas_3874", label %"$have_gas_3875" + +"$out_of_gas_3874": ; preds = %"$have_gas_3870" + call void @_out_of_gas() + br label %"$have_gas_3875" + +"$have_gas_3875": ; preds = %"$out_of_gas_3874", %"$have_gas_3870" + %"$consume_3876" = sub i64 %"$gasrem_3872", 1 + store i64 %"$consume_3876", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_43" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3877" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3878" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3877", 0 + %"$accounting_tests.one_msg_envptr_3879" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3877", 1 + %"$msg1_3880" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_3881" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3878"(i8* %"$accounting_tests.one_msg_envptr_3879", i8* %"$msg1_3880"), !dbg !328 + store %TName_List_Message* %"$accounting_tests.one_msg_call_3881", %TName_List_Message** %"$accounting_tests.one_msg_43", align 8, !dbg !328 + %"$$accounting_tests.one_msg_43_3882" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_43", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_43_3882", %TName_List_Message** %msgs1, align 8, !dbg !328 + %"$msgs1_3883" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_3883_3884" = bitcast %TName_List_Message* %"$msgs1_3883" to i8* + %"$_literal_cost_call_3885" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_3883_3884") + %"$gasrem_3886" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3887" = icmp ugt i64 %"$_literal_cost_call_3885", %"$gasrem_3886" + br i1 %"$gascmp_3887", label %"$out_of_gas_3888", label %"$have_gas_3889" + +"$out_of_gas_3888": ; preds = %"$have_gas_3875" + call void @_out_of_gas() + br label %"$have_gas_3889" + +"$have_gas_3889": ; preds = %"$out_of_gas_3888", %"$have_gas_3875" + %"$consume_3890" = sub i64 %"$gasrem_3886", %"$_literal_cost_call_3885" + store i64 %"$consume_3890", i64* @_gasrem, align 8 + %"$execptr_load_3891" = load i8*, i8** @_execptr, align 8 + %"$msgs1_3892" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_3891", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_3892"), !dbg !329 + %"$gasrem_3893" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3894" = icmp ugt i64 1, %"$gasrem_3893" + br i1 %"$gascmp_3894", label %"$out_of_gas_3895", label %"$have_gas_3896" + +"$out_of_gas_3895": ; preds = %"$have_gas_3889" + call void @_out_of_gas() + br label %"$have_gas_3896" + +"$have_gas_3896": ; preds = %"$out_of_gas_3895", %"$have_gas_3889" + %"$consume_3897" = sub i64 %"$gasrem_3893", 1 + store i64 %"$consume_3897", i64* @_gasrem, align 8 + %expected_balance = alloca %Uint128, align 8 + %"$bal_3898" = load %Uint128, %Uint128* %bal, align 8 + %"$amount_3899" = load %Uint128, %Uint128* %amount, align 8 + %"$sub_call_3900" = call %Uint128 @_sub_Uint128(%Uint128 %"$bal_3898", %Uint128 %"$amount_3899"), !dbg !330 + store %Uint128 %"$sub_call_3900", %Uint128* %expected_balance, align 8, !dbg !330 + %"$gasrem_3901" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3902" = icmp ugt i64 1, %"$gasrem_3901" + br i1 %"$gascmp_3902", label %"$out_of_gas_3903", label %"$have_gas_3904" + +"$out_of_gas_3903": ; preds = %"$have_gas_3896" + call void @_out_of_gas() + br label %"$have_gas_3904" + +"$have_gas_3904": ; preds = %"$out_of_gas_3903", %"$have_gas_3896" + %"$consume_3905" = sub i64 %"$gasrem_3901", 1 + store i64 %"$consume_3905", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_3906" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3907" = icmp ugt i64 1, %"$gasrem_3906" + br i1 %"$gascmp_3907", label %"$out_of_gas_3908", label %"$have_gas_3909" + +"$out_of_gas_3908": ; preds = %"$have_gas_3904" + call void @_out_of_gas() + br label %"$have_gas_3909" + +"$have_gas_3909": ; preds = %"$out_of_gas_3908", %"$have_gas_3904" + %"$consume_3910" = sub i64 %"$gasrem_3906", 1 + store i64 %"$consume_3910", i64* @_gasrem, align 8 + %"$msgobj_3911_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3911_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3911_salloc_load", i64 165) + %"$msgobj_3911_salloc" = bitcast i8* %"$msgobj_3911_salloc_salloc" to [165 x i8]* + %"$msgobj_3911" = bitcast [165 x i8]* %"$msgobj_3911_salloc" to i8* + store i8 4, i8* %"$msgobj_3911", align 1 + %"$msgobj_fname_3913" = getelementptr i8, i8* %"$msgobj_3911", i32 1 + %"$msgobj_fname_3914" = bitcast i8* %"$msgobj_fname_3913" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3912", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3914", align 8 + %"$msgobj_td_3915" = getelementptr i8, i8* %"$msgobj_3911", i32 17 + %"$msgobj_td_3916" = bitcast i8* %"$msgobj_td_3915" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3916", align 8 + %"$_this_address_3917" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_3918" = getelementptr i8, i8* %"$msgobj_3911", i32 25 + %"$msgobj_v_3919" = bitcast i8* %"$msgobj_v_3918" to [20 x i8]* + store [20 x i8] %"$_this_address_3917", [20 x i8]* %"$msgobj_v_3919", align 1 + %"$msgobj_fname_3921" = getelementptr i8, i8* %"$msgobj_3911", i32 45 + %"$msgobj_fname_3922" = bitcast i8* %"$msgobj_fname_3921" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3920", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3922", align 8 + %"$msgobj_td_3923" = getelementptr i8, i8* %"$msgobj_3911", i32 61 + %"$msgobj_td_3924" = bitcast i8* %"$msgobj_td_3923" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3924", align 8 + %"$msgobj_v_3926" = getelementptr i8, i8* %"$msgobj_3911", i32 69 + %"$msgobj_v_3927" = bitcast i8* %"$msgobj_v_3926" to %String* + store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_3925", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_3927", align 8 + %"$msgobj_fname_3929" = getelementptr i8, i8* %"$msgobj_3911", i32 85 + %"$msgobj_fname_3930" = bitcast i8* %"$msgobj_fname_3929" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3928", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3930", align 8 + %"$msgobj_td_3931" = getelementptr i8, i8* %"$msgobj_3911", i32 101 + %"$msgobj_td_3932" = bitcast i8* %"$msgobj_td_3931" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3932", align 8 + %"$msgobj_v_3933" = getelementptr i8, i8* %"$msgobj_3911", i32 109 + %"$msgobj_v_3934" = bitcast i8* %"$msgobj_v_3933" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_3934", align 8 + %"$msgobj_fname_3936" = getelementptr i8, i8* %"$msgobj_3911", i32 125 + %"$msgobj_fname_3937" = bitcast i8* %"$msgobj_fname_3936" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_3935", i32 0, i32 0), i32 16 }, %String* %"$msgobj_fname_3937", align 8 + %"$msgobj_td_3938" = getelementptr i8, i8* %"$msgobj_3911", i32 141 + %"$msgobj_td_3939" = bitcast i8* %"$msgobj_td_3938" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3939", align 8 + %"$expected_balance_3940" = load %Uint128, %Uint128* %expected_balance, align 8 + %"$msgobj_v_3941" = getelementptr i8, i8* %"$msgobj_3911", i32 149 + %"$msgobj_v_3942" = bitcast i8* %"$msgobj_v_3941" to %Uint128* + store %Uint128 %"$expected_balance_3940", %Uint128* %"$msgobj_v_3942", align 8 + store i8* %"$msgobj_3911", i8** %msg2, align 8, !dbg !331 + %"$gasrem_3944" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3945" = icmp ugt i64 1, %"$gasrem_3944" + br i1 %"$gascmp_3945", label %"$out_of_gas_3946", label %"$have_gas_3947" + +"$out_of_gas_3946": ; preds = %"$have_gas_3909" + call void @_out_of_gas() + br label %"$have_gas_3947" + +"$have_gas_3947": ; preds = %"$out_of_gas_3946", %"$have_gas_3909" + %"$consume_3948" = sub i64 %"$gasrem_3944", 1 + store i64 %"$consume_3948", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_3949" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3950" = icmp ugt i64 1, %"$gasrem_3949" + br i1 %"$gascmp_3950", label %"$out_of_gas_3951", label %"$have_gas_3952" + +"$out_of_gas_3951": ; preds = %"$have_gas_3947" + call void @_out_of_gas() + br label %"$have_gas_3952" + +"$have_gas_3952": ; preds = %"$out_of_gas_3951", %"$have_gas_3947" + %"$consume_3953" = sub i64 %"$gasrem_3949", 1 + store i64 %"$consume_3953", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_42" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3954" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3955" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3954", 0 + %"$accounting_tests.one_msg_envptr_3956" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3954", 1 + %"$msg2_3957" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_3958" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3955"(i8* %"$accounting_tests.one_msg_envptr_3956", i8* %"$msg2_3957"), !dbg !332 + store %TName_List_Message* %"$accounting_tests.one_msg_call_3958", %TName_List_Message** %"$accounting_tests.one_msg_42", align 8, !dbg !332 + %"$$accounting_tests.one_msg_42_3959" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_42", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_42_3959", %TName_List_Message** %msgs2, align 8, !dbg !332 + %"$msgs2_3960" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_3960_3961" = bitcast %TName_List_Message* %"$msgs2_3960" to i8* + %"$_literal_cost_call_3962" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_3960_3961") + %"$gasrem_3963" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3964" = icmp ugt i64 %"$_literal_cost_call_3962", %"$gasrem_3963" + br i1 %"$gascmp_3964", label %"$out_of_gas_3965", label %"$have_gas_3966" + +"$out_of_gas_3965": ; preds = %"$have_gas_3952" + call void @_out_of_gas() + br label %"$have_gas_3966" + +"$have_gas_3966": ; preds = %"$out_of_gas_3965", %"$have_gas_3952" + %"$consume_3967" = sub i64 %"$gasrem_3963", %"$_literal_cost_call_3962" + store i64 %"$consume_3967", i64* @_gasrem, align 8 + %"$execptr_load_3968" = load i8*, i8** @_execptr, align 8 + %"$msgs2_3969" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_3968", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_3969"), !dbg !333 + ret void +} + +define void @Test_Send_12(i8* %0) !dbg !334 { +entry: + %"$_amount_3971" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3972" = bitcast i8* %"$_amount_3971" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3972", align 8 + %"$_origin_3973" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3974" = bitcast i8* %"$_origin_3973" to [20 x i8]* + %"$_sender_3975" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3976" = bitcast i8* %"$_sender_3975" to [20 x i8]* + call void @"$Test_Send_12_3798"(%Uint128 %_amount, [20 x i8]* %"$_origin_3974", [20 x i8]* %"$_sender_3976"), !dbg !335 + ret void +} + +define internal void @"$Test_Send_13_3977"(%Uint128 %_amount, [20 x i8]* %"$_origin_3978", [20 x i8]* %"$_sender_3979") !dbg !336 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3978", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3979", align 1 + %"$gasrem_3980" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3981" = icmp ugt i64 1, %"$gasrem_3980" + br i1 %"$gascmp_3981", label %"$out_of_gas_3982", label %"$have_gas_3983" + +"$out_of_gas_3982": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3983" + +"$have_gas_3983": ; preds = %"$out_of_gas_3982", %entry + %"$consume_3984" = sub i64 %"$gasrem_3980", 1 + store i64 %"$consume_3984", i64* @_gasrem, align 8 + %"$AssertReset__origin_3985" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_3985", align 1 + %"$AssertReset__sender_3986" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_3986", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_3985", [20 x i8]* %"$AssertReset__sender_3986"), !dbg !337 + %amount = alloca %Uint128, align 8 + %"$execptr_load_3988" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3989" = call i8* @_fetch_field(i8* %"$execptr_load_3988", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3987", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !338 + %"$amount_3990" = bitcast i8* %"$amount_call_3989" to %Uint128* + %"$amount_3991" = load %Uint128, %Uint128* %"$amount_3990", align 8 + store %Uint128 %"$amount_3991", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3992" = alloca %Uint128, align 8 + %"$amount_3993" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3993", %Uint128* %"$_literal_cost_amount_3992", align 8 + %"$$_literal_cost_amount_3992_3994" = bitcast %Uint128* %"$_literal_cost_amount_3992" to i8* + %"$_literal_cost_call_3995" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3992_3994") + %"$gasadd_3996" = add i64 %"$_literal_cost_call_3995", 0 + %"$gasrem_3997" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3998" = icmp ugt i64 %"$gasadd_3996", %"$gasrem_3997" + br i1 %"$gascmp_3998", label %"$out_of_gas_3999", label %"$have_gas_4000" + +"$out_of_gas_3999": ; preds = %"$have_gas_3983" + call void @_out_of_gas() + br label %"$have_gas_4000" + +"$have_gas_4000": ; preds = %"$out_of_gas_3999", %"$have_gas_3983" + %"$consume_4001" = sub i64 %"$gasrem_3997", %"$gasadd_3996" + store i64 %"$consume_4001", i64* @_gasrem, align 8 + %"$gasrem_4002" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4003" = icmp ugt i64 1, %"$gasrem_4002" + br i1 %"$gascmp_4003", label %"$out_of_gas_4004", label %"$have_gas_4005" + +"$out_of_gas_4004": ; preds = %"$have_gas_4000" + call void @_out_of_gas() + br label %"$have_gas_4005" + +"$have_gas_4005": ; preds = %"$out_of_gas_4004", %"$have_gas_4000" + %"$consume_4006" = sub i64 %"$gasrem_4002", 1 + store i64 %"$consume_4006", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_4007" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4008" = icmp ugt i64 1, %"$gasrem_4007" + br i1 %"$gascmp_4008", label %"$out_of_gas_4009", label %"$have_gas_4010" + +"$out_of_gas_4009": ; preds = %"$have_gas_4005" + call void @_out_of_gas() + br label %"$have_gas_4010" + +"$have_gas_4010": ; preds = %"$out_of_gas_4009", %"$have_gas_4005" + %"$consume_4011" = sub i64 %"$gasrem_4007", 1 + store i64 %"$consume_4011", i64* @_gasrem, align 8 + %"$msgobj_4012_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_4012_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_4012_salloc_load", i64 125) + %"$msgobj_4012_salloc" = bitcast i8* %"$msgobj_4012_salloc_salloc" to [125 x i8]* + %"$msgobj_4012" = bitcast [125 x i8]* %"$msgobj_4012_salloc" to i8* + store i8 3, i8* %"$msgobj_4012", align 1 + %"$msgobj_fname_4014" = getelementptr i8, i8* %"$msgobj_4012", i32 1 + %"$msgobj_fname_4015" = bitcast i8* %"$msgobj_fname_4014" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_4013", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_4015", align 8 + %"$msgobj_td_4016" = getelementptr i8, i8* %"$msgobj_4012", i32 17 + %"$msgobj_td_4017" = bitcast i8* %"$msgobj_td_4016" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_4017", align 8 + %"$support_contract_4018" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_4019" = getelementptr i8, i8* %"$msgobj_4012", i32 25 + %"$msgobj_v_4020" = bitcast i8* %"$msgobj_v_4019" to [20 x i8]* + store [20 x i8] %"$support_contract_4018", [20 x i8]* %"$msgobj_v_4020", align 1 + %"$msgobj_fname_4022" = getelementptr i8, i8* %"$msgobj_4012", i32 45 + %"$msgobj_fname_4023" = bitcast i8* %"$msgobj_fname_4022" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_4021", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_4023", align 8 + %"$msgobj_td_4024" = getelementptr i8, i8* %"$msgobj_4012", i32 61 + %"$msgobj_td_4025" = bitcast i8* %"$msgobj_td_4024" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_4025", align 8 + %"$msgobj_v_4027" = getelementptr i8, i8* %"$msgobj_4012", i32 69 + %"$msgobj_v_4028" = bitcast i8* %"$msgobj_v_4027" to %String* + store %String { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"$stringlit_4026", i32 0, i32 0), i32 26 }, %String* %"$msgobj_v_4028", align 8 + %"$msgobj_fname_4030" = getelementptr i8, i8* %"$msgobj_4012", i32 85 + %"$msgobj_fname_4031" = bitcast i8* %"$msgobj_fname_4030" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_4029", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_4031", align 8 + %"$msgobj_td_4032" = getelementptr i8, i8* %"$msgobj_4012", i32 101 + %"$msgobj_td_4033" = bitcast i8* %"$msgobj_td_4032" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_4033", align 8 + %"$amount_4034" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_4035" = getelementptr i8, i8* %"$msgobj_4012", i32 109 + %"$msgobj_v_4036" = bitcast i8* %"$msgobj_v_4035" to %Uint128* + store %Uint128 %"$amount_4034", %Uint128* %"$msgobj_v_4036", align 8 + store i8* %"$msgobj_4012", i8** %msg1, align 8, !dbg !339 + %"$gasrem_4038" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4039" = icmp ugt i64 1, %"$gasrem_4038" + br i1 %"$gascmp_4039", label %"$out_of_gas_4040", label %"$have_gas_4041" + +"$out_of_gas_4040": ; preds = %"$have_gas_4010" + call void @_out_of_gas() + br label %"$have_gas_4041" + +"$have_gas_4041": ; preds = %"$out_of_gas_4040", %"$have_gas_4010" + %"$consume_4042" = sub i64 %"$gasrem_4038", 1 + store i64 %"$consume_4042", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_4043" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4044" = icmp ugt i64 1, %"$gasrem_4043" + br i1 %"$gascmp_4044", label %"$out_of_gas_4045", label %"$have_gas_4046" + +"$out_of_gas_4045": ; preds = %"$have_gas_4041" + call void @_out_of_gas() + br label %"$have_gas_4046" + +"$have_gas_4046": ; preds = %"$out_of_gas_4045", %"$have_gas_4041" + %"$consume_4047" = sub i64 %"$gasrem_4043", 1 + store i64 %"$consume_4047", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_45" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_4048" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_4049" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_4048", 0 + %"$accounting_tests.one_msg_envptr_4050" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_4048", 1 + %"$msg1_4051" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_4052" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_4049"(i8* %"$accounting_tests.one_msg_envptr_4050", i8* %"$msg1_4051"), !dbg !340 + store %TName_List_Message* %"$accounting_tests.one_msg_call_4052", %TName_List_Message** %"$accounting_tests.one_msg_45", align 8, !dbg !340 + %"$$accounting_tests.one_msg_45_4053" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_45", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_45_4053", %TName_List_Message** %msgs1, align 8, !dbg !340 + %"$msgs1_4054" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_4054_4055" = bitcast %TName_List_Message* %"$msgs1_4054" to i8* + %"$_literal_cost_call_4056" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_4054_4055") + %"$gasrem_4057" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4058" = icmp ugt i64 %"$_literal_cost_call_4056", %"$gasrem_4057" + br i1 %"$gascmp_4058", label %"$out_of_gas_4059", label %"$have_gas_4060" + +"$out_of_gas_4059": ; preds = %"$have_gas_4046" + call void @_out_of_gas() + br label %"$have_gas_4060" + +"$have_gas_4060": ; preds = %"$out_of_gas_4059", %"$have_gas_4046" + %"$consume_4061" = sub i64 %"$gasrem_4057", %"$_literal_cost_call_4056" + store i64 %"$consume_4061", i64* @_gasrem, align 8 + %"$execptr_load_4062" = load i8*, i8** @_execptr, align 8 + %"$msgs1_4063" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_4062", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_4063"), !dbg !341 + %support_bal = alloca %Uint128, align 8 + %"$execptr_load_4065" = load i8*, i8** @_execptr, align 8 + %"$support_bal_support_contract_4066" = alloca [20 x i8], align 1 + %"$support_contract_4067" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + store [20 x i8] %"$support_contract_4067", [20 x i8]* %"$support_bal_support_contract_4066", align 1 + %"$support_bal_call_4068" = call i8* @_fetch_remote_field(i8* %"$execptr_load_4065", [20 x i8]* %"$support_bal_support_contract_4066", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_4064", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !342 + %"$support_bal_4069" = bitcast i8* %"$support_bal_call_4068" to %Uint128* + %"$support_bal_4070" = load %Uint128, %Uint128* %"$support_bal_4069", align 8 + store %Uint128 %"$support_bal_4070", %Uint128* %support_bal, align 8 + %"$_literal_cost_support_bal_4071" = alloca %Uint128, align 8 + %"$support_bal_4072" = load %Uint128, %Uint128* %support_bal, align 8 + store %Uint128 %"$support_bal_4072", %Uint128* %"$_literal_cost_support_bal_4071", align 8 + %"$$_literal_cost_support_bal_4071_4073" = bitcast %Uint128* %"$_literal_cost_support_bal_4071" to i8* + %"$_literal_cost_call_4074" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_support_bal_4071_4073") + %"$gasadd_4075" = add i64 %"$_literal_cost_call_4074", 0 + %"$gasrem_4076" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4077" = icmp ugt i64 %"$gasadd_4075", %"$gasrem_4076" + br i1 %"$gascmp_4077", label %"$out_of_gas_4078", label %"$have_gas_4079" + +"$out_of_gas_4078": ; preds = %"$have_gas_4060" + call void @_out_of_gas() + br label %"$have_gas_4079" + +"$have_gas_4079": ; preds = %"$out_of_gas_4078", %"$have_gas_4060" + %"$consume_4080" = sub i64 %"$gasrem_4076", %"$gasadd_4075" + store i64 %"$consume_4080", i64* @_gasrem, align 8 + %"$gasrem_4081" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4082" = icmp ugt i64 1, %"$gasrem_4081" + br i1 %"$gascmp_4082", label %"$out_of_gas_4083", label %"$have_gas_4084" + +"$out_of_gas_4083": ; preds = %"$have_gas_4079" + call void @_out_of_gas() + br label %"$have_gas_4084" + +"$have_gas_4084": ; preds = %"$out_of_gas_4083", %"$have_gas_4079" + %"$consume_4085" = sub i64 %"$gasrem_4081", 1 + store i64 %"$consume_4085", i64* @_gasrem, align 8 + %expected_balance = alloca %Uint128, align 8 + %"$support_bal_4086" = load %Uint128, %Uint128* %support_bal, align 8 + %"$amount_4087" = load %Uint128, %Uint128* %amount, align 8 + %"$add_call_4088" = call %Uint128 @_add_Uint128(%Uint128 %"$support_bal_4086", %Uint128 %"$amount_4087"), !dbg !343 + store %Uint128 %"$add_call_4088", %Uint128* %expected_balance, align 8, !dbg !343 + %"$gasrem_4089" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4090" = icmp ugt i64 1, %"$gasrem_4089" + br i1 %"$gascmp_4090", label %"$out_of_gas_4091", label %"$have_gas_4092" + +"$out_of_gas_4091": ; preds = %"$have_gas_4084" + call void @_out_of_gas() + br label %"$have_gas_4092" + +"$have_gas_4092": ; preds = %"$out_of_gas_4091", %"$have_gas_4084" + %"$consume_4093" = sub i64 %"$gasrem_4089", 1 + store i64 %"$consume_4093", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_4094" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4095" = icmp ugt i64 1, %"$gasrem_4094" + br i1 %"$gascmp_4095", label %"$out_of_gas_4096", label %"$have_gas_4097" + +"$out_of_gas_4096": ; preds = %"$have_gas_4092" + call void @_out_of_gas() + br label %"$have_gas_4097" + +"$have_gas_4097": ; preds = %"$out_of_gas_4096", %"$have_gas_4092" + %"$consume_4098" = sub i64 %"$gasrem_4094", 1 + store i64 %"$consume_4098", i64* @_gasrem, align 8 + %"$msgobj_4099_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_4099_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_4099_salloc_load", i64 165) + %"$msgobj_4099_salloc" = bitcast i8* %"$msgobj_4099_salloc_salloc" to [165 x i8]* + %"$msgobj_4099" = bitcast [165 x i8]* %"$msgobj_4099_salloc" to i8* + store i8 4, i8* %"$msgobj_4099", align 1 + %"$msgobj_fname_4101" = getelementptr i8, i8* %"$msgobj_4099", i32 1 + %"$msgobj_fname_4102" = bitcast i8* %"$msgobj_fname_4101" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_4100", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_4102", align 8 + %"$msgobj_td_4103" = getelementptr i8, i8* %"$msgobj_4099", i32 17 + %"$msgobj_td_4104" = bitcast i8* %"$msgobj_td_4103" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_4104", align 8 + %"$_this_address_4105" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_4106" = getelementptr i8, i8* %"$msgobj_4099", i32 25 + %"$msgobj_v_4107" = bitcast i8* %"$msgobj_v_4106" to [20 x i8]* + store [20 x i8] %"$_this_address_4105", [20 x i8]* %"$msgobj_v_4107", align 1 + %"$msgobj_fname_4109" = getelementptr i8, i8* %"$msgobj_4099", i32 45 + %"$msgobj_fname_4110" = bitcast i8* %"$msgobj_fname_4109" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_4108", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_4110", align 8 + %"$msgobj_td_4111" = getelementptr i8, i8* %"$msgobj_4099", i32 61 + %"$msgobj_td_4112" = bitcast i8* %"$msgobj_td_4111" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_4112", align 8 + %"$msgobj_v_4114" = getelementptr i8, i8* %"$msgobj_4099", i32 69 + %"$msgobj_v_4115" = bitcast i8* %"$msgobj_v_4114" to %String* + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_4113", i32 0, i32 0), i32 21 }, %String* %"$msgobj_v_4115", align 8 + %"$msgobj_fname_4117" = getelementptr i8, i8* %"$msgobj_4099", i32 85 + %"$msgobj_fname_4118" = bitcast i8* %"$msgobj_fname_4117" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_4116", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_4118", align 8 + %"$msgobj_td_4119" = getelementptr i8, i8* %"$msgobj_4099", i32 101 + %"$msgobj_td_4120" = bitcast i8* %"$msgobj_td_4119" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_4120", align 8 + %"$msgobj_v_4121" = getelementptr i8, i8* %"$msgobj_4099", i32 109 + %"$msgobj_v_4122" = bitcast i8* %"$msgobj_v_4121" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_4122", align 8 + %"$msgobj_fname_4124" = getelementptr i8, i8* %"$msgobj_4099", i32 125 + %"$msgobj_fname_4125" = bitcast i8* %"$msgobj_fname_4124" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_4123", i32 0, i32 0), i32 16 }, %String* %"$msgobj_fname_4125", align 8 + %"$msgobj_td_4126" = getelementptr i8, i8* %"$msgobj_4099", i32 141 + %"$msgobj_td_4127" = bitcast i8* %"$msgobj_td_4126" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_4127", align 8 + %"$expected_balance_4128" = load %Uint128, %Uint128* %expected_balance, align 8 + %"$msgobj_v_4129" = getelementptr i8, i8* %"$msgobj_4099", i32 149 + %"$msgobj_v_4130" = bitcast i8* %"$msgobj_v_4129" to %Uint128* + store %Uint128 %"$expected_balance_4128", %Uint128* %"$msgobj_v_4130", align 8 + store i8* %"$msgobj_4099", i8** %msg2, align 8, !dbg !344 + %"$gasrem_4132" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4133" = icmp ugt i64 1, %"$gasrem_4132" + br i1 %"$gascmp_4133", label %"$out_of_gas_4134", label %"$have_gas_4135" + +"$out_of_gas_4134": ; preds = %"$have_gas_4097" + call void @_out_of_gas() + br label %"$have_gas_4135" + +"$have_gas_4135": ; preds = %"$out_of_gas_4134", %"$have_gas_4097" + %"$consume_4136" = sub i64 %"$gasrem_4132", 1 + store i64 %"$consume_4136", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_4137" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4138" = icmp ugt i64 1, %"$gasrem_4137" + br i1 %"$gascmp_4138", label %"$out_of_gas_4139", label %"$have_gas_4140" + +"$out_of_gas_4139": ; preds = %"$have_gas_4135" + call void @_out_of_gas() + br label %"$have_gas_4140" + +"$have_gas_4140": ; preds = %"$out_of_gas_4139", %"$have_gas_4135" + %"$consume_4141" = sub i64 %"$gasrem_4137", 1 + store i64 %"$consume_4141", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_44" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_4142" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_4143" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_4142", 0 + %"$accounting_tests.one_msg_envptr_4144" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_4142", 1 + %"$msg2_4145" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_4146" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_4143"(i8* %"$accounting_tests.one_msg_envptr_4144", i8* %"$msg2_4145"), !dbg !345 + store %TName_List_Message* %"$accounting_tests.one_msg_call_4146", %TName_List_Message** %"$accounting_tests.one_msg_44", align 8, !dbg !345 + %"$$accounting_tests.one_msg_44_4147" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_44", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_44_4147", %TName_List_Message** %msgs2, align 8, !dbg !345 + %"$msgs2_4148" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_4148_4149" = bitcast %TName_List_Message* %"$msgs2_4148" to i8* + %"$_literal_cost_call_4150" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_4148_4149") + %"$gasrem_4151" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4152" = icmp ugt i64 %"$_literal_cost_call_4150", %"$gasrem_4151" + br i1 %"$gascmp_4152", label %"$out_of_gas_4153", label %"$have_gas_4154" + +"$out_of_gas_4153": ; preds = %"$have_gas_4140" + call void @_out_of_gas() + br label %"$have_gas_4154" + +"$have_gas_4154": ; preds = %"$out_of_gas_4153", %"$have_gas_4140" + %"$consume_4155" = sub i64 %"$gasrem_4151", %"$_literal_cost_call_4150" + store i64 %"$consume_4155", i64* @_gasrem, align 8 + %"$execptr_load_4156" = load i8*, i8** @_execptr, align 8 + %"$msgs2_4157" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_4156", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_4157"), !dbg !346 + ret void +} + +define void @Test_Send_13(i8* %0) !dbg !347 { +entry: + %"$_amount_4159" = getelementptr i8, i8* %0, i32 0 + %"$_amount_4160" = bitcast i8* %"$_amount_4159" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_4160", align 8 + %"$_origin_4161" = getelementptr i8, i8* %0, i32 16 + %"$_origin_4162" = bitcast i8* %"$_origin_4161" to [20 x i8]* + %"$_sender_4163" = getelementptr i8, i8* %0, i32 36 + %"$_sender_4164" = bitcast i8* %"$_sender_4163" to [20 x i8]* + call void @"$Test_Send_13_3977"(%Uint128 %_amount, [20 x i8]* %"$_origin_4162", [20 x i8]* %"$_sender_4164"), !dbg !348 + ret void +} + +define internal void @"$Test_Send_14_4165"(%Uint128 %_amount, [20 x i8]* %"$_origin_4166", [20 x i8]* %"$_sender_4167") !dbg !349 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_4166", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_4167", align 1 + %"$gasrem_4168" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4169" = icmp ugt i64 1, %"$gasrem_4168" + br i1 %"$gascmp_4169", label %"$out_of_gas_4170", label %"$have_gas_4171" + +"$out_of_gas_4170": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_4171" + +"$have_gas_4171": ; preds = %"$out_of_gas_4170", %entry + %"$consume_4172" = sub i64 %"$gasrem_4168", 1 + store i64 %"$consume_4172", i64* @_gasrem, align 8 + %"$AssertReset__origin_4173" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_4173", align 1 + %"$AssertReset__sender_4174" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_4174", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_4173", [20 x i8]* %"$AssertReset__sender_4174"), !dbg !350 + %amount = alloca %Uint128, align 8 + %"$execptr_load_4176" = load i8*, i8** @_execptr, align 8 + %"$amount_call_4177" = call i8* @_fetch_field(i8* %"$execptr_load_4176", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_4175", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1), !dbg !351 + %"$amount_4178" = bitcast i8* %"$amount_call_4177" to %Uint128* + %"$amount_4179" = load %Uint128, %Uint128* %"$amount_4178", align 8 + store %Uint128 %"$amount_4179", %Uint128* %amount, align 8 + %"$_literal_cost_amount_4180" = alloca %Uint128, align 8 + %"$amount_4181" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_4181", %Uint128* %"$_literal_cost_amount_4180", align 8 + %"$$_literal_cost_amount_4180_4182" = bitcast %Uint128* %"$_literal_cost_amount_4180" to i8* + %"$_literal_cost_call_4183" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_4180_4182") + %"$gasadd_4184" = add i64 %"$_literal_cost_call_4183", 0 + %"$gasrem_4185" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4186" = icmp ugt i64 %"$gasadd_4184", %"$gasrem_4185" + br i1 %"$gascmp_4186", label %"$out_of_gas_4187", label %"$have_gas_4188" + +"$out_of_gas_4187": ; preds = %"$have_gas_4171" + call void @_out_of_gas() + br label %"$have_gas_4188" + +"$have_gas_4188": ; preds = %"$out_of_gas_4187", %"$have_gas_4171" + %"$consume_4189" = sub i64 %"$gasrem_4185", %"$gasadd_4184" + store i64 %"$consume_4189", i64* @_gasrem, align 8 + %"$gasrem_4190" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4191" = icmp ugt i64 1, %"$gasrem_4190" + br i1 %"$gascmp_4191", label %"$out_of_gas_4192", label %"$have_gas_4193" + +"$out_of_gas_4192": ; preds = %"$have_gas_4188" + call void @_out_of_gas() + br label %"$have_gas_4193" + +"$have_gas_4193": ; preds = %"$out_of_gas_4192", %"$have_gas_4188" + %"$consume_4194" = sub i64 %"$gasrem_4190", 1 + store i64 %"$consume_4194", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_4195" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4196" = icmp ugt i64 1, %"$gasrem_4195" + br i1 %"$gascmp_4196", label %"$out_of_gas_4197", label %"$have_gas_4198" + +"$out_of_gas_4197": ; preds = %"$have_gas_4193" + call void @_out_of_gas() + br label %"$have_gas_4198" + +"$have_gas_4198": ; preds = %"$out_of_gas_4197", %"$have_gas_4193" + %"$consume_4199" = sub i64 %"$gasrem_4195", 1 + store i64 %"$consume_4199", i64* @_gasrem, align 8 + %"$msgobj_4200_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_4200_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_4200_salloc_load", i64 125) + %"$msgobj_4200_salloc" = bitcast i8* %"$msgobj_4200_salloc_salloc" to [125 x i8]* + %"$msgobj_4200" = bitcast [125 x i8]* %"$msgobj_4200_salloc" to i8* + store i8 3, i8* %"$msgobj_4200", align 1 + %"$msgobj_fname_4202" = getelementptr i8, i8* %"$msgobj_4200", i32 1 + %"$msgobj_fname_4203" = bitcast i8* %"$msgobj_fname_4202" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_4201", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_4203", align 8 + %"$msgobj_td_4204" = getelementptr i8, i8* %"$msgobj_4200", i32 17 + %"$msgobj_td_4205" = bitcast i8* %"$msgobj_td_4204" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_4205", align 8 + %"$support_contract_4206" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_4207" = getelementptr i8, i8* %"$msgobj_4200", i32 25 + %"$msgobj_v_4208" = bitcast i8* %"$msgobj_v_4207" to [20 x i8]* + store [20 x i8] %"$support_contract_4206", [20 x i8]* %"$msgobj_v_4208", align 1 + %"$msgobj_fname_4210" = getelementptr i8, i8* %"$msgobj_4200", i32 45 + %"$msgobj_fname_4211" = bitcast i8* %"$msgobj_fname_4210" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_4209", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_4211", align 8 + %"$msgobj_td_4212" = getelementptr i8, i8* %"$msgobj_4200", i32 61 + %"$msgobj_td_4213" = bitcast i8* %"$msgobj_td_4212" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_4213", align 8 + %"$msgobj_v_4215" = getelementptr i8, i8* %"$msgobj_4200", i32 69 + %"$msgobj_v_4216" = bitcast i8* %"$msgobj_v_4215" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_4214", i32 0, i32 0), i32 6 }, %String* %"$msgobj_v_4216", align 8 + %"$msgobj_fname_4218" = getelementptr i8, i8* %"$msgobj_4200", i32 85 + %"$msgobj_fname_4219" = bitcast i8* %"$msgobj_fname_4218" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_4217", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_4219", align 8 + %"$msgobj_td_4220" = getelementptr i8, i8* %"$msgobj_4200", i32 101 + %"$msgobj_td_4221" = bitcast i8* %"$msgobj_td_4220" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_4221", align 8 + %"$amount_4222" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_4223" = getelementptr i8, i8* %"$msgobj_4200", i32 109 + %"$msgobj_v_4224" = bitcast i8* %"$msgobj_v_4223" to %Uint128* + store %Uint128 %"$amount_4222", %Uint128* %"$msgobj_v_4224", align 8 + store i8* %"$msgobj_4200", i8** %msg1, align 8, !dbg !352 + %"$gasrem_4226" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4227" = icmp ugt i64 1, %"$gasrem_4226" + br i1 %"$gascmp_4227", label %"$out_of_gas_4228", label %"$have_gas_4229" + +"$out_of_gas_4228": ; preds = %"$have_gas_4198" + call void @_out_of_gas() + br label %"$have_gas_4229" + +"$have_gas_4229": ; preds = %"$out_of_gas_4228", %"$have_gas_4198" + %"$consume_4230" = sub i64 %"$gasrem_4226", 1 + store i64 %"$consume_4230", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_4231" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4232" = icmp ugt i64 1, %"$gasrem_4231" + br i1 %"$gascmp_4232", label %"$out_of_gas_4233", label %"$have_gas_4234" + +"$out_of_gas_4233": ; preds = %"$have_gas_4229" + call void @_out_of_gas() + br label %"$have_gas_4234" + +"$have_gas_4234": ; preds = %"$out_of_gas_4233", %"$have_gas_4229" + %"$consume_4235" = sub i64 %"$gasrem_4231", 1 + store i64 %"$consume_4235", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_46" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_4236" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_4237" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_4236", 0 + %"$accounting_tests.one_msg_envptr_4238" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_4236", 1 + %"$msg1_4239" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_4240" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_4237"(i8* %"$accounting_tests.one_msg_envptr_4238", i8* %"$msg1_4239"), !dbg !353 + store %TName_List_Message* %"$accounting_tests.one_msg_call_4240", %TName_List_Message** %"$accounting_tests.one_msg_46", align 8, !dbg !353 + %"$$accounting_tests.one_msg_46_4241" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_46", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_46_4241", %TName_List_Message** %msgs, align 8, !dbg !353 + %"$msgs_4242" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_4242_4243" = bitcast %TName_List_Message* %"$msgs_4242" to i8* + %"$_literal_cost_call_4244" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_4242_4243") + %"$gasrem_4245" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4246" = icmp ugt i64 %"$_literal_cost_call_4244", %"$gasrem_4245" + br i1 %"$gascmp_4246", label %"$out_of_gas_4247", label %"$have_gas_4248" + +"$out_of_gas_4247": ; preds = %"$have_gas_4234" + call void @_out_of_gas() + br label %"$have_gas_4248" + +"$have_gas_4248": ; preds = %"$out_of_gas_4247", %"$have_gas_4234" + %"$consume_4249" = sub i64 %"$gasrem_4245", %"$_literal_cost_call_4244" + store i64 %"$consume_4249", i64* @_gasrem, align 8 + %"$execptr_load_4250" = load i8*, i8** @_execptr, align 8 + %"$msgs_4251" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_4250", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_4251"), !dbg !354 + ret void +} + +define void @Test_Send_14(i8* %0) !dbg !355 { +entry: + %"$_amount_4253" = getelementptr i8, i8* %0, i32 0 + %"$_amount_4254" = bitcast i8* %"$_amount_4253" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_4254", align 8 + %"$_origin_4255" = getelementptr i8, i8* %0, i32 16 + %"$_origin_4256" = bitcast i8* %"$_origin_4255" to [20 x i8]* + %"$_sender_4257" = getelementptr i8, i8* %0, i32 36 + %"$_sender_4258" = bitcast i8* %"$_sender_4257" to [20 x i8]* + call void @"$Test_Send_14_4165"(%Uint128 %_amount, [20 x i8]* %"$_origin_4256", [20 x i8]* %"$_sender_4258"), !dbg !356 + ret void +} + +!llvm.module.flags = !{!0} +!llvm.dbg.cu = !{!1} + +!0 = !{i32 2, !"Debug Info Version", i32 3} +!1 = distinct !DICompileUnit(language: DW_LANG_C89, file: !2, producer: "Scilla Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !3, splitDebugInlining: false) +!2 = !DIFile(filename: "accounting_tests.scilla", directory: "codegen/contr") +!3 = !{} +!4 = distinct !DISubprogram(name: "$fundef_79", linkageName: "$fundef_79", scope: !2, file: !2, line: 14, type: !5, scopeLine: 14, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!5 = !DISubroutineType(types: !6) +!6 = !{!7} +!7 = !DIBasicType(tag: DW_TAG_unspecified_type, name: "void") +!8 = !DILocation(line: 14, column: 59, scope: !4) +!9 = distinct !DISubprogram(name: "$fundef_77", linkageName: "$fundef_77", scope: !2, file: !2, line: 14, type: !5, scopeLine: 14, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!10 = !DILocation(line: 14, column: 59, scope: !9) +!11 = distinct !DISubprogram(name: "$fundef_81", linkageName: "$fundef_81", scope: !2, file: !2, line: 9, type: !5, scopeLine: 9, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!12 = !DILocation(line: 9, column: 15, scope: !11) +!13 = !DILocation(line: 10, column: 5, scope: !11) +!14 = distinct !DISubprogram(name: "$fundef_71", linkageName: "$fundef_71", scope: !15, file: !15, line: 147, type: !5, scopeLine: 147, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!15 = !DIFile(filename: "ListUtils.scillib", directory: "../src/stdlib") +!16 = !DILocation(line: 147, column: 9, scope: !14) +!17 = !DILocation(line: 149, column: 26, scope: !18) +!18 = distinct !DILexicalBlock(scope: !19, file: !15, line: 148, column: 11) +!19 = distinct !DILexicalBlock(scope: !14, file: !15, line: 147, column: 9) +!20 = !DILocation(line: 150, column: 11, scope: !18) +!21 = !DILocation(line: 151, column: 21, scope: !22) +!22 = distinct !DILexicalBlock(scope: !23, file: !15, line: 151, column: 13) +!23 = distinct !DILexicalBlock(scope: !18, file: !15, line: 150, column: 11) +!24 = !DILocation(line: 152, column: 22, scope: !25) +!25 = distinct !DILexicalBlock(scope: !23, file: !15, line: 152, column: 13) +!26 = !DILocation(line: 154, column: 18, scope: !27) +!27 = distinct !DILexicalBlock(scope: !19, file: !15, line: 154, column: 11) +!28 = distinct !DISubprogram(name: "$fundef_69", linkageName: "$fundef_69", scope: !15, file: !15, line: 146, type: !5, scopeLine: 146, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!29 = !DILocation(line: 147, column: 9, scope: !28) +!30 = distinct !DISubprogram(name: "$fundef_67", linkageName: "$fundef_67", scope: !15, file: !15, line: 145, type: !5, scopeLine: 145, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!31 = !DILocation(line: 146, column: 7, scope: !30) +!32 = distinct !DISubprogram(name: "$fundef_65", linkageName: "$fundef_65", scope: !15, file: !15, line: 143, type: !5, scopeLine: 143, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!33 = !DILocation(line: 143, column: 18, scope: !32) +!34 = !DILocation(line: 143, column: 17, scope: !32) +!35 = !DILocation(line: 145, column: 30, scope: !32) +!36 = !DILocation(line: 156, column: 21, scope: !32) +!37 = !DILocation(line: 157, column: 5, scope: !32) +!38 = !DILocation(line: 158, column: 19, scope: !39) +!39 = distinct !DILexicalBlock(scope: !40, file: !15, line: 158, column: 7) +!40 = distinct !DILexicalBlock(scope: !32, file: !15, line: 157, column: 5) +!41 = !DILocation(line: 159, column: 14, scope: !42) +!42 = distinct !DILexicalBlock(scope: !40, file: !15, line: 159, column: 7) +!43 = distinct !DISubprogram(name: "$fundef_63", linkageName: "$fundef_63", scope: !15, file: !15, line: 142, type: !5, scopeLine: 142, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!44 = !DILocation(line: 143, column: 5, scope: !43) +!45 = distinct !DISubprogram(name: "$fundef_61", linkageName: "$fundef_61", scope: !15, file: !15, line: 142, type: !5, scopeLine: 142, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!46 = !DILocation(line: 142, column: 25, scope: !45) +!47 = distinct !DISubprogram(name: "$fundef_59", linkageName: "$fundef_59", scope: !15, file: !15, line: 142, type: !5, scopeLine: 142, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!48 = !DILocation(line: 142, column: 3, scope: !47) +!49 = distinct !DISubprogram(name: "$fundef_75", linkageName: "$fundef_75", scope: !15, file: !15, line: 52, type: !5, scopeLine: 52, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!50 = !DILocation(line: 52, column: 5, scope: !49) +!51 = !DILocation(line: 53, column: 19, scope: !52) +!52 = distinct !DILexicalBlock(scope: !53, file: !15, line: 53, column: 7) +!53 = distinct !DILexicalBlock(scope: !49, file: !15, line: 52, column: 5) +!54 = !DILocation(line: 54, column: 14, scope: !55) +!55 = distinct !DILexicalBlock(scope: !53, file: !15, line: 54, column: 7) +!56 = distinct !DISubprogram(name: "$fundef_73", linkageName: "$fundef_73", scope: !15, file: !15, line: 52, type: !5, scopeLine: 52, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!57 = !DILocation(line: 52, column: 5, scope: !56) +!58 = distinct !DISubprogram(name: "$fundef_57", linkageName: "$fundef_57", scope: !59, file: !59, line: 1, type: !5, scopeLine: 1, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!59 = !DIFile(filename: "Prelude", directory: ".") +!60 = !DILocation(line: 1, column: 94, scope: !58) +!61 = distinct !DISubprogram(name: "$fundef_55", linkageName: "$fundef_55", scope: !59, file: !59, line: 1, type: !5, scopeLine: 1, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!62 = !DILocation(line: 1, column: 37, scope: !61) +!63 = !DILocation(line: 1, column: 94, scope: !64) +!64 = distinct !DILexicalBlock(scope: !65, file: !59, line: 1, column: 52) +!65 = distinct !DILexicalBlock(scope: !61, file: !59, line: 1, column: 37) +!66 = !DILocation(line: 1, column: 106, scope: !64) +!67 = !DILocation(line: 1, column: 129, scope: !68) +!68 = distinct !DILexicalBlock(scope: !65, file: !59, line: 1, column: 122) +!69 = distinct !DISubprogram(name: "$fundef_53", linkageName: "$fundef_53", scope: !59, file: !59, line: 1, type: !5, scopeLine: 1, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!70 = !DILocation(line: 1, column: 37, scope: !69) +!71 = distinct !DISubprogram(name: "$fundef_51", linkageName: "$fundef_51", scope: !59, file: !59, line: 1, type: !5, scopeLine: 1, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!72 = !DILocation(line: 1, column: 17, scope: !71) +!73 = distinct !DISubprogram(name: "$fundef_49", linkageName: "$fundef_49", scope: !59, file: !59, line: 1, type: !5, scopeLine: 1, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!74 = !DILocation(line: 1, column: 17, scope: !73) +!75 = distinct !DISubprogram(name: "$fundef_47", linkageName: "$fundef_47", scope: !59, file: !59, line: 1, type: !5, scopeLine: 1, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!76 = !DILocation(line: 1, column: 17, scope: !75) +!77 = distinct !DISubprogram(name: "_init_libs", linkageName: "_init_libs", scope: !78, file: !78, type: !5, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!78 = !DIFile(filename: ".", directory: ".") +!79 = !DILocation(line: 1, column: 17, scope: !77) +!80 = !DILocation(line: 50, column: 3, scope: !77) +!81 = !DILocation(line: 140, column: 3, scope: !77) +!82 = !DILocation(line: 9, column: 5, scope: !77) +!83 = !DILocation(line: 12, column: 25, scope: !77) +!84 = !DILocation(line: 12, column: 24, scope: !77) +!85 = !DILocation(line: 14, column: 39, scope: !77) +!86 = !DILocation(line: 15, column: 25, scope: !77) +!87 = !DILocation(line: 15, column: 24, scope: !77) +!88 = !DILocation(line: 16, column: 3, scope: !77) +!89 = distinct !DISubprogram(name: "_init_state", linkageName: "_init_state", scope: !78, file: !78, type: !5, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!90 = !DILocation(line: 20, column: 38, scope: !89) +!91 = !DILocation(line: 21, column: 38, scope: !89) +!92 = !DILocation(line: 23, column: 35, scope: !89) +!93 = !DILocation(line: 24, column: 37, scope: !89) +!94 = distinct !DISubprogram(name: "Reset", linkageName: "Reset", scope: !2, file: !2, line: 26, type: !5, scopeLine: 26, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!95 = !DILocation(line: 27, column: 9, scope: !94) +!96 = !DILocation(line: 30, column: 10, scope: !94) +!97 = !DILocation(line: 31, column: 3, scope: !94) +!98 = !DILocation(line: 32, column: 3, scope: !94) +!99 = distinct !DISubprogram(name: "Reset", linkageName: "Reset", scope: !2, file: !2, line: 26, type: !5, scopeLine: 26, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!100 = !DILocation(line: 26, column: 12, scope: !99) +!101 = distinct !DISubprogram(name: "AssertReset", linkageName: "AssertReset", scope: !2, file: !2, line: 35, type: !5, scopeLine: 35, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!102 = !DILocation(line: 36, column: 3, scope: !101) +!103 = !DILocation(line: 37, column: 14, scope: !101) +!104 = !DILocation(line: 38, column: 3, scope: !101) +!105 = !DILocation(line: 41, column: 9, scope: !106) +!106 = distinct !DILexicalBlock(scope: !107, file: !2, line: 40, column: 5) +!107 = distinct !DILexicalBlock(scope: !101, file: !2, line: 38, column: 3) +!108 = !DILocation(line: 42, column: 5, scope: !106) +!109 = !DILocation(line: 45, column: 3, scope: !101) +!110 = !DILocation(line: 46, column: 3, scope: !101) +!111 = !DILocation(line: 47, column: 13, scope: !101) +!112 = !DILocation(line: 48, column: 3, scope: !101) +!113 = !DILocation(line: 49, column: 26, scope: !101) +!114 = !DILocation(line: 50, column: 3, scope: !101) +!115 = !DILocation(line: 53, column: 9, scope: !116) +!116 = distinct !DILexicalBlock(scope: !117, file: !2, line: 52, column: 5) +!117 = distinct !DILexicalBlock(scope: !101, file: !2, line: 50, column: 3) +!118 = !DILocation(line: 54, column: 5, scope: !116) +!119 = distinct !DISubprogram(name: "Test_Insufficient_Balance", linkageName: "Test_Insufficient_Balance", scope: !2, file: !2, line: 60, type: !5, scopeLine: 60, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!120 = !DILocation(line: 61, column: 3, scope: !119) +!121 = !DILocation(line: 62, column: 10, scope: !119) +!122 = !DILocation(line: 65, column: 10, scope: !119) +!123 = !DILocation(line: 66, column: 3, scope: !119) +!124 = distinct !DISubprogram(name: "Test_Insufficient_Balance", linkageName: "Test_Insufficient_Balance", scope: !2, file: !2, line: 60, type: !5, scopeLine: 60, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!125 = !DILocation(line: 60, column: 12, scope: !124) +!126 = distinct !DISubprogram(name: "Test_Send_1", linkageName: "Test_Send_1", scope: !2, file: !2, line: 74, type: !5, scopeLine: 74, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!127 = !DILocation(line: 75, column: 3, scope: !126) +!128 = !DILocation(line: 76, column: 3, scope: !126) +!129 = !DILocation(line: 77, column: 10, scope: !126) +!130 = !DILocation(line: 81, column: 11, scope: !126) +!131 = !DILocation(line: 82, column: 3, scope: !126) +!132 = !DILocation(line: 83, column: 3, scope: !126) +!133 = !DILocation(line: 84, column: 10, scope: !126) +!134 = !DILocation(line: 88, column: 11, scope: !126) +!135 = !DILocation(line: 89, column: 3, scope: !126) +!136 = !DILocation(line: 90, column: 15, scope: !126) +!137 = !DILocation(line: 93, column: 16, scope: !126) +!138 = !DILocation(line: 94, column: 3, scope: !126) +!139 = distinct !DISubprogram(name: "Test_Send_1", linkageName: "Test_Send_1", scope: !2, file: !2, line: 74, type: !5, scopeLine: 74, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!140 = !DILocation(line: 74, column: 12, scope: !139) +!141 = distinct !DISubprogram(name: "Finalize_Test_Send_Helper_2_Msgs", linkageName: "Finalize_Test_Send_Helper_2_Msgs", scope: !2, file: !2, line: 97, type: !5, scopeLine: 97, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!142 = !DILocation(line: 98, column: 3, scope: !141) +!143 = !DILocation(line: 99, column: 3, scope: !141) +!144 = !DILocation(line: 101, column: 15, scope: !141) +!145 = !DILocation(line: 102, column: 15, scope: !141) +!146 = !DILocation(line: 103, column: 5, scope: !141) +!147 = !DILocation(line: 104, column: 3, scope: !141) +!148 = !DILocation(line: 105, column: 9, scope: !141) +!149 = !DILocation(line: 106, column: 3, scope: !141) +!150 = !DILocation(line: 109, column: 9, scope: !151) +!151 = distinct !DILexicalBlock(scope: !152, file: !2, line: 108, column: 5) +!152 = distinct !DILexicalBlock(scope: !141, file: !2, line: 106, column: 3) +!153 = !DILocation(line: 110, column: 5, scope: !151) +!154 = distinct !DISubprogram(name: "Finalize_Test_Send_1", linkageName: "Finalize_Test_Send_1", scope: !2, file: !2, line: 115, type: !5, scopeLine: 115, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!155 = !DILocation(line: 116, column: 7, scope: !154) +!156 = !DILocation(line: 117, column: 3, scope: !154) +!157 = distinct !DISubprogram(name: "Finalize_Test_Send_1", linkageName: "Finalize_Test_Send_1", scope: !2, file: !2, line: 115, type: !5, scopeLine: 115, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!158 = !DILocation(line: 115, column: 12, scope: !157) +!159 = distinct !DISubprogram(name: "Test_Send_2", linkageName: "Test_Send_2", scope: !2, file: !2, line: 121, type: !5, scopeLine: 121, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!160 = !DILocation(line: 122, column: 3, scope: !159) +!161 = !DILocation(line: 123, column: 3, scope: !159) +!162 = !DILocation(line: 124, column: 10, scope: !159) +!163 = !DILocation(line: 128, column: 3, scope: !159) +!164 = !DILocation(line: 129, column: 10, scope: !159) +!165 = !DILocation(line: 133, column: 14, scope: !159) +!166 = !DILocation(line: 134, column: 10, scope: !159) +!167 = !DILocation(line: 135, column: 3, scope: !159) +!168 = !DILocation(line: 136, column: 15, scope: !159) +!169 = !DILocation(line: 139, column: 16, scope: !159) +!170 = !DILocation(line: 140, column: 3, scope: !159) +!171 = distinct !DISubprogram(name: "Test_Send_2", linkageName: "Test_Send_2", scope: !2, file: !2, line: 121, type: !5, scopeLine: 121, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!172 = !DILocation(line: 121, column: 12, scope: !171) +!173 = distinct !DISubprogram(name: "Finalize_Test_Send_2", linkageName: "Finalize_Test_Send_2", scope: !2, file: !2, line: 144, type: !5, scopeLine: 144, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!174 = !DILocation(line: 145, column: 7, scope: !173) +!175 = !DILocation(line: 146, column: 3, scope: !173) +!176 = distinct !DISubprogram(name: "Finalize_Test_Send_2", linkageName: "Finalize_Test_Send_2", scope: !2, file: !2, line: 144, type: !5, scopeLine: 144, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!177 = !DILocation(line: 144, column: 12, scope: !176) +!178 = distinct !DISubprogram(name: "Test_Send_3", linkageName: "Test_Send_3", scope: !2, file: !2, line: 150, type: !5, scopeLine: 150, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!179 = !DILocation(line: 151, column: 3, scope: !178) +!180 = !DILocation(line: 153, column: 10, scope: !178) +!181 = !DILocation(line: 156, column: 11, scope: !178) +!182 = !DILocation(line: 157, column: 3, scope: !178) +!183 = !DILocation(line: 158, column: 3, scope: !178) +!184 = !DILocation(line: 159, column: 10, scope: !178) +!185 = !DILocation(line: 163, column: 11, scope: !178) +!186 = !DILocation(line: 164, column: 3, scope: !178) +!187 = !DILocation(line: 165, column: 15, scope: !178) +!188 = !DILocation(line: 168, column: 16, scope: !178) +!189 = !DILocation(line: 169, column: 3, scope: !178) +!190 = distinct !DISubprogram(name: "Test_Send_3", linkageName: "Test_Send_3", scope: !2, file: !2, line: 150, type: !5, scopeLine: 150, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!191 = !DILocation(line: 150, column: 12, scope: !190) +!192 = distinct !DISubprogram(name: "Test_Send_3_Helper", linkageName: "Test_Send_3_Helper", scope: !2, file: !2, line: 173, type: !5, scopeLine: 173, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!193 = !DILocation(line: 174, column: 3, scope: !192) +!194 = !DILocation(line: 175, column: 10, scope: !192) +!195 = !DILocation(line: 179, column: 11, scope: !192) +!196 = !DILocation(line: 180, column: 3, scope: !192) +!197 = distinct !DISubprogram(name: "Test_Send_3_Helper", linkageName: "Test_Send_3_Helper", scope: !2, file: !2, line: 173, type: !5, scopeLine: 173, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!198 = !DILocation(line: 173, column: 12, scope: !197) +!199 = distinct !DISubprogram(name: "Finalize_Test_Send_3", linkageName: "Finalize_Test_Send_3", scope: !2, file: !2, line: 184, type: !5, scopeLine: 184, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!200 = !DILocation(line: 185, column: 7, scope: !199) +!201 = !DILocation(line: 186, column: 3, scope: !199) +!202 = distinct !DISubprogram(name: "Finalize_Test_Send_3", linkageName: "Finalize_Test_Send_3", scope: !2, file: !2, line: 184, type: !5, scopeLine: 184, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!203 = !DILocation(line: 184, column: 12, scope: !202) +!204 = distinct !DISubprogram(name: "CheckBalance", linkageName: "CheckBalance", scope: !2, file: !2, line: 199, type: !5, scopeLine: 199, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!205 = !DILocation(line: 200, column: 3, scope: !204) +!206 = !DILocation(line: 201, column: 17, scope: !204) +!207 = !DILocation(line: 202, column: 3, scope: !204) +!208 = !DILocation(line: 205, column: 9, scope: !209) +!209 = distinct !DILexicalBlock(scope: !210, file: !2, line: 204, column: 5) +!210 = distinct !DILexicalBlock(scope: !204, file: !2, line: 202, column: 3) +!211 = !DILocation(line: 208, column: 5, scope: !209) +!212 = distinct !DISubprogram(name: "CheckSenderBalance", linkageName: "CheckSenderBalance", scope: !2, file: !2, line: 212, type: !5, scopeLine: 212, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!213 = !DILocation(line: 213, column: 3, scope: !212) +!214 = distinct !DISubprogram(name: "CheckSenderBalance", linkageName: "CheckSenderBalance", scope: !2, file: !2, line: 212, type: !5, scopeLine: 212, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!215 = !DILocation(line: 212, column: 12, scope: !214) +!216 = distinct !DISubprogram(name: "CheckSupportBalance", linkageName: "CheckSupportBalance", scope: !2, file: !2, line: 216, type: !5, scopeLine: 216, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!217 = !DILocation(line: 217, column: 3, scope: !216) +!218 = !DILocation(line: 218, column: 17, scope: !216) +!219 = !DILocation(line: 219, column: 3, scope: !216) +!220 = !DILocation(line: 222, column: 9, scope: !221) +!221 = distinct !DILexicalBlock(scope: !222, file: !2, line: 221, column: 5) +!222 = distinct !DILexicalBlock(scope: !216, file: !2, line: 219, column: 3) +!223 = !DILocation(line: 225, column: 5, scope: !221) +!224 = distinct !DISubprogram(name: "CheckRecipientBalance", linkageName: "CheckRecipientBalance", scope: !2, file: !2, line: 229, type: !5, scopeLine: 229, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!225 = !DILocation(line: 230, column: 3, scope: !224) +!226 = distinct !DISubprogram(name: "CheckRecipientBalance", linkageName: "CheckRecipientBalance", scope: !2, file: !2, line: 229, type: !5, scopeLine: 229, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!227 = !DILocation(line: 229, column: 12, scope: !226) +!228 = distinct !DISubprogram(name: "Test_Send_4", linkageName: "Test_Send_4", scope: !2, file: !2, line: 234, type: !5, scopeLine: 234, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!229 = !DILocation(line: 235, column: 3, scope: !228) +!230 = !DILocation(line: 236, column: 3, scope: !228) +!231 = !DILocation(line: 237, column: 3, scope: !228) +!232 = !DILocation(line: 238, column: 10, scope: !228) +!233 = !DILocation(line: 241, column: 11, scope: !228) +!234 = !DILocation(line: 242, column: 3, scope: !228) +!235 = !DILocation(line: 243, column: 35, scope: !228) +!236 = !DILocation(line: 244, column: 3, scope: !228) +!237 = !DILocation(line: 245, column: 10, scope: !228) +!238 = !DILocation(line: 248, column: 11, scope: !228) +!239 = !DILocation(line: 249, column: 3, scope: !228) +!240 = !DILocation(line: 250, column: 28, scope: !228) +!241 = !DILocation(line: 251, column: 3, scope: !228) +!242 = distinct !DISubprogram(name: "Test_Send_4", linkageName: "Test_Send_4", scope: !2, file: !2, line: 234, type: !5, scopeLine: 234, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!243 = !DILocation(line: 234, column: 12, scope: !242) +!244 = distinct !DISubprogram(name: "Test_Send_5", linkageName: "Test_Send_5", scope: !2, file: !2, line: 255, type: !5, scopeLine: 255, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!245 = !DILocation(line: 256, column: 3, scope: !244) +!246 = !DILocation(line: 257, column: 3, scope: !244) +!247 = !DILocation(line: 258, column: 3, scope: !244) +!248 = !DILocation(line: 259, column: 10, scope: !244) +!249 = !DILocation(line: 262, column: 10, scope: !244) +!250 = !DILocation(line: 265, column: 14, scope: !244) +!251 = !DILocation(line: 266, column: 10, scope: !244) +!252 = !DILocation(line: 267, column: 3, scope: !244) +!253 = !DILocation(line: 268, column: 35, scope: !244) +!254 = !DILocation(line: 269, column: 28, scope: !244) +!255 = !DILocation(line: 270, column: 3, scope: !244) +!256 = distinct !DISubprogram(name: "Test_Send_5", linkageName: "Test_Send_5", scope: !2, file: !2, line: 255, type: !5, scopeLine: 255, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!257 = !DILocation(line: 255, column: 12, scope: !256) +!258 = distinct !DISubprogram(name: "Test_Send_6", linkageName: "Test_Send_6", scope: !2, file: !2, line: 274, type: !5, scopeLine: 274, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!259 = !DILocation(line: 275, column: 3, scope: !258) +!260 = !DILocation(line: 276, column: 3, scope: !258) +!261 = !DILocation(line: 277, column: 3, scope: !258) +!262 = !DILocation(line: 278, column: 10, scope: !258) +!263 = !DILocation(line: 281, column: 11, scope: !258) +!264 = !DILocation(line: 282, column: 3, scope: !258) +!265 = !DILocation(line: 283, column: 22, scope: !258) +!266 = !DILocation(line: 284, column: 10, scope: !258) +!267 = !DILocation(line: 288, column: 11, scope: !258) +!268 = !DILocation(line: 289, column: 3, scope: !258) +!269 = distinct !DISubprogram(name: "Test_Send_6", linkageName: "Test_Send_6", scope: !2, file: !2, line: 274, type: !5, scopeLine: 274, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!270 = !DILocation(line: 274, column: 12, scope: !269) +!271 = distinct !DISubprogram(name: "Test_Send_7", linkageName: "Test_Send_7", scope: !2, file: !2, line: 293, type: !5, scopeLine: 293, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!272 = !DILocation(line: 294, column: 3, scope: !271) +!273 = !DILocation(line: 295, column: 3, scope: !271) +!274 = !DILocation(line: 296, column: 3, scope: !271) +!275 = !DILocation(line: 297, column: 10, scope: !271) +!276 = !DILocation(line: 300, column: 11, scope: !271) +!277 = !DILocation(line: 301, column: 3, scope: !271) +!278 = !DILocation(line: 302, column: 10, scope: !271) +!279 = !DILocation(line: 306, column: 11, scope: !271) +!280 = !DILocation(line: 307, column: 3, scope: !271) +!281 = distinct !DISubprogram(name: "Test_Send_7", linkageName: "Test_Send_7", scope: !2, file: !2, line: 293, type: !5, scopeLine: 293, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!282 = !DILocation(line: 293, column: 12, scope: !281) +!283 = distinct !DISubprogram(name: "Test_Send_8", linkageName: "Test_Send_8", scope: !2, file: !2, line: 311, type: !5, scopeLine: 311, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!284 = !DILocation(line: 312, column: 3, scope: !283) +!285 = !DILocation(line: 313, column: 3, scope: !283) +!286 = !DILocation(line: 314, column: 10, scope: !283) +!287 = !DILocation(line: 317, column: 11, scope: !283) +!288 = !DILocation(line: 318, column: 3, scope: !283) +!289 = !DILocation(line: 319, column: 3, scope: !283) +!290 = !DILocation(line: 320, column: 22, scope: !283) +!291 = !DILocation(line: 321, column: 10, scope: !283) +!292 = !DILocation(line: 325, column: 11, scope: !283) +!293 = !DILocation(line: 326, column: 3, scope: !283) +!294 = distinct !DISubprogram(name: "Test_Send_8", linkageName: "Test_Send_8", scope: !2, file: !2, line: 311, type: !5, scopeLine: 311, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!295 = !DILocation(line: 311, column: 12, scope: !294) +!296 = distinct !DISubprogram(name: "Test_Send_9", linkageName: "Test_Send_9", scope: !2, file: !2, line: 330, type: !5, scopeLine: 330, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!297 = !DILocation(line: 331, column: 3, scope: !296) +!298 = !DILocation(line: 332, column: 3, scope: !296) +!299 = !DILocation(line: 333, column: 10, scope: !296) +!300 = !DILocation(line: 336, column: 11, scope: !296) +!301 = !DILocation(line: 337, column: 3, scope: !296) +!302 = !DILocation(line: 338, column: 3, scope: !296) +!303 = !DILocation(line: 339, column: 10, scope: !296) +!304 = !DILocation(line: 343, column: 11, scope: !296) +!305 = !DILocation(line: 344, column: 3, scope: !296) +!306 = distinct !DISubprogram(name: "Test_Send_9", linkageName: "Test_Send_9", scope: !2, file: !2, line: 330, type: !5, scopeLine: 330, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!307 = !DILocation(line: 330, column: 12, scope: !306) +!308 = distinct !DISubprogram(name: "Test_Send_10", linkageName: "Test_Send_10", scope: !2, file: !2, line: 348, type: !5, scopeLine: 348, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!309 = !DILocation(line: 349, column: 3, scope: !308) +!310 = !DILocation(line: 350, column: 3, scope: !308) +!311 = !DILocation(line: 351, column: 10, scope: !308) +!312 = !DILocation(line: 354, column: 10, scope: !308) +!313 = !DILocation(line: 355, column: 3, scope: !308) +!314 = distinct !DISubprogram(name: "Test_Send_10", linkageName: "Test_Send_10", scope: !2, file: !2, line: 348, type: !5, scopeLine: 348, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!315 = !DILocation(line: 348, column: 12, scope: !314) +!316 = distinct !DISubprogram(name: "Test_Send_11", linkageName: "Test_Send_11", scope: !2, file: !2, line: 359, type: !5, scopeLine: 359, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!317 = !DILocation(line: 360, column: 3, scope: !316) +!318 = !DILocation(line: 361, column: 3, scope: !316) +!319 = !DILocation(line: 362, column: 10, scope: !316) +!320 = !DILocation(line: 365, column: 10, scope: !316) +!321 = !DILocation(line: 366, column: 3, scope: !316) +!322 = distinct !DISubprogram(name: "Test_Send_11", linkageName: "Test_Send_11", scope: !2, file: !2, line: 359, type: !5, scopeLine: 359, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!323 = !DILocation(line: 359, column: 12, scope: !322) +!324 = distinct !DISubprogram(name: "Test_Send_12", linkageName: "Test_Send_12", scope: !2, file: !2, line: 370, type: !5, scopeLine: 370, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!325 = !DILocation(line: 371, column: 3, scope: !324) +!326 = !DILocation(line: 372, column: 3, scope: !324) +!327 = !DILocation(line: 373, column: 10, scope: !324) +!328 = !DILocation(line: 376, column: 11, scope: !324) +!329 = !DILocation(line: 377, column: 3, scope: !324) +!330 = !DILocation(line: 378, column: 22, scope: !324) +!331 = !DILocation(line: 379, column: 10, scope: !324) +!332 = !DILocation(line: 383, column: 11, scope: !324) +!333 = !DILocation(line: 384, column: 3, scope: !324) +!334 = distinct !DISubprogram(name: "Test_Send_12", linkageName: "Test_Send_12", scope: !2, file: !2, line: 370, type: !5, scopeLine: 370, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!335 = !DILocation(line: 370, column: 12, scope: !334) +!336 = distinct !DISubprogram(name: "Test_Send_13", linkageName: "Test_Send_13", scope: !2, file: !2, line: 388, type: !5, scopeLine: 388, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!337 = !DILocation(line: 390, column: 3, scope: !336) +!338 = !DILocation(line: 391, column: 3, scope: !336) +!339 = !DILocation(line: 392, column: 10, scope: !336) +!340 = !DILocation(line: 395, column: 11, scope: !336) +!341 = !DILocation(line: 396, column: 3, scope: !336) +!342 = !DILocation(line: 397, column: 3, scope: !336) +!343 = !DILocation(line: 398, column: 22, scope: !336) +!344 = !DILocation(line: 399, column: 10, scope: !336) +!345 = !DILocation(line: 403, column: 11, scope: !336) +!346 = !DILocation(line: 404, column: 3, scope: !336) +!347 = distinct !DISubprogram(name: "Test_Send_13", linkageName: "Test_Send_13", scope: !2, file: !2, line: 388, type: !5, scopeLine: 388, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!348 = !DILocation(line: 388, column: 12, scope: !347) +!349 = distinct !DISubprogram(name: "Test_Send_14", linkageName: "Test_Send_14", scope: !2, file: !2, line: 408, type: !5, scopeLine: 408, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!350 = !DILocation(line: 409, column: 3, scope: !349) +!351 = !DILocation(line: 410, column: 3, scope: !349) +!352 = !DILocation(line: 411, column: 10, scope: !349) +!353 = !DILocation(line: 414, column: 10, scope: !349) +!354 = !DILocation(line: 415, column: 3, scope: !349) +!355 = distinct !DISubprogram(name: "Test_Send_14", linkageName: "Test_Send_14", scope: !2, file: !2, line: 408, type: !5, scopeLine: 408, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!356 = !DILocation(line: 408, column: 12, scope: !355) diff --git a/tests/codegen/contr/dgold/accounting_tests_support.scilla.gold b/tests/codegen/contr/dgold/accounting_tests_support.scilla.gold new file mode 100644 index 00000000..2fb43f0a --- /dev/null +++ b/tests/codegen/contr/dgold/accounting_tests_support.scilla.gold @@ -0,0 +1,1134 @@ + + +; gas_remaining: 4002000 +; ModuleID = 'AccountingTestsSupport' +source_filename = "AccountingTestsSupport" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +%"$TyDescrTy_PrimTyp_1" = type { i32, i32 } +%_TyDescrTy_Typ = type { i32, i8* } +%"$TyDescrTy_ADTTyp_33" = type { %TyDescrString, i32, i32, i32, %"$TyDescrTy_ADTTyp_Specl_32"** } +%TyDescrString = type { i8*, i32 } +%"$TyDescrTy_ADTTyp_Specl_32" = type { %_TyDescrTy_Typ**, %"$TyDescrTy_ADTTyp_Constr_34"**, %"$TyDescrTy_ADTTyp_33"* } +%"$TyDescrTy_ADTTyp_Constr_34" = type { %TyDescrString, i32, %_TyDescrTy_Typ** } +%"$TyDescr_AddrTyp_39" = type { i32, %"$TyDescr_AddrFieldTyp_38"* } +%"$TyDescr_AddrFieldTyp_38" = type { %TyDescrString, %_TyDescrTy_Typ* } +%Uint32 = type { i32 } +%"$ParamDescr_533" = type { %ParamDescrString, %_TyDescrTy_Typ* } +%ParamDescrString = type { i8*, i32 } +%"$TransDescr_534" = type { %ParamDescrString, i32, %"$ParamDescr_533"* } +%TName_List_String = type { i8, %CName_Cons_String*, %CName_Nil_String* } +%CName_Cons_String = type <{ i8, %String, %TName_List_String* }> +%String = type { i8*, i32 } +%CName_Nil_String = type <{ i8 }> +%Uint128 = type { i128 } +%TName_Bool = type { i8, %CName_True*, %CName_False* } +%CName_True = type <{ i8 }> +%CName_False = type <{ i8 }> + +@_execptr = global i8* null +@_gasrem = global i64 0 +@"$TyDescr_Int32_Prim_2" = global %"$TyDescrTy_PrimTyp_1" zeroinitializer +@"$TyDescr_Int32_3" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Int32_Prim_2" to i8*) } +@"$TyDescr_Uint32_Prim_4" = global %"$TyDescrTy_PrimTyp_1" { i32 1, i32 0 } +@"$TyDescr_Uint32_5" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Uint32_Prim_4" to i8*) } +@"$TyDescr_Int64_Prim_6" = global %"$TyDescrTy_PrimTyp_1" { i32 0, i32 1 } +@"$TyDescr_Int64_7" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Int64_Prim_6" to i8*) } +@"$TyDescr_Uint64_Prim_8" = global %"$TyDescrTy_PrimTyp_1" { i32 1, i32 1 } +@"$TyDescr_Uint64_9" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Uint64_Prim_8" to i8*) } +@"$TyDescr_Int128_Prim_10" = global %"$TyDescrTy_PrimTyp_1" { i32 0, i32 2 } +@"$TyDescr_Int128_11" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Int128_Prim_10" to i8*) } +@"$TyDescr_Uint128_Prim_12" = global %"$TyDescrTy_PrimTyp_1" { i32 1, i32 2 } +@"$TyDescr_Uint128_13" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Uint128_Prim_12" to i8*) } +@"$TyDescr_Int256_Prim_14" = global %"$TyDescrTy_PrimTyp_1" { i32 0, i32 3 } +@"$TyDescr_Int256_15" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Int256_Prim_14" to i8*) } +@"$TyDescr_Uint256_Prim_16" = global %"$TyDescrTy_PrimTyp_1" { i32 1, i32 3 } +@"$TyDescr_Uint256_17" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Uint256_Prim_16" to i8*) } +@"$TyDescr_String_Prim_18" = global %"$TyDescrTy_PrimTyp_1" { i32 2, i32 0 } +@"$TyDescr_String_19" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_String_Prim_18" to i8*) } +@"$TyDescr_Bnum_Prim_20" = global %"$TyDescrTy_PrimTyp_1" { i32 3, i32 0 } +@"$TyDescr_Bnum_21" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Bnum_Prim_20" to i8*) } +@"$TyDescr_Message_Prim_22" = global %"$TyDescrTy_PrimTyp_1" { i32 4, i32 0 } +@"$TyDescr_Message_23" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Message_Prim_22" to i8*) } +@"$TyDescr_Event_Prim_24" = global %"$TyDescrTy_PrimTyp_1" { i32 5, i32 0 } +@"$TyDescr_Event_25" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Event_Prim_24" to i8*) } +@"$TyDescr_Exception_Prim_26" = global %"$TyDescrTy_PrimTyp_1" { i32 6, i32 0 } +@"$TyDescr_Exception_27" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Exception_Prim_26" to i8*) } +@"$TyDescr_Bystr_Prim_28" = global %"$TyDescrTy_PrimTyp_1" { i32 7, i32 0 } +@"$TyDescr_Bystr_29" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Bystr_Prim_28" to i8*) } +@"$TyDescr_Bystr20_Prim_30" = global %"$TyDescrTy_PrimTyp_1" { i32 8, i32 20 } +@"$TyDescr_Bystr20_31" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Bystr20_Prim_30" to i8*) } +@"$TyDescr_ADT_Bool_35" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_32"* @"$TyDescr_Bool_ADTTyp_Specl_50" to i8*) } +@"$TyDescr_ADT_List_String_36" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_32"* @"$TyDescr_List_String_ADTTyp_Specl_62" to i8*) } +@"$TyDescr_Addr_40" = unnamed_addr constant %_TyDescrTy_Typ { i32 3, i8* bitcast (%"$TyDescr_AddrTyp_39"* @"$TyDescr_AddrFields_65" to i8*) } +@"$TyDescr_Bool_ADTTyp_41" = unnamed_addr constant %"$TyDescrTy_ADTTyp_33" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Bool_52", i32 0, i32 0), i32 4 }, i32 0, i32 2, i32 1, %"$TyDescrTy_ADTTyp_Specl_32"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_32"*], [1 x %"$TyDescrTy_ADTTyp_Specl_32"*]* @"$TyDescr_Bool_ADTTyp_m_specls_51", i32 0, i32 0) } +@"$TyDescr_Bool_True_Constr_m_args_42" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_True_43" = unnamed_addr constant [4 x i8] c"True" +@"$TyDescr_Bool_True_ADTTyp_Constr_44" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_34" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_True_43", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_True_Constr_m_args_42", i32 0, i32 0) } +@"$TyDescr_Bool_False_Constr_m_args_45" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_False_46" = unnamed_addr constant [5 x i8] c"False" +@"$TyDescr_Bool_False_ADTTyp_Constr_47" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_34" { %TyDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$TyDescr_ADT_False_46", i32 0, i32 0), i32 5 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_False_Constr_m_args_45", i32 0, i32 0) } +@"$TyDescr_Bool_ADTTyp_Specl_m_constrs_48" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_34"*] [%"$TyDescrTy_ADTTyp_Constr_34"* @"$TyDescr_Bool_True_ADTTyp_Constr_44", %"$TyDescrTy_ADTTyp_Constr_34"* @"$TyDescr_Bool_False_ADTTyp_Constr_47"] +@"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_49" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_Bool_ADTTyp_Specl_50" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_32" { %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_49", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_34"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_34"*], [2 x %"$TyDescrTy_ADTTyp_Constr_34"*]* @"$TyDescr_Bool_ADTTyp_Specl_m_constrs_48", i32 0, i32 0), %"$TyDescrTy_ADTTyp_33"* @"$TyDescr_Bool_ADTTyp_41" } +@"$TyDescr_Bool_ADTTyp_m_specls_51" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_32"*] [%"$TyDescrTy_ADTTyp_Specl_32"* @"$TyDescr_Bool_ADTTyp_Specl_50"] +@"$TyDescr_ADT_Bool_52" = unnamed_addr constant [4 x i8] c"Bool" +@"$TyDescr_List_ADTTyp_53" = unnamed_addr constant %"$TyDescrTy_ADTTyp_33" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_List_64", i32 0, i32 0), i32 4 }, i32 1, i32 2, i32 1, %"$TyDescrTy_ADTTyp_Specl_32"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_32"*], [1 x %"$TyDescrTy_ADTTyp_Specl_32"*]* @"$TyDescr_List_ADTTyp_m_specls_63", i32 0, i32 0) } +@"$TyDescr_List_Cons_String_Constr_m_args_54" = unnamed_addr constant [2 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_19", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36"] +@"$TyDescr_ADT_Cons_55" = unnamed_addr constant [4 x i8] c"Cons" +@"$TyDescr_List_Cons_String_ADTTyp_Constr_56" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_34" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Cons_55", i32 0, i32 0), i32 4 }, i32 2, %_TyDescrTy_Typ** getelementptr inbounds ([2 x %_TyDescrTy_Typ*], [2 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Cons_String_Constr_m_args_54", i32 0, i32 0) } +@"$TyDescr_List_Nil_String_Constr_m_args_57" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_Nil_58" = unnamed_addr constant [3 x i8] c"Nil" +@"$TyDescr_List_Nil_String_ADTTyp_Constr_59" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_34" { %TyDescrString { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$TyDescr_ADT_Nil_58", i32 0, i32 0), i32 3 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Nil_String_Constr_m_args_57", i32 0, i32 0) } +@"$TyDescr_List_String_ADTTyp_Specl_m_constrs_60" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_34"*] [%"$TyDescrTy_ADTTyp_Constr_34"* @"$TyDescr_List_Cons_String_ADTTyp_Constr_56", %"$TyDescrTy_ADTTyp_Constr_34"* @"$TyDescr_List_Nil_String_ADTTyp_Constr_59"] +@"$TyDescr_List_String_ADTTyp_Specl_m_TArgs_61" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_19"] +@"$TyDescr_List_String_ADTTyp_Specl_62" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_32" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_List_String_ADTTyp_Specl_m_TArgs_61", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_34"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_34"*], [2 x %"$TyDescrTy_ADTTyp_Constr_34"*]* @"$TyDescr_List_String_ADTTyp_Specl_m_constrs_60", i32 0, i32 0), %"$TyDescrTy_ADTTyp_33"* @"$TyDescr_List_ADTTyp_53" } +@"$TyDescr_List_ADTTyp_m_specls_63" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_32"*] [%"$TyDescrTy_ADTTyp_Specl_32"* @"$TyDescr_List_String_ADTTyp_Specl_62"] +@"$TyDescr_ADT_List_64" = unnamed_addr constant [4 x i8] c"List" +@"$TyDescr_AddrFields_65" = unnamed_addr constant %"$TyDescr_AddrTyp_39" { i32 -1, %"$TyDescr_AddrFieldTyp_38"* null } +@_cparam__scilla_version = global %Uint32 zeroinitializer +@_cparam__this_address = global [20 x i8] zeroinitializer +@_cparam__creation_block = global i8* null +@"$stored_strings_75" = unnamed_addr constant [15 x i8] c"stored_strings\00" +@"$stored_strings_103" = unnamed_addr constant [15 x i8] c"stored_strings\00" +@"$stored_strings_116" = unnamed_addr constant [15 x i8] c"stored_strings\00" +@"$stored_strings_154" = unnamed_addr constant [15 x i8] c"stored_strings\00" +@"$_balance_217" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_266" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_271" = unnamed_addr constant [38 x i8] c"Unexpected balance at support contract" +@"$stringlit_274" = unnamed_addr constant [8 x i8] c"expected" +@"$stringlit_281" = unnamed_addr constant [6 x i8] c"actual" +@"$_balance_303" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_353" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_358" = unnamed_addr constant [50 x i8] c"Unexpected sender balance read by support contract" +@"$stringlit_361" = unnamed_addr constant [8 x i8] c"expected" +@"$stringlit_368" = unnamed_addr constant [6 x i8] c"actual" +@"$_balance_390" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$_balance_436" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$_balance_496" = unnamed_addr constant [9 x i8] c"_balance\00" +@_tydescr_table = constant [18 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Event_25", %_TyDescrTy_Typ* @"$TyDescr_Int64_7", %_TyDescrTy_Typ* @"$TyDescr_Addr_40", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_35", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_31", %_TyDescrTy_Typ* @"$TyDescr_Uint256_17", %_TyDescrTy_Typ* @"$TyDescr_Uint32_5", %_TyDescrTy_Typ* @"$TyDescr_Uint64_9", %_TyDescrTy_Typ* @"$TyDescr_Bnum_21", %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", %_TyDescrTy_Typ* @"$TyDescr_Exception_27", %_TyDescrTy_Typ* @"$TyDescr_String_19", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", %_TyDescrTy_Typ* @"$TyDescr_Int256_15", %_TyDescrTy_Typ* @"$TyDescr_Int128_11", %_TyDescrTy_Typ* @"$TyDescr_Bystr_29", %_TyDescrTy_Typ* @"$TyDescr_Message_23", %_TyDescrTy_Typ* @"$TyDescr_Int32_3"] +@_tydescr_table_length = constant i32 18 +@"$pname__scilla_version_535" = unnamed_addr constant [15 x i8] c"_scilla_version" +@"$pname__this_address_536" = unnamed_addr constant [13 x i8] c"_this_address" +@"$pname__creation_block_537" = unnamed_addr constant [15 x i8] c"_creation_block" +@_contract_parameters = constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__scilla_version_535", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Uint32_5" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$pname__this_address_536", i32 0, i32 0), i32 13 }, %_TyDescrTy_Typ* @"$TyDescr_Bystr20_31" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__creation_block_537", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Bnum_21" }] +@_contract_parameters_length = constant i32 3 +@"$tpname__amount_538" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_539" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_540" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Reset_541" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_538", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_539", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_540", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_Reset_542" = unnamed_addr constant [5 x i8] c"Reset" +@"$tpname__amount_543" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_544" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_545" = unnamed_addr constant [7 x i8] c"_sender" +@"$tpname_s_546" = unnamed_addr constant [1 x i8] c"s" +@"$tparams_StoreString_547" = unnamed_addr constant [4 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_543", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_544", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_545", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$tpname_s_546", i32 0, i32 0), i32 1 }, %_TyDescrTy_Typ* @"$TyDescr_String_19" }] +@"$tname_StoreString_548" = unnamed_addr constant [11 x i8] c"StoreString" +@"$tpname__amount_549" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_550" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_551" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Accept_552" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_549", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_550", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_551", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_Accept_553" = unnamed_addr constant [6 x i8] c"Accept" +@"$tpname__amount_554" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_555" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_556" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_AcceptTwice_557" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_554", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_555", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_556", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_AcceptTwice_558" = unnamed_addr constant [11 x i8] c"AcceptTwice" +@"$tpname__amount_559" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_560" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_561" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_NonAccept_562" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_559", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_560", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_561", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_NonAccept_563" = unnamed_addr constant [9 x i8] c"NonAccept" +@"$tpname__amount_564" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_565" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_566" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_AcceptAndCheckBalance_567" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_564", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_565", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_566", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_AcceptAndCheckBalance_568" = unnamed_addr constant [21 x i8] c"AcceptAndCheckBalance" +@"$tpname__amount_569" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_570" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_571" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_AcceptTwiceAndCheckBalance_572" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_569", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_570", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_571", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_AcceptTwiceAndCheckBalance_573" = unnamed_addr constant [26 x i8] c"AcceptTwiceAndCheckBalance" +@"$tpname__amount_574" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_575" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_576" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_AcceptAndCheckSenderBalance_577" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_574", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_575", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_576", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_AcceptAndCheckSenderBalance_578" = unnamed_addr constant [27 x i8] c"AcceptAndCheckSenderBalance" +@_transition_parameters = constant [8 x %"$TransDescr_534"] [%"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tname_Reset_542", i32 0, i32 0), i32 5 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_Reset_541", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_StoreString_548", i32 0, i32 0), i32 11 }, i32 4, %"$ParamDescr_533"* getelementptr inbounds ([4 x %"$ParamDescr_533"], [4 x %"$ParamDescr_533"]* @"$tparams_StoreString_547", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$tname_Accept_553", i32 0, i32 0), i32 6 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_Accept_552", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_AcceptTwice_558", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_AcceptTwice_557", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$tname_NonAccept_563", i32 0, i32 0), i32 9 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_NonAccept_562", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$tname_AcceptAndCheckBalance_568", i32 0, i32 0), i32 21 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_AcceptAndCheckBalance_567", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"$tname_AcceptTwiceAndCheckBalance_573", i32 0, i32 0), i32 26 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_AcceptTwiceAndCheckBalance_572", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([27 x i8], [27 x i8]* @"$tname_AcceptAndCheckSenderBalance_578", i32 0, i32 0), i32 27 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_AcceptAndCheckSenderBalance_577", i32 0, i32 0) }] +@_transition_parameters_length = constant i32 8 + +define void @_init_libs() !dbg !4 { +entry: + ret void +} + +define void @_init_state() !dbg !9 { +entry: + %"$stored_strings_0" = alloca %TName_List_String*, align 8 + %"$gasrem_66" = load i64, i64* @_gasrem, align 8 + %"$gascmp_67" = icmp ugt i64 1, %"$gasrem_66" + br i1 %"$gascmp_67", label %"$out_of_gas_68", label %"$have_gas_69" + +"$out_of_gas_68": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_69" + +"$have_gas_69": ; preds = %"$out_of_gas_68", %entry + %"$consume_70" = sub i64 %"$gasrem_66", 1 + store i64 %"$consume_70", i64* @_gasrem, align 8 + %"$adtval_71_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_71_salloc" = call i8* @_salloc(i8* %"$adtval_71_load", i64 1) + %"$adtval_71" = bitcast i8* %"$adtval_71_salloc" to %CName_Nil_String* + %"$adtgep_72" = getelementptr inbounds %CName_Nil_String, %CName_Nil_String* %"$adtval_71", i32 0, i32 0 + store i8 1, i8* %"$adtgep_72", align 1 + %"$adtptr_73" = bitcast %CName_Nil_String* %"$adtval_71" to %TName_List_String* + store %TName_List_String* %"$adtptr_73", %TName_List_String** %"$stored_strings_0", align 8, !dbg !10 + %"$execptr_load_74" = load i8*, i8** @_execptr, align 8 + %"$$stored_strings_0_76" = load %TName_List_String*, %TName_List_String** %"$stored_strings_0", align 8 + %"$update_value_77" = bitcast %TName_List_String* %"$$stored_strings_0_76" to i8* + call void @_update_field(i8* %"$execptr_load_74", i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stored_strings_75", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i32 0, i8* null, i8* %"$update_value_77"), !dbg !10 + ret void +} + +declare void @_out_of_gas() + +declare i8* @_salloc(i8*, i64) + +declare void @_update_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i8*) + +define internal void @"$Reset_78"(%Uint128 %_amount, [20 x i8]* %"$_origin_79", [20 x i8]* %"$_sender_80") !dbg !11 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_79", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_80", align 1 + %"$gasrem_81" = load i64, i64* @_gasrem, align 8 + %"$gascmp_82" = icmp ugt i64 1, %"$gasrem_81" + br i1 %"$gascmp_82", label %"$out_of_gas_83", label %"$have_gas_84" + +"$out_of_gas_83": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_84" + +"$have_gas_84": ; preds = %"$out_of_gas_83", %entry + %"$consume_85" = sub i64 %"$gasrem_81", 1 + store i64 %"$consume_85", i64* @_gasrem, align 8 + %new_strings = alloca %TName_List_String*, align 8 + %"$gasrem_86" = load i64, i64* @_gasrem, align 8 + %"$gascmp_87" = icmp ugt i64 1, %"$gasrem_86" + br i1 %"$gascmp_87", label %"$out_of_gas_88", label %"$have_gas_89" + +"$out_of_gas_88": ; preds = %"$have_gas_84" + call void @_out_of_gas() + br label %"$have_gas_89" + +"$have_gas_89": ; preds = %"$out_of_gas_88", %"$have_gas_84" + %"$consume_90" = sub i64 %"$gasrem_86", 1 + store i64 %"$consume_90", i64* @_gasrem, align 8 + %"$adtval_91_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_91_salloc" = call i8* @_salloc(i8* %"$adtval_91_load", i64 1) + %"$adtval_91" = bitcast i8* %"$adtval_91_salloc" to %CName_Nil_String* + %"$adtgep_92" = getelementptr inbounds %CName_Nil_String, %CName_Nil_String* %"$adtval_91", i32 0, i32 0 + store i8 1, i8* %"$adtgep_92", align 1 + %"$adtptr_93" = bitcast %CName_Nil_String* %"$adtval_91" to %TName_List_String* + store %TName_List_String* %"$adtptr_93", %TName_List_String** %new_strings, align 8, !dbg !12 + %"$new_strings_94" = load %TName_List_String*, %TName_List_String** %new_strings, align 8 + %"$$new_strings_94_95" = bitcast %TName_List_String* %"$new_strings_94" to i8* + %"$_literal_cost_call_96" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i8* %"$$new_strings_94_95") + %"$gasrem_97" = load i64, i64* @_gasrem, align 8 + %"$gascmp_98" = icmp ugt i64 %"$_literal_cost_call_96", %"$gasrem_97" + br i1 %"$gascmp_98", label %"$out_of_gas_99", label %"$have_gas_100" + +"$out_of_gas_99": ; preds = %"$have_gas_89" + call void @_out_of_gas() + br label %"$have_gas_100" + +"$have_gas_100": ; preds = %"$out_of_gas_99", %"$have_gas_89" + %"$consume_101" = sub i64 %"$gasrem_97", %"$_literal_cost_call_96" + store i64 %"$consume_101", i64* @_gasrem, align 8 + %"$execptr_load_102" = load i8*, i8** @_execptr, align 8 + %"$new_strings_104" = load %TName_List_String*, %TName_List_String** %new_strings, align 8 + %"$update_value_105" = bitcast %TName_List_String* %"$new_strings_104" to i8* + call void @_update_field(i8* %"$execptr_load_102", i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stored_strings_103", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i32 0, i8* null, i8* %"$update_value_105"), !dbg !13 + ret void +} + +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + +define void @Reset(i8* %0) !dbg !14 { +entry: + %"$_amount_107" = getelementptr i8, i8* %0, i32 0 + %"$_amount_108" = bitcast i8* %"$_amount_107" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_108", align 8 + %"$_origin_109" = getelementptr i8, i8* %0, i32 16 + %"$_origin_110" = bitcast i8* %"$_origin_109" to [20 x i8]* + %"$_sender_111" = getelementptr i8, i8* %0, i32 36 + %"$_sender_112" = bitcast i8* %"$_sender_111" to [20 x i8]* + call void @"$Reset_78"(%Uint128 %_amount, [20 x i8]* %"$_origin_110", [20 x i8]* %"$_sender_112"), !dbg !15 + ret void +} + +define internal void @"$StoreString_113"(%Uint128 %_amount, [20 x i8]* %"$_origin_114", [20 x i8]* %"$_sender_115", %String %s) !dbg !16 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_114", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_115", align 1 + %old_strings = alloca %TName_List_String*, align 8 + %"$execptr_load_117" = load i8*, i8** @_execptr, align 8 + %"$old_strings_call_118" = call i8* @_fetch_field(i8* %"$execptr_load_117", i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stored_strings_116", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i32 0, i8* null, i32 1), !dbg !17 + %"$old_strings_119" = bitcast i8* %"$old_strings_call_118" to %TName_List_String* + store %TName_List_String* %"$old_strings_119", %TName_List_String** %old_strings, align 8 + %"$old_strings_120" = load %TName_List_String*, %TName_List_String** %old_strings, align 8 + %"$$old_strings_120_121" = bitcast %TName_List_String* %"$old_strings_120" to i8* + %"$_literal_cost_call_122" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i8* %"$$old_strings_120_121") + %"$gasadd_123" = add i64 %"$_literal_cost_call_122", 0 + %"$gasrem_124" = load i64, i64* @_gasrem, align 8 + %"$gascmp_125" = icmp ugt i64 %"$gasadd_123", %"$gasrem_124" + br i1 %"$gascmp_125", label %"$out_of_gas_126", label %"$have_gas_127" + +"$out_of_gas_126": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_127" + +"$have_gas_127": ; preds = %"$out_of_gas_126", %entry + %"$consume_128" = sub i64 %"$gasrem_124", %"$gasadd_123" + store i64 %"$consume_128", i64* @_gasrem, align 8 + %"$gasrem_129" = load i64, i64* @_gasrem, align 8 + %"$gascmp_130" = icmp ugt i64 1, %"$gasrem_129" + br i1 %"$gascmp_130", label %"$out_of_gas_131", label %"$have_gas_132" + +"$out_of_gas_131": ; preds = %"$have_gas_127" + call void @_out_of_gas() + br label %"$have_gas_132" + +"$have_gas_132": ; preds = %"$out_of_gas_131", %"$have_gas_127" + %"$consume_133" = sub i64 %"$gasrem_129", 1 + store i64 %"$consume_133", i64* @_gasrem, align 8 + %new_strings = alloca %TName_List_String*, align 8 + %"$gasrem_134" = load i64, i64* @_gasrem, align 8 + %"$gascmp_135" = icmp ugt i64 1, %"$gasrem_134" + br i1 %"$gascmp_135", label %"$out_of_gas_136", label %"$have_gas_137" + +"$out_of_gas_136": ; preds = %"$have_gas_132" + call void @_out_of_gas() + br label %"$have_gas_137" + +"$have_gas_137": ; preds = %"$out_of_gas_136", %"$have_gas_132" + %"$consume_138" = sub i64 %"$gasrem_134", 1 + store i64 %"$consume_138", i64* @_gasrem, align 8 + %"$old_strings_139" = load %TName_List_String*, %TName_List_String** %old_strings, align 8 + %"$adtval_140_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_140_salloc" = call i8* @_salloc(i8* %"$adtval_140_load", i64 25) + %"$adtval_140" = bitcast i8* %"$adtval_140_salloc" to %CName_Cons_String* + %"$adtgep_141" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_140", i32 0, i32 0 + store i8 0, i8* %"$adtgep_141", align 1 + %"$adtgep_142" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_140", i32 0, i32 1 + store %String %s, %String* %"$adtgep_142", align 8 + %"$adtgep_143" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_140", i32 0, i32 2 + store %TName_List_String* %"$old_strings_139", %TName_List_String** %"$adtgep_143", align 8 + %"$adtptr_144" = bitcast %CName_Cons_String* %"$adtval_140" to %TName_List_String* + store %TName_List_String* %"$adtptr_144", %TName_List_String** %new_strings, align 8, !dbg !18 + %"$new_strings_145" = load %TName_List_String*, %TName_List_String** %new_strings, align 8 + %"$$new_strings_145_146" = bitcast %TName_List_String* %"$new_strings_145" to i8* + %"$_literal_cost_call_147" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i8* %"$$new_strings_145_146") + %"$gasrem_148" = load i64, i64* @_gasrem, align 8 + %"$gascmp_149" = icmp ugt i64 %"$_literal_cost_call_147", %"$gasrem_148" + br i1 %"$gascmp_149", label %"$out_of_gas_150", label %"$have_gas_151" + +"$out_of_gas_150": ; preds = %"$have_gas_137" + call void @_out_of_gas() + br label %"$have_gas_151" + +"$have_gas_151": ; preds = %"$out_of_gas_150", %"$have_gas_137" + %"$consume_152" = sub i64 %"$gasrem_148", %"$_literal_cost_call_147" + store i64 %"$consume_152", i64* @_gasrem, align 8 + %"$execptr_load_153" = load i8*, i8** @_execptr, align 8 + %"$new_strings_155" = load %TName_List_String*, %TName_List_String** %new_strings, align 8 + %"$update_value_156" = bitcast %TName_List_String* %"$new_strings_155" to i8* + call void @_update_field(i8* %"$execptr_load_153", i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stored_strings_154", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i32 0, i8* null, i8* %"$update_value_156"), !dbg !19 + ret void +} + +declare i8* @_fetch_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) + +define void @StoreString(i8* %0) !dbg !20 { +entry: + %"$_amount_158" = getelementptr i8, i8* %0, i32 0 + %"$_amount_159" = bitcast i8* %"$_amount_158" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_159", align 8 + %"$_origin_160" = getelementptr i8, i8* %0, i32 16 + %"$_origin_161" = bitcast i8* %"$_origin_160" to [20 x i8]* + %"$_sender_162" = getelementptr i8, i8* %0, i32 36 + %"$_sender_163" = bitcast i8* %"$_sender_162" to [20 x i8]* + %"$s_164" = getelementptr i8, i8* %0, i32 56 + %"$s_165" = bitcast i8* %"$s_164" to %String* + %s = load %String, %String* %"$s_165", align 8 + call void @"$StoreString_113"(%Uint128 %_amount, [20 x i8]* %"$_origin_161", [20 x i8]* %"$_sender_163", %String %s), !dbg !21 + ret void +} + +define internal void @"$Accept_166"(%Uint128 %_amount, [20 x i8]* %"$_origin_167", [20 x i8]* %"$_sender_168") !dbg !22 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_167", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_168", align 1 + %"$gasrem_169" = load i64, i64* @_gasrem, align 8 + %"$gascmp_170" = icmp ugt i64 1, %"$gasrem_169" + br i1 %"$gascmp_170", label %"$out_of_gas_171", label %"$have_gas_172" + +"$out_of_gas_171": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_172" + +"$have_gas_172": ; preds = %"$out_of_gas_171", %entry + %"$consume_173" = sub i64 %"$gasrem_169", 1 + store i64 %"$consume_173", i64* @_gasrem, align 8 + %"$execptr_load_174" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_174"), !dbg !23 + ret void +} + +declare void @_accept(i8*) + +define void @Accept(i8* %0) !dbg !24 { +entry: + %"$_amount_176" = getelementptr i8, i8* %0, i32 0 + %"$_amount_177" = bitcast i8* %"$_amount_176" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_177", align 8 + %"$_origin_178" = getelementptr i8, i8* %0, i32 16 + %"$_origin_179" = bitcast i8* %"$_origin_178" to [20 x i8]* + %"$_sender_180" = getelementptr i8, i8* %0, i32 36 + %"$_sender_181" = bitcast i8* %"$_sender_180" to [20 x i8]* + call void @"$Accept_166"(%Uint128 %_amount, [20 x i8]* %"$_origin_179", [20 x i8]* %"$_sender_181"), !dbg !25 + ret void +} + +define internal void @"$AcceptTwice_182"(%Uint128 %_amount, [20 x i8]* %"$_origin_183", [20 x i8]* %"$_sender_184") !dbg !26 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_183", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_184", align 1 + %"$gasrem_185" = load i64, i64* @_gasrem, align 8 + %"$gascmp_186" = icmp ugt i64 1, %"$gasrem_185" + br i1 %"$gascmp_186", label %"$out_of_gas_187", label %"$have_gas_188" + +"$out_of_gas_187": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_188" + +"$have_gas_188": ; preds = %"$out_of_gas_187", %entry + %"$consume_189" = sub i64 %"$gasrem_185", 1 + store i64 %"$consume_189", i64* @_gasrem, align 8 + %"$execptr_load_190" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_190"), !dbg !27 + %"$gasrem_191" = load i64, i64* @_gasrem, align 8 + %"$gascmp_192" = icmp ugt i64 1, %"$gasrem_191" + br i1 %"$gascmp_192", label %"$out_of_gas_193", label %"$have_gas_194" + +"$out_of_gas_193": ; preds = %"$have_gas_188" + call void @_out_of_gas() + br label %"$have_gas_194" + +"$have_gas_194": ; preds = %"$out_of_gas_193", %"$have_gas_188" + %"$consume_195" = sub i64 %"$gasrem_191", 1 + store i64 %"$consume_195", i64* @_gasrem, align 8 + %"$execptr_load_196" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_196"), !dbg !28 + ret void +} + +define void @AcceptTwice(i8* %0) !dbg !29 { +entry: + %"$_amount_198" = getelementptr i8, i8* %0, i32 0 + %"$_amount_199" = bitcast i8* %"$_amount_198" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_199", align 8 + %"$_origin_200" = getelementptr i8, i8* %0, i32 16 + %"$_origin_201" = bitcast i8* %"$_origin_200" to [20 x i8]* + %"$_sender_202" = getelementptr i8, i8* %0, i32 36 + %"$_sender_203" = bitcast i8* %"$_sender_202" to [20 x i8]* + call void @"$AcceptTwice_182"(%Uint128 %_amount, [20 x i8]* %"$_origin_201", [20 x i8]* %"$_sender_203"), !dbg !30 + ret void +} + +define internal void @"$NonAccept_204"(%Uint128 %_amount, [20 x i8]* %"$_origin_205", [20 x i8]* %"$_sender_206") !dbg !31 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_205", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_206", align 1 + ret void +} + +define void @NonAccept(i8* %0) !dbg !32 { +entry: + %"$_amount_208" = getelementptr i8, i8* %0, i32 0 + %"$_amount_209" = bitcast i8* %"$_amount_208" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_209", align 8 + %"$_origin_210" = getelementptr i8, i8* %0, i32 16 + %"$_origin_211" = bitcast i8* %"$_origin_210" to [20 x i8]* + %"$_sender_212" = getelementptr i8, i8* %0, i32 36 + %"$_sender_213" = bitcast i8* %"$_sender_212" to [20 x i8]* + call void @"$NonAccept_204"(%Uint128 %_amount, [20 x i8]* %"$_origin_211", [20 x i8]* %"$_sender_213"), !dbg !33 + ret void +} + +define internal void @"$CheckBalance_214"(%Uint128 %_amount, [20 x i8]* %"$_origin_215", [20 x i8]* %"$_sender_216", %Uint128 %expected_balance) !dbg !34 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_215", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_216", align 1 + %cur_balance = alloca %Uint128, align 8 + %"$execptr_load_218" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_call_219" = call i8* @_fetch_field(i8* %"$execptr_load_218", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_217", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i32 0, i8* null, i32 1), !dbg !35 + %"$cur_balance_220" = bitcast i8* %"$cur_balance_call_219" to %Uint128* + %"$cur_balance_221" = load %Uint128, %Uint128* %"$cur_balance_220", align 8 + store %Uint128 %"$cur_balance_221", %Uint128* %cur_balance, align 8 + %"$_literal_cost_cur_balance_222" = alloca %Uint128, align 8 + %"$cur_balance_223" = load %Uint128, %Uint128* %cur_balance, align 8 + store %Uint128 %"$cur_balance_223", %Uint128* %"$_literal_cost_cur_balance_222", align 8 + %"$$_literal_cost_cur_balance_222_224" = bitcast %Uint128* %"$_literal_cost_cur_balance_222" to i8* + %"$_literal_cost_call_225" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i8* %"$$_literal_cost_cur_balance_222_224") + %"$gasadd_226" = add i64 %"$_literal_cost_call_225", 0 + %"$gasrem_227" = load i64, i64* @_gasrem, align 8 + %"$gascmp_228" = icmp ugt i64 %"$gasadd_226", %"$gasrem_227" + br i1 %"$gascmp_228", label %"$out_of_gas_229", label %"$have_gas_230" + +"$out_of_gas_229": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_230" + +"$have_gas_230": ; preds = %"$out_of_gas_229", %entry + %"$consume_231" = sub i64 %"$gasrem_227", %"$gasadd_226" + store i64 %"$consume_231", i64* @_gasrem, align 8 + %"$gasrem_232" = load i64, i64* @_gasrem, align 8 + %"$gascmp_233" = icmp ugt i64 1, %"$gasrem_232" + br i1 %"$gascmp_233", label %"$out_of_gas_234", label %"$have_gas_235" + +"$out_of_gas_234": ; preds = %"$have_gas_230" + call void @_out_of_gas() + br label %"$have_gas_235" + +"$have_gas_235": ; preds = %"$out_of_gas_234", %"$have_gas_230" + %"$consume_236" = sub i64 %"$gasrem_232", 1 + store i64 %"$consume_236", i64* @_gasrem, align 8 + %is_expected = alloca %TName_Bool*, align 8 + %"$execptr_load_237" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_238" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$eq_call_239" = call %TName_Bool* @_eq_Uint128(i8* %"$execptr_load_237", %Uint128 %expected_balance, %Uint128 %"$cur_balance_238"), !dbg !36 + store %TName_Bool* %"$eq_call_239", %TName_Bool** %is_expected, align 8, !dbg !36 + %"$gasrem_241" = load i64, i64* @_gasrem, align 8 + %"$gascmp_242" = icmp ugt i64 2, %"$gasrem_241" + br i1 %"$gascmp_242", label %"$out_of_gas_243", label %"$have_gas_244" + +"$out_of_gas_243": ; preds = %"$have_gas_235" + call void @_out_of_gas() + br label %"$have_gas_244" + +"$have_gas_244": ; preds = %"$out_of_gas_243", %"$have_gas_235" + %"$consume_245" = sub i64 %"$gasrem_241", 2 + store i64 %"$consume_245", i64* @_gasrem, align 8 + %"$is_expected_247" = load %TName_Bool*, %TName_Bool** %is_expected, align 8 + %"$is_expected_tag_248" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_expected_247", i32 0, i32 0 + %"$is_expected_tag_249" = load i8, i8* %"$is_expected_tag_248", align 1 + switch i8 %"$is_expected_tag_249", label %"$empty_default_250" [ + i8 0, label %"$True_251" + i8 1, label %"$False_253" + ], !dbg !37 + +"$True_251": ; preds = %"$have_gas_244" + %"$is_expected_252" = bitcast %TName_Bool* %"$is_expected_247" to %CName_True* + br label %"$matchsucc_246" + +"$False_253": ; preds = %"$have_gas_244" + %"$is_expected_254" = bitcast %TName_Bool* %"$is_expected_247" to %CName_False* + %"$gasrem_255" = load i64, i64* @_gasrem, align 8 + %"$gascmp_256" = icmp ugt i64 1, %"$gasrem_255" + br i1 %"$gascmp_256", label %"$out_of_gas_257", label %"$have_gas_258" + +"$out_of_gas_257": ; preds = %"$False_253" + call void @_out_of_gas() + br label %"$have_gas_258" + +"$have_gas_258": ; preds = %"$out_of_gas_257", %"$False_253" + %"$consume_259" = sub i64 %"$gasrem_255", 1 + store i64 %"$consume_259", i64* @_gasrem, align 8 + %e = alloca i8*, align 8 + %"$gasrem_260" = load i64, i64* @_gasrem, align 8 + %"$gascmp_261" = icmp ugt i64 1, %"$gasrem_260" + br i1 %"$gascmp_261", label %"$out_of_gas_262", label %"$have_gas_263" + +"$out_of_gas_262": ; preds = %"$have_gas_258" + call void @_out_of_gas() + br label %"$have_gas_263" + +"$have_gas_263": ; preds = %"$out_of_gas_262", %"$have_gas_258" + %"$consume_264" = sub i64 %"$gasrem_260", 1 + store i64 %"$consume_264", i64* @_gasrem, align 8 + %"$msgobj_265_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_265_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_265_salloc_load", i64 121) + %"$msgobj_265_salloc" = bitcast i8* %"$msgobj_265_salloc_salloc" to [121 x i8]* + %"$msgobj_265" = bitcast [121 x i8]* %"$msgobj_265_salloc" to i8* + store i8 3, i8* %"$msgobj_265", align 1 + %"$msgobj_fname_267" = getelementptr i8, i8* %"$msgobj_265", i32 1 + %"$msgobj_fname_268" = bitcast i8* %"$msgobj_fname_267" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_266", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_268", align 8 + %"$msgobj_td_269" = getelementptr i8, i8* %"$msgobj_265", i32 17 + %"$msgobj_td_270" = bitcast i8* %"$msgobj_td_269" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_19", %_TyDescrTy_Typ** %"$msgobj_td_270", align 8 + %"$msgobj_v_272" = getelementptr i8, i8* %"$msgobj_265", i32 25 + %"$msgobj_v_273" = bitcast i8* %"$msgobj_v_272" to %String* + store %String { i8* getelementptr inbounds ([38 x i8], [38 x i8]* @"$stringlit_271", i32 0, i32 0), i32 38 }, %String* %"$msgobj_v_273", align 8 + %"$msgobj_fname_275" = getelementptr i8, i8* %"$msgobj_265", i32 41 + %"$msgobj_fname_276" = bitcast i8* %"$msgobj_fname_275" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_274", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_276", align 8 + %"$msgobj_td_277" = getelementptr i8, i8* %"$msgobj_265", i32 57 + %"$msgobj_td_278" = bitcast i8* %"$msgobj_td_277" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", %_TyDescrTy_Typ** %"$msgobj_td_278", align 8 + %"$msgobj_v_279" = getelementptr i8, i8* %"$msgobj_265", i32 65 + %"$msgobj_v_280" = bitcast i8* %"$msgobj_v_279" to %Uint128* + store %Uint128 %expected_balance, %Uint128* %"$msgobj_v_280", align 8 + %"$msgobj_fname_282" = getelementptr i8, i8* %"$msgobj_265", i32 81 + %"$msgobj_fname_283" = bitcast i8* %"$msgobj_fname_282" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_281", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_283", align 8 + %"$msgobj_td_284" = getelementptr i8, i8* %"$msgobj_265", i32 97 + %"$msgobj_td_285" = bitcast i8* %"$msgobj_td_284" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", %_TyDescrTy_Typ** %"$msgobj_td_285", align 8 + %"$cur_balance_286" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$msgobj_v_287" = getelementptr i8, i8* %"$msgobj_265", i32 105 + %"$msgobj_v_288" = bitcast i8* %"$msgobj_v_287" to %Uint128* + store %Uint128 %"$cur_balance_286", %Uint128* %"$msgobj_v_288", align 8 + store i8* %"$msgobj_265", i8** %e, align 8, !dbg !38 + %"$e_290" = load i8*, i8** %e, align 8 + %"$_literal_cost_call_292" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_27", i8* %"$e_290") + %"$gasrem_293" = load i64, i64* @_gasrem, align 8 + %"$gascmp_294" = icmp ugt i64 %"$_literal_cost_call_292", %"$gasrem_293" + br i1 %"$gascmp_294", label %"$out_of_gas_295", label %"$have_gas_296" + +"$out_of_gas_295": ; preds = %"$have_gas_263" + call void @_out_of_gas() + br label %"$have_gas_296" + +"$have_gas_296": ; preds = %"$out_of_gas_295", %"$have_gas_263" + %"$consume_297" = sub i64 %"$gasrem_293", %"$_literal_cost_call_292" + store i64 %"$consume_297", i64* @_gasrem, align 8 + %"$execptr_load_298" = load i8*, i8** @_execptr, align 8 + %"$e_299" = load i8*, i8** %e, align 8 + call void @_throw(i8* %"$execptr_load_298", %_TyDescrTy_Typ* @"$TyDescr_Exception_27", i8* %"$e_299"), !dbg !41 + br label %"$matchsucc_246" + +"$empty_default_250": ; preds = %"$have_gas_244" + br label %"$matchsucc_246" + +"$matchsucc_246": ; preds = %"$have_gas_296", %"$True_251", %"$empty_default_250" + ret void +} + +declare %TName_Bool* @_eq_Uint128(i8*, %Uint128, %Uint128) + +declare void @_throw(i8*, %_TyDescrTy_Typ*, i8*) + +define internal void @"$CheckSenderBalance_300"(%Uint128 %_amount, [20 x i8]* %"$_origin_301", [20 x i8]* %"$_sender_302", %Uint128 %expected_balance) !dbg !42 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_301", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_302", align 1 + %cur_balance = alloca %Uint128, align 8 + %"$execptr_load_304" = load i8*, i8** @_execptr, align 8 + %"$cur_balance__sender_305" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$cur_balance__sender_305", align 1 + %"$cur_balance_call_306" = call i8* @_fetch_remote_field(i8* %"$execptr_load_304", [20 x i8]* %"$cur_balance__sender_305", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_303", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i32 0, i8* null, i32 1), !dbg !43 + %"$cur_balance_307" = bitcast i8* %"$cur_balance_call_306" to %Uint128* + %"$cur_balance_308" = load %Uint128, %Uint128* %"$cur_balance_307", align 8 + store %Uint128 %"$cur_balance_308", %Uint128* %cur_balance, align 8 + %"$_literal_cost_cur_balance_309" = alloca %Uint128, align 8 + %"$cur_balance_310" = load %Uint128, %Uint128* %cur_balance, align 8 + store %Uint128 %"$cur_balance_310", %Uint128* %"$_literal_cost_cur_balance_309", align 8 + %"$$_literal_cost_cur_balance_309_311" = bitcast %Uint128* %"$_literal_cost_cur_balance_309" to i8* + %"$_literal_cost_call_312" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i8* %"$$_literal_cost_cur_balance_309_311") + %"$gasadd_313" = add i64 %"$_literal_cost_call_312", 0 + %"$gasrem_314" = load i64, i64* @_gasrem, align 8 + %"$gascmp_315" = icmp ugt i64 %"$gasadd_313", %"$gasrem_314" + br i1 %"$gascmp_315", label %"$out_of_gas_316", label %"$have_gas_317" + +"$out_of_gas_316": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_317" + +"$have_gas_317": ; preds = %"$out_of_gas_316", %entry + %"$consume_318" = sub i64 %"$gasrem_314", %"$gasadd_313" + store i64 %"$consume_318", i64* @_gasrem, align 8 + %"$gasrem_319" = load i64, i64* @_gasrem, align 8 + %"$gascmp_320" = icmp ugt i64 1, %"$gasrem_319" + br i1 %"$gascmp_320", label %"$out_of_gas_321", label %"$have_gas_322" + +"$out_of_gas_321": ; preds = %"$have_gas_317" + call void @_out_of_gas() + br label %"$have_gas_322" + +"$have_gas_322": ; preds = %"$out_of_gas_321", %"$have_gas_317" + %"$consume_323" = sub i64 %"$gasrem_319", 1 + store i64 %"$consume_323", i64* @_gasrem, align 8 + %is_expected = alloca %TName_Bool*, align 8 + %"$execptr_load_324" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_325" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$eq_call_326" = call %TName_Bool* @_eq_Uint128(i8* %"$execptr_load_324", %Uint128 %expected_balance, %Uint128 %"$cur_balance_325"), !dbg !44 + store %TName_Bool* %"$eq_call_326", %TName_Bool** %is_expected, align 8, !dbg !44 + %"$gasrem_328" = load i64, i64* @_gasrem, align 8 + %"$gascmp_329" = icmp ugt i64 2, %"$gasrem_328" + br i1 %"$gascmp_329", label %"$out_of_gas_330", label %"$have_gas_331" + +"$out_of_gas_330": ; preds = %"$have_gas_322" + call void @_out_of_gas() + br label %"$have_gas_331" + +"$have_gas_331": ; preds = %"$out_of_gas_330", %"$have_gas_322" + %"$consume_332" = sub i64 %"$gasrem_328", 2 + store i64 %"$consume_332", i64* @_gasrem, align 8 + %"$is_expected_334" = load %TName_Bool*, %TName_Bool** %is_expected, align 8 + %"$is_expected_tag_335" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_expected_334", i32 0, i32 0 + %"$is_expected_tag_336" = load i8, i8* %"$is_expected_tag_335", align 1 + switch i8 %"$is_expected_tag_336", label %"$empty_default_337" [ + i8 0, label %"$True_338" + i8 1, label %"$False_340" + ], !dbg !45 + +"$True_338": ; preds = %"$have_gas_331" + %"$is_expected_339" = bitcast %TName_Bool* %"$is_expected_334" to %CName_True* + br label %"$matchsucc_333" + +"$False_340": ; preds = %"$have_gas_331" + %"$is_expected_341" = bitcast %TName_Bool* %"$is_expected_334" to %CName_False* + %"$gasrem_342" = load i64, i64* @_gasrem, align 8 + %"$gascmp_343" = icmp ugt i64 1, %"$gasrem_342" + br i1 %"$gascmp_343", label %"$out_of_gas_344", label %"$have_gas_345" + +"$out_of_gas_344": ; preds = %"$False_340" + call void @_out_of_gas() + br label %"$have_gas_345" + +"$have_gas_345": ; preds = %"$out_of_gas_344", %"$False_340" + %"$consume_346" = sub i64 %"$gasrem_342", 1 + store i64 %"$consume_346", i64* @_gasrem, align 8 + %e = alloca i8*, align 8 + %"$gasrem_347" = load i64, i64* @_gasrem, align 8 + %"$gascmp_348" = icmp ugt i64 1, %"$gasrem_347" + br i1 %"$gascmp_348", label %"$out_of_gas_349", label %"$have_gas_350" + +"$out_of_gas_349": ; preds = %"$have_gas_345" + call void @_out_of_gas() + br label %"$have_gas_350" + +"$have_gas_350": ; preds = %"$out_of_gas_349", %"$have_gas_345" + %"$consume_351" = sub i64 %"$gasrem_347", 1 + store i64 %"$consume_351", i64* @_gasrem, align 8 + %"$msgobj_352_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_352_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_352_salloc_load", i64 121) + %"$msgobj_352_salloc" = bitcast i8* %"$msgobj_352_salloc_salloc" to [121 x i8]* + %"$msgobj_352" = bitcast [121 x i8]* %"$msgobj_352_salloc" to i8* + store i8 3, i8* %"$msgobj_352", align 1 + %"$msgobj_fname_354" = getelementptr i8, i8* %"$msgobj_352", i32 1 + %"$msgobj_fname_355" = bitcast i8* %"$msgobj_fname_354" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_353", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_355", align 8 + %"$msgobj_td_356" = getelementptr i8, i8* %"$msgobj_352", i32 17 + %"$msgobj_td_357" = bitcast i8* %"$msgobj_td_356" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_19", %_TyDescrTy_Typ** %"$msgobj_td_357", align 8 + %"$msgobj_v_359" = getelementptr i8, i8* %"$msgobj_352", i32 25 + %"$msgobj_v_360" = bitcast i8* %"$msgobj_v_359" to %String* + store %String { i8* getelementptr inbounds ([50 x i8], [50 x i8]* @"$stringlit_358", i32 0, i32 0), i32 50 }, %String* %"$msgobj_v_360", align 8 + %"$msgobj_fname_362" = getelementptr i8, i8* %"$msgobj_352", i32 41 + %"$msgobj_fname_363" = bitcast i8* %"$msgobj_fname_362" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_361", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_363", align 8 + %"$msgobj_td_364" = getelementptr i8, i8* %"$msgobj_352", i32 57 + %"$msgobj_td_365" = bitcast i8* %"$msgobj_td_364" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", %_TyDescrTy_Typ** %"$msgobj_td_365", align 8 + %"$msgobj_v_366" = getelementptr i8, i8* %"$msgobj_352", i32 65 + %"$msgobj_v_367" = bitcast i8* %"$msgobj_v_366" to %Uint128* + store %Uint128 %expected_balance, %Uint128* %"$msgobj_v_367", align 8 + %"$msgobj_fname_369" = getelementptr i8, i8* %"$msgobj_352", i32 81 + %"$msgobj_fname_370" = bitcast i8* %"$msgobj_fname_369" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_368", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_370", align 8 + %"$msgobj_td_371" = getelementptr i8, i8* %"$msgobj_352", i32 97 + %"$msgobj_td_372" = bitcast i8* %"$msgobj_td_371" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", %_TyDescrTy_Typ** %"$msgobj_td_372", align 8 + %"$cur_balance_373" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$msgobj_v_374" = getelementptr i8, i8* %"$msgobj_352", i32 105 + %"$msgobj_v_375" = bitcast i8* %"$msgobj_v_374" to %Uint128* + store %Uint128 %"$cur_balance_373", %Uint128* %"$msgobj_v_375", align 8 + store i8* %"$msgobj_352", i8** %e, align 8, !dbg !46 + %"$e_377" = load i8*, i8** %e, align 8 + %"$_literal_cost_call_379" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_27", i8* %"$e_377") + %"$gasrem_380" = load i64, i64* @_gasrem, align 8 + %"$gascmp_381" = icmp ugt i64 %"$_literal_cost_call_379", %"$gasrem_380" + br i1 %"$gascmp_381", label %"$out_of_gas_382", label %"$have_gas_383" + +"$out_of_gas_382": ; preds = %"$have_gas_350" + call void @_out_of_gas() + br label %"$have_gas_383" + +"$have_gas_383": ; preds = %"$out_of_gas_382", %"$have_gas_350" + %"$consume_384" = sub i64 %"$gasrem_380", %"$_literal_cost_call_379" + store i64 %"$consume_384", i64* @_gasrem, align 8 + %"$execptr_load_385" = load i8*, i8** @_execptr, align 8 + %"$e_386" = load i8*, i8** %e, align 8 + call void @_throw(i8* %"$execptr_load_385", %_TyDescrTy_Typ* @"$TyDescr_Exception_27", i8* %"$e_386"), !dbg !49 + br label %"$matchsucc_333" + +"$empty_default_337": ; preds = %"$have_gas_331" + br label %"$matchsucc_333" + +"$matchsucc_333": ; preds = %"$have_gas_383", %"$True_338", %"$empty_default_337" + ret void +} + +declare i8* @_fetch_remote_field(i8*, [20 x i8]*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) + +define internal void @"$AcceptAndCheckBalance_387"(%Uint128 %_amount, [20 x i8]* %"$_origin_388", [20 x i8]* %"$_sender_389") !dbg !50 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_388", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_389", align 1 + %init_bal = alloca %Uint128, align 8 + %"$execptr_load_391" = load i8*, i8** @_execptr, align 8 + %"$init_bal_call_392" = call i8* @_fetch_field(i8* %"$execptr_load_391", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_390", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i32 0, i8* null, i32 1), !dbg !51 + %"$init_bal_393" = bitcast i8* %"$init_bal_call_392" to %Uint128* + %"$init_bal_394" = load %Uint128, %Uint128* %"$init_bal_393", align 8 + store %Uint128 %"$init_bal_394", %Uint128* %init_bal, align 8 + %"$_literal_cost_init_bal_395" = alloca %Uint128, align 8 + %"$init_bal_396" = load %Uint128, %Uint128* %init_bal, align 8 + store %Uint128 %"$init_bal_396", %Uint128* %"$_literal_cost_init_bal_395", align 8 + %"$$_literal_cost_init_bal_395_397" = bitcast %Uint128* %"$_literal_cost_init_bal_395" to i8* + %"$_literal_cost_call_398" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i8* %"$$_literal_cost_init_bal_395_397") + %"$gasadd_399" = add i64 %"$_literal_cost_call_398", 0 + %"$gasrem_400" = load i64, i64* @_gasrem, align 8 + %"$gascmp_401" = icmp ugt i64 %"$gasadd_399", %"$gasrem_400" + br i1 %"$gascmp_401", label %"$out_of_gas_402", label %"$have_gas_403" + +"$out_of_gas_402": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_403" + +"$have_gas_403": ; preds = %"$out_of_gas_402", %entry + %"$consume_404" = sub i64 %"$gasrem_400", %"$gasadd_399" + store i64 %"$consume_404", i64* @_gasrem, align 8 + %"$gasrem_405" = load i64, i64* @_gasrem, align 8 + %"$gascmp_406" = icmp ugt i64 1, %"$gasrem_405" + br i1 %"$gascmp_406", label %"$out_of_gas_407", label %"$have_gas_408" + +"$out_of_gas_407": ; preds = %"$have_gas_403" + call void @_out_of_gas() + br label %"$have_gas_408" + +"$have_gas_408": ; preds = %"$out_of_gas_407", %"$have_gas_403" + %"$consume_409" = sub i64 %"$gasrem_405", 1 + store i64 %"$consume_409", i64* @_gasrem, align 8 + %"$execptr_load_410" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_410"), !dbg !52 + %"$gasrem_411" = load i64, i64* @_gasrem, align 8 + %"$gascmp_412" = icmp ugt i64 1, %"$gasrem_411" + br i1 %"$gascmp_412", label %"$out_of_gas_413", label %"$have_gas_414" + +"$out_of_gas_413": ; preds = %"$have_gas_408" + call void @_out_of_gas() + br label %"$have_gas_414" + +"$have_gas_414": ; preds = %"$out_of_gas_413", %"$have_gas_408" + %"$consume_415" = sub i64 %"$gasrem_411", 1 + store i64 %"$consume_415", i64* @_gasrem, align 8 + %expected_balance = alloca %Uint128, align 8 + %"$init_bal_416" = load %Uint128, %Uint128* %init_bal, align 8 + %"$add_call_417" = call %Uint128 @_add_Uint128(%Uint128 %"$init_bal_416", %Uint128 %_amount), !dbg !53 + store %Uint128 %"$add_call_417", %Uint128* %expected_balance, align 8, !dbg !53 + %"$gasrem_418" = load i64, i64* @_gasrem, align 8 + %"$gascmp_419" = icmp ugt i64 1, %"$gasrem_418" + br i1 %"$gascmp_419", label %"$out_of_gas_420", label %"$have_gas_421" + +"$out_of_gas_420": ; preds = %"$have_gas_414" + call void @_out_of_gas() + br label %"$have_gas_421" + +"$have_gas_421": ; preds = %"$out_of_gas_420", %"$have_gas_414" + %"$consume_422" = sub i64 %"$gasrem_418", 1 + store i64 %"$consume_422", i64* @_gasrem, align 8 + %"$CheckBalance__origin_423" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_423", align 1 + %"$CheckBalance__sender_424" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_424", align 1 + %"$expected_balance_425" = load %Uint128, %Uint128* %expected_balance, align 8 + call void @"$CheckBalance_214"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_423", [20 x i8]* %"$CheckBalance__sender_424", %Uint128 %"$expected_balance_425"), !dbg !54 + ret void +} + +declare %Uint128 @_add_Uint128(%Uint128, %Uint128) + +define void @AcceptAndCheckBalance(i8* %0) !dbg !55 { +entry: + %"$_amount_427" = getelementptr i8, i8* %0, i32 0 + %"$_amount_428" = bitcast i8* %"$_amount_427" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_428", align 8 + %"$_origin_429" = getelementptr i8, i8* %0, i32 16 + %"$_origin_430" = bitcast i8* %"$_origin_429" to [20 x i8]* + %"$_sender_431" = getelementptr i8, i8* %0, i32 36 + %"$_sender_432" = bitcast i8* %"$_sender_431" to [20 x i8]* + call void @"$AcceptAndCheckBalance_387"(%Uint128 %_amount, [20 x i8]* %"$_origin_430", [20 x i8]* %"$_sender_432"), !dbg !56 + ret void +} + +define internal void @"$AcceptTwiceAndCheckBalance_433"(%Uint128 %_amount, [20 x i8]* %"$_origin_434", [20 x i8]* %"$_sender_435") !dbg !57 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_434", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_435", align 1 + %init_bal = alloca %Uint128, align 8 + %"$execptr_load_437" = load i8*, i8** @_execptr, align 8 + %"$init_bal_call_438" = call i8* @_fetch_field(i8* %"$execptr_load_437", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_436", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i32 0, i8* null, i32 1), !dbg !58 + %"$init_bal_439" = bitcast i8* %"$init_bal_call_438" to %Uint128* + %"$init_bal_440" = load %Uint128, %Uint128* %"$init_bal_439", align 8 + store %Uint128 %"$init_bal_440", %Uint128* %init_bal, align 8 + %"$_literal_cost_init_bal_441" = alloca %Uint128, align 8 + %"$init_bal_442" = load %Uint128, %Uint128* %init_bal, align 8 + store %Uint128 %"$init_bal_442", %Uint128* %"$_literal_cost_init_bal_441", align 8 + %"$$_literal_cost_init_bal_441_443" = bitcast %Uint128* %"$_literal_cost_init_bal_441" to i8* + %"$_literal_cost_call_444" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i8* %"$$_literal_cost_init_bal_441_443") + %"$gasadd_445" = add i64 %"$_literal_cost_call_444", 0 + %"$gasrem_446" = load i64, i64* @_gasrem, align 8 + %"$gascmp_447" = icmp ugt i64 %"$gasadd_445", %"$gasrem_446" + br i1 %"$gascmp_447", label %"$out_of_gas_448", label %"$have_gas_449" + +"$out_of_gas_448": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_449" + +"$have_gas_449": ; preds = %"$out_of_gas_448", %entry + %"$consume_450" = sub i64 %"$gasrem_446", %"$gasadd_445" + store i64 %"$consume_450", i64* @_gasrem, align 8 + %"$gasrem_451" = load i64, i64* @_gasrem, align 8 + %"$gascmp_452" = icmp ugt i64 1, %"$gasrem_451" + br i1 %"$gascmp_452", label %"$out_of_gas_453", label %"$have_gas_454" + +"$out_of_gas_453": ; preds = %"$have_gas_449" + call void @_out_of_gas() + br label %"$have_gas_454" + +"$have_gas_454": ; preds = %"$out_of_gas_453", %"$have_gas_449" + %"$consume_455" = sub i64 %"$gasrem_451", 1 + store i64 %"$consume_455", i64* @_gasrem, align 8 + %"$execptr_load_456" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_456"), !dbg !59 + %"$gasrem_457" = load i64, i64* @_gasrem, align 8 + %"$gascmp_458" = icmp ugt i64 1, %"$gasrem_457" + br i1 %"$gascmp_458", label %"$out_of_gas_459", label %"$have_gas_460" + +"$out_of_gas_459": ; preds = %"$have_gas_454" + call void @_out_of_gas() + br label %"$have_gas_460" + +"$have_gas_460": ; preds = %"$out_of_gas_459", %"$have_gas_454" + %"$consume_461" = sub i64 %"$gasrem_457", 1 + store i64 %"$consume_461", i64* @_gasrem, align 8 + %expected_balance = alloca %Uint128, align 8 + %"$init_bal_462" = load %Uint128, %Uint128* %init_bal, align 8 + %"$add_call_463" = call %Uint128 @_add_Uint128(%Uint128 %"$init_bal_462", %Uint128 %_amount), !dbg !60 + store %Uint128 %"$add_call_463", %Uint128* %expected_balance, align 8, !dbg !60 + %"$gasrem_464" = load i64, i64* @_gasrem, align 8 + %"$gascmp_465" = icmp ugt i64 1, %"$gasrem_464" + br i1 %"$gascmp_465", label %"$out_of_gas_466", label %"$have_gas_467" + +"$out_of_gas_466": ; preds = %"$have_gas_460" + call void @_out_of_gas() + br label %"$have_gas_467" + +"$have_gas_467": ; preds = %"$out_of_gas_466", %"$have_gas_460" + %"$consume_468" = sub i64 %"$gasrem_464", 1 + store i64 %"$consume_468", i64* @_gasrem, align 8 + %"$CheckBalance__origin_469" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_469", align 1 + %"$CheckBalance__sender_470" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_470", align 1 + %"$expected_balance_471" = load %Uint128, %Uint128* %expected_balance, align 8 + call void @"$CheckBalance_214"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_469", [20 x i8]* %"$CheckBalance__sender_470", %Uint128 %"$expected_balance_471"), !dbg !61 + %"$gasrem_472" = load i64, i64* @_gasrem, align 8 + %"$gascmp_473" = icmp ugt i64 1, %"$gasrem_472" + br i1 %"$gascmp_473", label %"$out_of_gas_474", label %"$have_gas_475" + +"$out_of_gas_474": ; preds = %"$have_gas_467" + call void @_out_of_gas() + br label %"$have_gas_475" + +"$have_gas_475": ; preds = %"$out_of_gas_474", %"$have_gas_467" + %"$consume_476" = sub i64 %"$gasrem_472", 1 + store i64 %"$consume_476", i64* @_gasrem, align 8 + %"$execptr_load_477" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_477"), !dbg !62 + %"$gasrem_478" = load i64, i64* @_gasrem, align 8 + %"$gascmp_479" = icmp ugt i64 1, %"$gasrem_478" + br i1 %"$gascmp_479", label %"$out_of_gas_480", label %"$have_gas_481" + +"$out_of_gas_480": ; preds = %"$have_gas_475" + call void @_out_of_gas() + br label %"$have_gas_481" + +"$have_gas_481": ; preds = %"$out_of_gas_480", %"$have_gas_475" + %"$consume_482" = sub i64 %"$gasrem_478", 1 + store i64 %"$consume_482", i64* @_gasrem, align 8 + %"$CheckBalance__origin_483" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_483", align 1 + %"$CheckBalance__sender_484" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_484", align 1 + %"$expected_balance_485" = load %Uint128, %Uint128* %expected_balance, align 8 + call void @"$CheckBalance_214"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_483", [20 x i8]* %"$CheckBalance__sender_484", %Uint128 %"$expected_balance_485"), !dbg !63 + ret void +} + +define void @AcceptTwiceAndCheckBalance(i8* %0) !dbg !64 { +entry: + %"$_amount_487" = getelementptr i8, i8* %0, i32 0 + %"$_amount_488" = bitcast i8* %"$_amount_487" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_488", align 8 + %"$_origin_489" = getelementptr i8, i8* %0, i32 16 + %"$_origin_490" = bitcast i8* %"$_origin_489" to [20 x i8]* + %"$_sender_491" = getelementptr i8, i8* %0, i32 36 + %"$_sender_492" = bitcast i8* %"$_sender_491" to [20 x i8]* + call void @"$AcceptTwiceAndCheckBalance_433"(%Uint128 %_amount, [20 x i8]* %"$_origin_490", [20 x i8]* %"$_sender_492"), !dbg !65 + ret void +} + +define internal void @"$AcceptAndCheckSenderBalance_493"(%Uint128 %_amount, [20 x i8]* %"$_origin_494", [20 x i8]* %"$_sender_495") !dbg !66 { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_494", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_495", align 1 + %init_bal = alloca %Uint128, align 8 + %"$execptr_load_497" = load i8*, i8** @_execptr, align 8 + %"$init_bal__sender_498" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$init_bal__sender_498", align 1 + %"$init_bal_call_499" = call i8* @_fetch_remote_field(i8* %"$execptr_load_497", [20 x i8]* %"$init_bal__sender_498", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_496", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i32 0, i8* null, i32 1), !dbg !67 + %"$init_bal_500" = bitcast i8* %"$init_bal_call_499" to %Uint128* + %"$init_bal_501" = load %Uint128, %Uint128* %"$init_bal_500", align 8 + store %Uint128 %"$init_bal_501", %Uint128* %init_bal, align 8 + %"$_literal_cost_init_bal_502" = alloca %Uint128, align 8 + %"$init_bal_503" = load %Uint128, %Uint128* %init_bal, align 8 + store %Uint128 %"$init_bal_503", %Uint128* %"$_literal_cost_init_bal_502", align 8 + %"$$_literal_cost_init_bal_502_504" = bitcast %Uint128* %"$_literal_cost_init_bal_502" to i8* + %"$_literal_cost_call_505" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i8* %"$$_literal_cost_init_bal_502_504") + %"$gasadd_506" = add i64 %"$_literal_cost_call_505", 0 + %"$gasrem_507" = load i64, i64* @_gasrem, align 8 + %"$gascmp_508" = icmp ugt i64 %"$gasadd_506", %"$gasrem_507" + br i1 %"$gascmp_508", label %"$out_of_gas_509", label %"$have_gas_510" + +"$out_of_gas_509": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_510" + +"$have_gas_510": ; preds = %"$out_of_gas_509", %entry + %"$consume_511" = sub i64 %"$gasrem_507", %"$gasadd_506" + store i64 %"$consume_511", i64* @_gasrem, align 8 + %"$gasrem_512" = load i64, i64* @_gasrem, align 8 + %"$gascmp_513" = icmp ugt i64 1, %"$gasrem_512" + br i1 %"$gascmp_513", label %"$out_of_gas_514", label %"$have_gas_515" + +"$out_of_gas_514": ; preds = %"$have_gas_510" + call void @_out_of_gas() + br label %"$have_gas_515" + +"$have_gas_515": ; preds = %"$out_of_gas_514", %"$have_gas_510" + %"$consume_516" = sub i64 %"$gasrem_512", 1 + store i64 %"$consume_516", i64* @_gasrem, align 8 + %"$execptr_load_517" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_517"), !dbg !68 + %"$gasrem_518" = load i64, i64* @_gasrem, align 8 + %"$gascmp_519" = icmp ugt i64 1, %"$gasrem_518" + br i1 %"$gascmp_519", label %"$out_of_gas_520", label %"$have_gas_521" + +"$out_of_gas_520": ; preds = %"$have_gas_515" + call void @_out_of_gas() + br label %"$have_gas_521" + +"$have_gas_521": ; preds = %"$out_of_gas_520", %"$have_gas_515" + %"$consume_522" = sub i64 %"$gasrem_518", 1 + store i64 %"$consume_522", i64* @_gasrem, align 8 + %"$CheckSenderBalance__origin_523" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckSenderBalance__origin_523", align 1 + %"$CheckSenderBalance__sender_524" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckSenderBalance__sender_524", align 1 + %"$init_bal_525" = load %Uint128, %Uint128* %init_bal, align 8 + call void @"$CheckSenderBalance_300"(%Uint128 %_amount, [20 x i8]* %"$CheckSenderBalance__origin_523", [20 x i8]* %"$CheckSenderBalance__sender_524", %Uint128 %"$init_bal_525"), !dbg !69 + ret void +} + +define void @AcceptAndCheckSenderBalance(i8* %0) !dbg !70 { +entry: + %"$_amount_527" = getelementptr i8, i8* %0, i32 0 + %"$_amount_528" = bitcast i8* %"$_amount_527" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_528", align 8 + %"$_origin_529" = getelementptr i8, i8* %0, i32 16 + %"$_origin_530" = bitcast i8* %"$_origin_529" to [20 x i8]* + %"$_sender_531" = getelementptr i8, i8* %0, i32 36 + %"$_sender_532" = bitcast i8* %"$_sender_531" to [20 x i8]* + call void @"$AcceptAndCheckSenderBalance_493"(%Uint128 %_amount, [20 x i8]* %"$_origin_530", [20 x i8]* %"$_sender_532"), !dbg !71 + ret void +} + +!llvm.module.flags = !{!0} +!llvm.dbg.cu = !{!1} + +!0 = !{i32 2, !"Debug Info Version", i32 3} +!1 = distinct !DICompileUnit(language: DW_LANG_C89, file: !2, producer: "Scilla Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: LineTablesOnly, enums: !3, splitDebugInlining: false) +!2 = !DIFile(filename: "accounting_tests_support.scilla", directory: "codegen/contr") +!3 = !{} +!4 = distinct !DISubprogram(name: "_init_libs", linkageName: "_init_libs", scope: !5, file: !5, type: !6, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!5 = !DIFile(filename: ".", directory: ".") +!6 = !DISubroutineType(types: !7) +!7 = !{!8} +!8 = !DIBasicType(tag: DW_TAG_unspecified_type, name: "void") +!9 = distinct !DISubprogram(name: "_init_state", linkageName: "_init_state", scope: !5, file: !5, type: !6, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!10 = !DILocation(line: 5, column: 38, scope: !9) +!11 = distinct !DISubprogram(name: "Reset", linkageName: "Reset", scope: !2, file: !2, line: 7, type: !6, scopeLine: 7, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!12 = !DILocation(line: 8, column: 17, scope: !11) +!13 = !DILocation(line: 9, column: 3, scope: !11) +!14 = distinct !DISubprogram(name: "Reset", linkageName: "Reset", scope: !2, file: !2, line: 7, type: !6, scopeLine: 7, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!15 = !DILocation(line: 7, column: 12, scope: !14) +!16 = distinct !DISubprogram(name: "StoreString", linkageName: "StoreString", scope: !2, file: !2, line: 12, type: !6, scopeLine: 12, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!17 = !DILocation(line: 13, column: 3, scope: !16) +!18 = !DILocation(line: 14, column: 17, scope: !16) +!19 = !DILocation(line: 15, column: 3, scope: !16) +!20 = distinct !DISubprogram(name: "StoreString", linkageName: "StoreString", scope: !2, file: !2, line: 12, type: !6, scopeLine: 12, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!21 = !DILocation(line: 12, column: 12, scope: !20) +!22 = distinct !DISubprogram(name: "Accept", linkageName: "Accept", scope: !2, file: !2, line: 18, type: !6, scopeLine: 18, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!23 = !DILocation(line: 19, column: 3, scope: !22) +!24 = distinct !DISubprogram(name: "Accept", linkageName: "Accept", scope: !2, file: !2, line: 18, type: !6, scopeLine: 18, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!25 = !DILocation(line: 18, column: 12, scope: !24) +!26 = distinct !DISubprogram(name: "AcceptTwice", linkageName: "AcceptTwice", scope: !2, file: !2, line: 22, type: !6, scopeLine: 22, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!27 = !DILocation(line: 23, column: 3, scope: !26) +!28 = !DILocation(line: 24, column: 3, scope: !26) +!29 = distinct !DISubprogram(name: "AcceptTwice", linkageName: "AcceptTwice", scope: !2, file: !2, line: 22, type: !6, scopeLine: 22, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!30 = !DILocation(line: 22, column: 12, scope: !29) +!31 = distinct !DISubprogram(name: "NonAccept", linkageName: "NonAccept", scope: !2, file: !2, line: 27, type: !6, scopeLine: 27, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!32 = distinct !DISubprogram(name: "NonAccept", linkageName: "NonAccept", scope: !2, file: !2, line: 27, type: !6, scopeLine: 27, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!33 = !DILocation(line: 27, column: 12, scope: !32) +!34 = distinct !DISubprogram(name: "CheckBalance", linkageName: "CheckBalance", scope: !2, file: !2, line: 30, type: !6, scopeLine: 30, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!35 = !DILocation(line: 31, column: 3, scope: !34) +!36 = !DILocation(line: 32, column: 17, scope: !34) +!37 = !DILocation(line: 33, column: 3, scope: !34) +!38 = !DILocation(line: 36, column: 9, scope: !39) +!39 = distinct !DILexicalBlock(scope: !40, file: !2, line: 35, column: 5) +!40 = distinct !DILexicalBlock(scope: !34, file: !2, line: 33, column: 3) +!41 = !DILocation(line: 39, column: 5, scope: !39) +!42 = distinct !DISubprogram(name: "CheckSenderBalance", linkageName: "CheckSenderBalance", scope: !2, file: !2, line: 43, type: !6, scopeLine: 43, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!43 = !DILocation(line: 44, column: 3, scope: !42) +!44 = !DILocation(line: 45, column: 17, scope: !42) +!45 = !DILocation(line: 46, column: 3, scope: !42) +!46 = !DILocation(line: 49, column: 9, scope: !47) +!47 = distinct !DILexicalBlock(scope: !48, file: !2, line: 48, column: 5) +!48 = distinct !DILexicalBlock(scope: !42, file: !2, line: 46, column: 3) +!49 = !DILocation(line: 52, column: 5, scope: !47) +!50 = distinct !DISubprogram(name: "AcceptAndCheckBalance", linkageName: "AcceptAndCheckBalance", scope: !2, file: !2, line: 56, type: !6, scopeLine: 56, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!51 = !DILocation(line: 57, column: 3, scope: !50) +!52 = !DILocation(line: 58, column: 3, scope: !50) +!53 = !DILocation(line: 59, column: 22, scope: !50) +!54 = !DILocation(line: 60, column: 3, scope: !50) +!55 = distinct !DISubprogram(name: "AcceptAndCheckBalance", linkageName: "AcceptAndCheckBalance", scope: !2, file: !2, line: 56, type: !6, scopeLine: 56, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!56 = !DILocation(line: 56, column: 12, scope: !55) +!57 = distinct !DISubprogram(name: "AcceptTwiceAndCheckBalance", linkageName: "AcceptTwiceAndCheckBalance", scope: !2, file: !2, line: 63, type: !6, scopeLine: 63, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!58 = !DILocation(line: 64, column: 3, scope: !57) +!59 = !DILocation(line: 65, column: 3, scope: !57) +!60 = !DILocation(line: 66, column: 22, scope: !57) +!61 = !DILocation(line: 67, column: 3, scope: !57) +!62 = !DILocation(line: 68, column: 3, scope: !57) +!63 = !DILocation(line: 69, column: 3, scope: !57) +!64 = distinct !DISubprogram(name: "AcceptTwiceAndCheckBalance", linkageName: "AcceptTwiceAndCheckBalance", scope: !2, file: !2, line: 63, type: !6, scopeLine: 63, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!65 = !DILocation(line: 63, column: 12, scope: !64) +!66 = distinct !DISubprogram(name: "AcceptAndCheckSenderBalance", linkageName: "AcceptAndCheckSenderBalance", scope: !2, file: !2, line: 72, type: !6, scopeLine: 72, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!67 = !DILocation(line: 73, column: 3, scope: !66) +!68 = !DILocation(line: 74, column: 3, scope: !66) +!69 = !DILocation(line: 75, column: 3, scope: !66) +!70 = distinct !DISubprogram(name: "AcceptAndCheckSenderBalance", linkageName: "AcceptAndCheckSenderBalance", scope: !2, file: !2, line: 72, type: !6, scopeLine: 72, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) +!71 = !DILocation(line: 72, column: 12, scope: !70) diff --git a/tests/codegen/contr/dgold/remote_state_reads.scilla.gold b/tests/codegen/contr/dgold/remote_state_reads.scilla.gold index e5195ce1..1cace0ca 100644 --- a/tests/codegen/contr/dgold/remote_state_reads.scilla.gold +++ b/tests/codegen/contr/dgold/remote_state_reads.scilla.gold @@ -16,9 +16,9 @@ target triple = "x86_64-unknown-linux-gnu" %"$TyDescr_AddrFieldTyp_85" = type { %TyDescrString, %_TyDescrTy_Typ* } %"$TyDescr_AddrTyp_86" = type { i32, %"$TyDescr_AddrFieldTyp_85"* } %Uint32 = type { i32 } -%"$ParamDescr_1579" = type { %ParamDescrString, %_TyDescrTy_Typ* } +%"$ParamDescr_1467" = type { %ParamDescrString, %_TyDescrTy_Typ* } %ParamDescrString = type { i8*, i32 } -%"$TransDescr_1580" = type { %ParamDescrString, i32, %"$ParamDescr_1579"* } +%"$TransDescr_1468" = type { %ParamDescrString, i32, %"$ParamDescr_1467"* } %TName_0x3620c286757a29985cee194eb90064270fb65414.AddressADT = type { i8, %CName_0x3620c286757a29985cee194eb90064270fb65414.Address1*, %CName_0x3620c286757a29985cee194eb90064270fb65414.Address2* } %CName_0x3620c286757a29985cee194eb90064270fb65414.Address1 = type <{ i8, [20 x i8] }> %CName_0x3620c286757a29985cee194eb90064270fb65414.Address2 = type <{ i8, [20 x i8] }> @@ -367,63 +367,52 @@ target triple = "x86_64-unknown-linux-gnu" @"$assign_test_9_1341" = unnamed_addr constant [14 x i8] c"assign_test_9\00" @"$assign_test_10_1419" = unnamed_addr constant [15 x i8] c"assign_test_10\00" @"$assign_test_10_1457" = unnamed_addr constant [15 x i8] c"assign_test_10\00" -@"$_balance_1470" = unnamed_addr constant [9 x i8] c"_balance\00" -@"$sender_balance_pre_1496" = unnamed_addr constant [19 x i8] c"sender_balance_pre\00" -@"$_balance_1506" = unnamed_addr constant [9 x i8] c"_balance\00" -@"$sender_balance_mid_1532" = unnamed_addr constant [19 x i8] c"sender_balance_mid\00" -@"$_balance_1542" = unnamed_addr constant [9 x i8] c"_balance\00" -@"$sender_balance_post_1568" = unnamed_addr constant [20 x i8] c"sender_balance_post\00" @_tydescr_table = constant [48 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Map_83", %_TyDescrTy_Typ* @"$TyDescr_Event_54", %_TyDescrTy_Typ* @"$TyDescr_Int64_36", %_TyDescrTy_Typ* @"$TyDescr_Addr_95", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_69", %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_ByStr20_with_end_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_70", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_contract_field_g_:_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_end_65", %_TyDescrTy_Typ* @"$TyDescr_Addr_91", %_TyDescrTy_Typ* @"$TyDescr_Addr_88", %_TyDescrTy_Typ* @"$TyDescr_Map_81", %_TyDescrTy_Typ* @"$TyDescr_Exception_56", %_TyDescrTy_Typ* @"$TyDescr_String_48", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(ByStr20_with_end)_(Bool)_72", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_68", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_contract_field_f_:_Uint128_end_66", %_TyDescrTy_Typ* @"$TyDescr_Int256_44", %_TyDescrTy_Typ* @"$TyDescr_Int128_40", %_TyDescrTy_Typ* @"$TyDescr_Addr_97", %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_ByStr20_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_71", %_TyDescrTy_Typ* @"$TyDescr_Bystr_58", %_TyDescrTy_Typ* @"$TyDescr_Addr_93", %_TyDescrTy_Typ* @"$TyDescr_Map_84", %_TyDescrTy_Typ* @"$TyDescr_Map_80", %_TyDescrTy_Typ* @"$TyDescr_Map_78", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_end_67", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_64", %_TyDescrTy_Typ* @"$TyDescr_Map_82", %_TyDescrTy_Typ* @"$TyDescr_ADT_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_74", %_TyDescrTy_Typ* @"$TyDescr_Addr_99", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_75", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_60", %_TyDescrTy_Typ* @"$TyDescr_Uint256_46", %_TyDescrTy_Typ* @"$TyDescr_Uint32_34", %_TyDescrTy_Typ* @"$TyDescr_Addr_98", %_TyDescrTy_Typ* @"$TyDescr_Addr_89", %_TyDescrTy_Typ* @"$TyDescr_Addr_87", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Bool_73", %_TyDescrTy_Typ* @"$TyDescr_Uint64_38", %_TyDescrTy_Typ* @"$TyDescr_Bnum_50", %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", %_TyDescrTy_Typ* @"$TyDescr_Addr_94", %_TyDescrTy_Typ* @"$TyDescr_Map_79", %_TyDescrTy_Typ* @"$TyDescr_Addr_90", %_TyDescrTy_Typ* @"$TyDescr_Addr_92", %_TyDescrTy_Typ* @"$TyDescr_Map_77", %_TyDescrTy_Typ* @"$TyDescr_Message_52", %_TyDescrTy_Typ* @"$TyDescr_Addr_96", %_TyDescrTy_Typ* @"$TyDescr_Int32_32"] @_tydescr_table_length = constant i32 48 -@"$pname__scilla_version_1581" = unnamed_addr constant [15 x i8] c"_scilla_version" -@"$pname__this_address_1582" = unnamed_addr constant [13 x i8] c"_this_address" -@"$pname__creation_block_1583" = unnamed_addr constant [15 x i8] c"_creation_block" -@"$pname_cparam1_1584" = unnamed_addr constant [7 x i8] c"cparam1" -@"$pname_cparam2_1585" = unnamed_addr constant [7 x i8] c"cparam2" -@"$pname_cparam3_1586" = unnamed_addr constant [7 x i8] c"cparam3" -@_contract_parameters = constant [6 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__scilla_version_1581", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Uint32_34" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$pname__this_address_1582", i32 0, i32 0), i32 13 }, %_TyDescrTy_Typ* @"$TyDescr_Bystr20_60" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__creation_block_1583", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Bnum_50" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$pname_cparam1_1584", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$pname_cparam2_1585", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_98" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$pname_cparam3_1586", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_97" }] +@"$pname__scilla_version_1469" = unnamed_addr constant [15 x i8] c"_scilla_version" +@"$pname__this_address_1470" = unnamed_addr constant [13 x i8] c"_this_address" +@"$pname__creation_block_1471" = unnamed_addr constant [15 x i8] c"_creation_block" +@"$pname_cparam1_1472" = unnamed_addr constant [7 x i8] c"cparam1" +@"$pname_cparam2_1473" = unnamed_addr constant [7 x i8] c"cparam2" +@"$pname_cparam3_1474" = unnamed_addr constant [7 x i8] c"cparam3" +@_contract_parameters = constant [6 x %"$ParamDescr_1467"] [%"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__scilla_version_1469", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Uint32_34" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$pname__this_address_1470", i32 0, i32 0), i32 13 }, %_TyDescrTy_Typ* @"$TyDescr_Bystr20_60" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__creation_block_1471", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Bnum_50" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$pname_cparam1_1472", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$pname_cparam2_1473", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_98" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$pname_cparam3_1474", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_97" }] @_contract_parameters_length = constant i32 6 -@"$tpname__amount_1587" = unnamed_addr constant [7 x i8] c"_amount" -@"$tpname__origin_1588" = unnamed_addr constant [7 x i8] c"_origin" -@"$tpname__sender_1589" = unnamed_addr constant [7 x i8] c"_sender" -@"$tpname_remote1_1590" = unnamed_addr constant [7 x i8] c"remote1" -@"$tpname_remote2_1591" = unnamed_addr constant [7 x i8] c"remote2" -@"$tpname_remote3_1592" = unnamed_addr constant [7 x i8] c"remote3" -@"$tparams_RemoteReadsTest_1593" = unnamed_addr constant [6 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1587", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1588", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1589", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote1_1590", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote2_1591", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_98" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote3_1592", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_90" }] -@"$tname_RemoteReadsTest_1594" = unnamed_addr constant [15 x i8] c"RemoteReadsTest" -@"$tpname__amount_1595" = unnamed_addr constant [7 x i8] c"_amount" -@"$tpname__origin_1596" = unnamed_addr constant [7 x i8] c"_origin" -@"$tpname__sender_1597" = unnamed_addr constant [7 x i8] c"_sender" -@"$tpname_list1_1598" = unnamed_addr constant [5 x i8] c"list1" -@"$tpname_list2_1599" = unnamed_addr constant [5 x i8] c"list2" -@"$tpname_list3_1600" = unnamed_addr constant [5 x i8] c"list3" -@"$tpname_pair1_1601" = unnamed_addr constant [5 x i8] c"pair1" -@"$tpname_adt1_1602" = unnamed_addr constant [4 x i8] c"adt1" -@"$tpname_remote1_1603" = unnamed_addr constant [7 x i8] c"remote1" -@"$tparams_RemoteReadsADTTest_1604" = unnamed_addr constant [9 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1595", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1596", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1597", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_list1_1598", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_end_67" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_list2_1599", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_contract_field_f_:_Uint128_end_66" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_list3_1600", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_contract_field_g_:_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_end_65" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_pair1_1601", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_ByStr20_with_end_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_70" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$tpname_adt1_1602", i32 0, i32 0), i32 4 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_74" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote1_1603", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_87" }] -@"$tname_RemoteReadsADTTest_1605" = unnamed_addr constant [18 x i8] c"RemoteReadsADTTest" -@"$tpname__amount_1606" = unnamed_addr constant [7 x i8] c"_amount" -@"$tpname__origin_1607" = unnamed_addr constant [7 x i8] c"_origin" -@"$tpname__sender_1608" = unnamed_addr constant [7 x i8] c"_sender" -@"$tparams_OutgoingMsgTest_1609" = unnamed_addr constant [3 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1606", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1607", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1608", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] -@"$tname_OutgoingMsgTest_1610" = unnamed_addr constant [15 x i8] c"OutgoingMsgTest" -@"$tpname__amount_1611" = unnamed_addr constant [7 x i8] c"_amount" -@"$tpname__origin_1612" = unnamed_addr constant [7 x i8] c"_origin" -@"$tpname__sender_1613" = unnamed_addr constant [7 x i8] c"_sender" -@"$tparams_ExceptionTest_1614" = unnamed_addr constant [3 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1611", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1612", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1613", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] -@"$tname_ExceptionTest_1615" = unnamed_addr constant [13 x i8] c"ExceptionTest" -@"$tpname__amount_1616" = unnamed_addr constant [7 x i8] c"_amount" -@"$tpname__origin_1617" = unnamed_addr constant [7 x i8] c"_origin" -@"$tpname__sender_1618" = unnamed_addr constant [7 x i8] c"_sender" -@"$tparams_AssignTest_1619" = unnamed_addr constant [3 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1616", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1617", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1618", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] -@"$tname_AssignTest_1620" = unnamed_addr constant [10 x i8] c"AssignTest" -@"$tpname__amount_1621" = unnamed_addr constant [7 x i8] c"_amount" -@"$tpname__origin_1622" = unnamed_addr constant [7 x i8] c"_origin" -@"$tpname__sender_1623" = unnamed_addr constant [7 x i8] c"_sender" -@"$tparams_SenderBalanceTest_1624" = unnamed_addr constant [3 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1621", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1622", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1623", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] -@"$tname_SenderBalanceTest_1625" = unnamed_addr constant [17 x i8] c"SenderBalanceTest" -@_transition_parameters = constant [6 x %"$TransDescr_1580"] [%"$TransDescr_1580" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$tname_RemoteReadsTest_1594", i32 0, i32 0), i32 15 }, i32 6, %"$ParamDescr_1579"* getelementptr inbounds ([6 x %"$ParamDescr_1579"], [6 x %"$ParamDescr_1579"]* @"$tparams_RemoteReadsTest_1593", i32 0, i32 0) }, %"$TransDescr_1580" { %ParamDescrString { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$tname_RemoteReadsADTTest_1605", i32 0, i32 0), i32 18 }, i32 9, %"$ParamDescr_1579"* getelementptr inbounds ([9 x %"$ParamDescr_1579"], [9 x %"$ParamDescr_1579"]* @"$tparams_RemoteReadsADTTest_1604", i32 0, i32 0) }, %"$TransDescr_1580" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$tname_OutgoingMsgTest_1610", i32 0, i32 0), i32 15 }, i32 3, %"$ParamDescr_1579"* getelementptr inbounds ([3 x %"$ParamDescr_1579"], [3 x %"$ParamDescr_1579"]* @"$tparams_OutgoingMsgTest_1609", i32 0, i32 0) }, %"$TransDescr_1580" { %ParamDescrString { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$tname_ExceptionTest_1615", i32 0, i32 0), i32 13 }, i32 3, %"$ParamDescr_1579"* getelementptr inbounds ([3 x %"$ParamDescr_1579"], [3 x %"$ParamDescr_1579"]* @"$tparams_ExceptionTest_1614", i32 0, i32 0) }, %"$TransDescr_1580" { %ParamDescrString { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$tname_AssignTest_1620", i32 0, i32 0), i32 10 }, i32 3, %"$ParamDescr_1579"* getelementptr inbounds ([3 x %"$ParamDescr_1579"], [3 x %"$ParamDescr_1579"]* @"$tparams_AssignTest_1619", i32 0, i32 0) }, %"$TransDescr_1580" { %ParamDescrString { i8* getelementptr inbounds ([17 x i8], [17 x i8]* @"$tname_SenderBalanceTest_1625", i32 0, i32 0), i32 17 }, i32 3, %"$ParamDescr_1579"* getelementptr inbounds ([3 x %"$ParamDescr_1579"], [3 x %"$ParamDescr_1579"]* @"$tparams_SenderBalanceTest_1624", i32 0, i32 0) }] -@_transition_parameters_length = constant i32 6 +@"$tpname__amount_1475" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_1476" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_1477" = unnamed_addr constant [7 x i8] c"_sender" +@"$tpname_remote1_1478" = unnamed_addr constant [7 x i8] c"remote1" +@"$tpname_remote2_1479" = unnamed_addr constant [7 x i8] c"remote2" +@"$tpname_remote3_1480" = unnamed_addr constant [7 x i8] c"remote3" +@"$tparams_RemoteReadsTest_1481" = unnamed_addr constant [6 x %"$ParamDescr_1467"] [%"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1475", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1476", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1477", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote1_1478", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote2_1479", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_98" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote3_1480", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_90" }] +@"$tname_RemoteReadsTest_1482" = unnamed_addr constant [15 x i8] c"RemoteReadsTest" +@"$tpname__amount_1483" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_1484" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_1485" = unnamed_addr constant [7 x i8] c"_sender" +@"$tpname_list1_1486" = unnamed_addr constant [5 x i8] c"list1" +@"$tpname_list2_1487" = unnamed_addr constant [5 x i8] c"list2" +@"$tpname_list3_1488" = unnamed_addr constant [5 x i8] c"list3" +@"$tpname_pair1_1489" = unnamed_addr constant [5 x i8] c"pair1" +@"$tpname_adt1_1490" = unnamed_addr constant [4 x i8] c"adt1" +@"$tpname_remote1_1491" = unnamed_addr constant [7 x i8] c"remote1" +@"$tparams_RemoteReadsADTTest_1492" = unnamed_addr constant [9 x %"$ParamDescr_1467"] [%"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1483", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1484", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1485", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_list1_1486", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_end_67" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_list2_1487", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_contract_field_f_:_Uint128_end_66" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_list3_1488", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_contract_field_g_:_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_end_65" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_pair1_1489", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_ByStr20_with_end_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_70" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$tpname_adt1_1490", i32 0, i32 0), i32 4 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_74" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote1_1491", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_87" }] +@"$tname_RemoteReadsADTTest_1493" = unnamed_addr constant [18 x i8] c"RemoteReadsADTTest" +@"$tpname__amount_1494" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_1495" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_1496" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_OutgoingMsgTest_1497" = unnamed_addr constant [3 x %"$ParamDescr_1467"] [%"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1494", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1495", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1496", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] +@"$tname_OutgoingMsgTest_1498" = unnamed_addr constant [15 x i8] c"OutgoingMsgTest" +@"$tpname__amount_1499" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_1500" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_1501" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_ExceptionTest_1502" = unnamed_addr constant [3 x %"$ParamDescr_1467"] [%"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1499", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1500", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1501", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] +@"$tname_ExceptionTest_1503" = unnamed_addr constant [13 x i8] c"ExceptionTest" +@"$tpname__amount_1504" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_1505" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_1506" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_AssignTest_1507" = unnamed_addr constant [3 x %"$ParamDescr_1467"] [%"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1504", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1505", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1506", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] +@"$tname_AssignTest_1508" = unnamed_addr constant [10 x i8] c"AssignTest" +@_transition_parameters = constant [5 x %"$TransDescr_1468"] [%"$TransDescr_1468" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$tname_RemoteReadsTest_1482", i32 0, i32 0), i32 15 }, i32 6, %"$ParamDescr_1467"* getelementptr inbounds ([6 x %"$ParamDescr_1467"], [6 x %"$ParamDescr_1467"]* @"$tparams_RemoteReadsTest_1481", i32 0, i32 0) }, %"$TransDescr_1468" { %ParamDescrString { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$tname_RemoteReadsADTTest_1493", i32 0, i32 0), i32 18 }, i32 9, %"$ParamDescr_1467"* getelementptr inbounds ([9 x %"$ParamDescr_1467"], [9 x %"$ParamDescr_1467"]* @"$tparams_RemoteReadsADTTest_1492", i32 0, i32 0) }, %"$TransDescr_1468" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$tname_OutgoingMsgTest_1498", i32 0, i32 0), i32 15 }, i32 3, %"$ParamDescr_1467"* getelementptr inbounds ([3 x %"$ParamDescr_1467"], [3 x %"$ParamDescr_1467"]* @"$tparams_OutgoingMsgTest_1497", i32 0, i32 0) }, %"$TransDescr_1468" { %ParamDescrString { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$tname_ExceptionTest_1503", i32 0, i32 0), i32 13 }, i32 3, %"$ParamDescr_1467"* getelementptr inbounds ([3 x %"$ParamDescr_1467"], [3 x %"$ParamDescr_1467"]* @"$tparams_ExceptionTest_1502", i32 0, i32 0) }, %"$TransDescr_1468" { %ParamDescrString { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$tname_AssignTest_1508", i32 0, i32 0), i32 10 }, i32 3, %"$ParamDescr_1467"* getelementptr inbounds ([3 x %"$ParamDescr_1467"], [3 x %"$ParamDescr_1467"]* @"$tparams_AssignTest_1507", i32 0, i32 0) }] +@_transition_parameters_length = constant i32 5 define void @_init_libs() !dbg !4 { entry: @@ -2566,195 +2555,6 @@ entry: ret void } -define internal void @"$SenderBalanceTest_1467"(%Uint128 %_amount, [20 x i8]* %"$_origin_1468", [20 x i8]* %"$_sender_1469") !dbg !106 { -entry: - %_origin = load [20 x i8], [20 x i8]* %"$_origin_1468", align 1 - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1469", align 1 - %pre = alloca %Uint128, align 8 - %"$execptr_load_1471" = load i8*, i8** @_execptr, align 8 - %"$pre__sender_1472" = alloca [20 x i8], align 1 - store [20 x i8] %_sender, [20 x i8]* %"$pre__sender_1472", align 1 - %"$pre_call_1473" = call i8* @_fetch_remote_field(i8* %"$execptr_load_1471", [20 x i8]* %"$pre__sender_1472", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_1470", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i32 0, i8* null, i32 1), !dbg !107 - %"$pre_1474" = bitcast i8* %"$pre_call_1473" to %Uint128* - %"$pre_1475" = load %Uint128, %Uint128* %"$pre_1474", align 8 - store %Uint128 %"$pre_1475", %Uint128* %pre, align 8 - %"$_literal_cost_pre_1476" = alloca %Uint128, align 8 - %"$pre_1477" = load %Uint128, %Uint128* %pre, align 8 - store %Uint128 %"$pre_1477", %Uint128* %"$_literal_cost_pre_1476", align 8 - %"$$_literal_cost_pre_1476_1478" = bitcast %Uint128* %"$_literal_cost_pre_1476" to i8* - %"$_literal_cost_call_1479" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i8* %"$$_literal_cost_pre_1476_1478") - %"$gasadd_1480" = add i64 %"$_literal_cost_call_1479", 0 - %"$gasrem_1481" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1482" = icmp ugt i64 %"$gasadd_1480", %"$gasrem_1481" - br i1 %"$gascmp_1482", label %"$out_of_gas_1483", label %"$have_gas_1484" - -"$out_of_gas_1483": ; preds = %entry - call void @_out_of_gas() - br label %"$have_gas_1484" - -"$have_gas_1484": ; preds = %"$out_of_gas_1483", %entry - %"$consume_1485" = sub i64 %"$gasrem_1481", %"$gasadd_1480" - store i64 %"$consume_1485", i64* @_gasrem, align 8 - %"$_literal_cost_pre_1486" = alloca %Uint128, align 8 - %"$pre_1487" = load %Uint128, %Uint128* %pre, align 8 - store %Uint128 %"$pre_1487", %Uint128* %"$_literal_cost_pre_1486", align 8 - %"$$_literal_cost_pre_1486_1488" = bitcast %Uint128* %"$_literal_cost_pre_1486" to i8* - %"$_literal_cost_call_1489" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i8* %"$$_literal_cost_pre_1486_1488") - %"$gasrem_1490" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1491" = icmp ugt i64 %"$_literal_cost_call_1489", %"$gasrem_1490" - br i1 %"$gascmp_1491", label %"$out_of_gas_1492", label %"$have_gas_1493" - -"$out_of_gas_1492": ; preds = %"$have_gas_1484" - call void @_out_of_gas() - br label %"$have_gas_1493" - -"$have_gas_1493": ; preds = %"$out_of_gas_1492", %"$have_gas_1484" - %"$consume_1494" = sub i64 %"$gasrem_1490", %"$_literal_cost_call_1489" - store i64 %"$consume_1494", i64* @_gasrem, align 8 - %"$execptr_load_1495" = load i8*, i8** @_execptr, align 8 - %"$pre_1497" = load %Uint128, %Uint128* %pre, align 8 - %"$update_value_1498" = alloca %Uint128, align 8 - store %Uint128 %"$pre_1497", %Uint128* %"$update_value_1498", align 8 - %"$update_value_1499" = bitcast %Uint128* %"$update_value_1498" to i8* - call void @_update_field(i8* %"$execptr_load_1495", i8* getelementptr inbounds ([19 x i8], [19 x i8]* @"$sender_balance_pre_1496", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i32 0, i8* null, i8* %"$update_value_1499"), !dbg !108 - %"$gasrem_1500" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1501" = icmp ugt i64 1, %"$gasrem_1500" - br i1 %"$gascmp_1501", label %"$out_of_gas_1502", label %"$have_gas_1503" - -"$out_of_gas_1502": ; preds = %"$have_gas_1493" - call void @_out_of_gas() - br label %"$have_gas_1503" - -"$have_gas_1503": ; preds = %"$out_of_gas_1502", %"$have_gas_1493" - %"$consume_1504" = sub i64 %"$gasrem_1500", 1 - store i64 %"$consume_1504", i64* @_gasrem, align 8 - %"$execptr_load_1505" = load i8*, i8** @_execptr, align 8 - call void @_accept(i8* %"$execptr_load_1505"), !dbg !109 - %mid = alloca %Uint128, align 8 - %"$execptr_load_1507" = load i8*, i8** @_execptr, align 8 - %"$mid__sender_1508" = alloca [20 x i8], align 1 - store [20 x i8] %_sender, [20 x i8]* %"$mid__sender_1508", align 1 - %"$mid_call_1509" = call i8* @_fetch_remote_field(i8* %"$execptr_load_1507", [20 x i8]* %"$mid__sender_1508", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_1506", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i32 0, i8* null, i32 1), !dbg !110 - %"$mid_1510" = bitcast i8* %"$mid_call_1509" to %Uint128* - %"$mid_1511" = load %Uint128, %Uint128* %"$mid_1510", align 8 - store %Uint128 %"$mid_1511", %Uint128* %mid, align 8 - %"$_literal_cost_mid_1512" = alloca %Uint128, align 8 - %"$mid_1513" = load %Uint128, %Uint128* %mid, align 8 - store %Uint128 %"$mid_1513", %Uint128* %"$_literal_cost_mid_1512", align 8 - %"$$_literal_cost_mid_1512_1514" = bitcast %Uint128* %"$_literal_cost_mid_1512" to i8* - %"$_literal_cost_call_1515" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i8* %"$$_literal_cost_mid_1512_1514") - %"$gasadd_1516" = add i64 %"$_literal_cost_call_1515", 0 - %"$gasrem_1517" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1518" = icmp ugt i64 %"$gasadd_1516", %"$gasrem_1517" - br i1 %"$gascmp_1518", label %"$out_of_gas_1519", label %"$have_gas_1520" - -"$out_of_gas_1519": ; preds = %"$have_gas_1503" - call void @_out_of_gas() - br label %"$have_gas_1520" - -"$have_gas_1520": ; preds = %"$out_of_gas_1519", %"$have_gas_1503" - %"$consume_1521" = sub i64 %"$gasrem_1517", %"$gasadd_1516" - store i64 %"$consume_1521", i64* @_gasrem, align 8 - %"$_literal_cost_mid_1522" = alloca %Uint128, align 8 - %"$mid_1523" = load %Uint128, %Uint128* %mid, align 8 - store %Uint128 %"$mid_1523", %Uint128* %"$_literal_cost_mid_1522", align 8 - %"$$_literal_cost_mid_1522_1524" = bitcast %Uint128* %"$_literal_cost_mid_1522" to i8* - %"$_literal_cost_call_1525" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i8* %"$$_literal_cost_mid_1522_1524") - %"$gasrem_1526" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1527" = icmp ugt i64 %"$_literal_cost_call_1525", %"$gasrem_1526" - br i1 %"$gascmp_1527", label %"$out_of_gas_1528", label %"$have_gas_1529" - -"$out_of_gas_1528": ; preds = %"$have_gas_1520" - call void @_out_of_gas() - br label %"$have_gas_1529" - -"$have_gas_1529": ; preds = %"$out_of_gas_1528", %"$have_gas_1520" - %"$consume_1530" = sub i64 %"$gasrem_1526", %"$_literal_cost_call_1525" - store i64 %"$consume_1530", i64* @_gasrem, align 8 - %"$execptr_load_1531" = load i8*, i8** @_execptr, align 8 - %"$mid_1533" = load %Uint128, %Uint128* %mid, align 8 - %"$update_value_1534" = alloca %Uint128, align 8 - store %Uint128 %"$mid_1533", %Uint128* %"$update_value_1534", align 8 - %"$update_value_1535" = bitcast %Uint128* %"$update_value_1534" to i8* - call void @_update_field(i8* %"$execptr_load_1531", i8* getelementptr inbounds ([19 x i8], [19 x i8]* @"$sender_balance_mid_1532", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i32 0, i8* null, i8* %"$update_value_1535"), !dbg !111 - %"$gasrem_1536" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1537" = icmp ugt i64 1, %"$gasrem_1536" - br i1 %"$gascmp_1537", label %"$out_of_gas_1538", label %"$have_gas_1539" - -"$out_of_gas_1538": ; preds = %"$have_gas_1529" - call void @_out_of_gas() - br label %"$have_gas_1539" - -"$have_gas_1539": ; preds = %"$out_of_gas_1538", %"$have_gas_1529" - %"$consume_1540" = sub i64 %"$gasrem_1536", 1 - store i64 %"$consume_1540", i64* @_gasrem, align 8 - %"$execptr_load_1541" = load i8*, i8** @_execptr, align 8 - call void @_accept(i8* %"$execptr_load_1541"), !dbg !112 - %post = alloca %Uint128, align 8 - %"$execptr_load_1543" = load i8*, i8** @_execptr, align 8 - %"$post__sender_1544" = alloca [20 x i8], align 1 - store [20 x i8] %_sender, [20 x i8]* %"$post__sender_1544", align 1 - %"$post_call_1545" = call i8* @_fetch_remote_field(i8* %"$execptr_load_1543", [20 x i8]* %"$post__sender_1544", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_1542", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i32 0, i8* null, i32 1), !dbg !113 - %"$post_1546" = bitcast i8* %"$post_call_1545" to %Uint128* - %"$post_1547" = load %Uint128, %Uint128* %"$post_1546", align 8 - store %Uint128 %"$post_1547", %Uint128* %post, align 8 - %"$_literal_cost_post_1548" = alloca %Uint128, align 8 - %"$post_1549" = load %Uint128, %Uint128* %post, align 8 - store %Uint128 %"$post_1549", %Uint128* %"$_literal_cost_post_1548", align 8 - %"$$_literal_cost_post_1548_1550" = bitcast %Uint128* %"$_literal_cost_post_1548" to i8* - %"$_literal_cost_call_1551" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i8* %"$$_literal_cost_post_1548_1550") - %"$gasadd_1552" = add i64 %"$_literal_cost_call_1551", 0 - %"$gasrem_1553" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1554" = icmp ugt i64 %"$gasadd_1552", %"$gasrem_1553" - br i1 %"$gascmp_1554", label %"$out_of_gas_1555", label %"$have_gas_1556" - -"$out_of_gas_1555": ; preds = %"$have_gas_1539" - call void @_out_of_gas() - br label %"$have_gas_1556" - -"$have_gas_1556": ; preds = %"$out_of_gas_1555", %"$have_gas_1539" - %"$consume_1557" = sub i64 %"$gasrem_1553", %"$gasadd_1552" - store i64 %"$consume_1557", i64* @_gasrem, align 8 - %"$_literal_cost_post_1558" = alloca %Uint128, align 8 - %"$post_1559" = load %Uint128, %Uint128* %post, align 8 - store %Uint128 %"$post_1559", %Uint128* %"$_literal_cost_post_1558", align 8 - %"$$_literal_cost_post_1558_1560" = bitcast %Uint128* %"$_literal_cost_post_1558" to i8* - %"$_literal_cost_call_1561" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i8* %"$$_literal_cost_post_1558_1560") - %"$gasrem_1562" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1563" = icmp ugt i64 %"$_literal_cost_call_1561", %"$gasrem_1562" - br i1 %"$gascmp_1563", label %"$out_of_gas_1564", label %"$have_gas_1565" - -"$out_of_gas_1564": ; preds = %"$have_gas_1556" - call void @_out_of_gas() - br label %"$have_gas_1565" - -"$have_gas_1565": ; preds = %"$out_of_gas_1564", %"$have_gas_1556" - %"$consume_1566" = sub i64 %"$gasrem_1562", %"$_literal_cost_call_1561" - store i64 %"$consume_1566", i64* @_gasrem, align 8 - %"$execptr_load_1567" = load i8*, i8** @_execptr, align 8 - %"$post_1569" = load %Uint128, %Uint128* %post, align 8 - %"$update_value_1570" = alloca %Uint128, align 8 - store %Uint128 %"$post_1569", %Uint128* %"$update_value_1570", align 8 - %"$update_value_1571" = bitcast %Uint128* %"$update_value_1570" to i8* - call void @_update_field(i8* %"$execptr_load_1567", i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$sender_balance_post_1568", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i32 0, i8* null, i8* %"$update_value_1571"), !dbg !114 - ret void -} - -declare void @_accept(i8*) - -define void @SenderBalanceTest(i8* %0) !dbg !115 { -entry: - %"$_amount_1573" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1574" = bitcast i8* %"$_amount_1573" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1574", align 8 - %"$_origin_1575" = getelementptr i8, i8* %0, i32 16 - %"$_origin_1576" = bitcast i8* %"$_origin_1575" to [20 x i8]* - %"$_sender_1577" = getelementptr i8, i8* %0, i32 36 - %"$_sender_1578" = bitcast i8* %"$_sender_1577" to [20 x i8]* - call void @"$SenderBalanceTest_1467"(%Uint128 %_amount, [20 x i8]* %"$_origin_1576", [20 x i8]* %"$_sender_1578"), !dbg !116 - ret void -} - !llvm.module.flags = !{!0} !llvm.dbg.cu = !{!1} @@ -2864,14 +2664,3 @@ entry: !103 = !DILocation(line: 161, column: 3, scope: !89) !104 = distinct !DISubprogram(name: "AssignTest", linkageName: "AssignTest", scope: !2, file: !2, line: 147, type: !6, scopeLine: 147, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) !105 = !DILocation(line: 147, column: 12, scope: !104) -!106 = distinct !DISubprogram(name: "SenderBalanceTest", linkageName: "SenderBalanceTest", scope: !2, file: !2, line: 165, type: !6, scopeLine: 165, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) -!107 = !DILocation(line: 166, column: 3, scope: !106) -!108 = !DILocation(line: 167, column: 3, scope: !106) -!109 = !DILocation(line: 169, column: 3, scope: !106) -!110 = !DILocation(line: 170, column: 3, scope: !106) -!111 = !DILocation(line: 171, column: 3, scope: !106) -!112 = !DILocation(line: 173, column: 3, scope: !106) -!113 = !DILocation(line: 174, column: 3, scope: !106) -!114 = !DILocation(line: 175, column: 3, scope: !106) -!115 = distinct !DISubprogram(name: "SenderBalanceTest", linkageName: "SenderBalanceTest", scope: !2, file: !2, line: 165, type: !6, scopeLine: 165, spFlags: DISPFlagLocalToUnit | DISPFlagDefinition, unit: !1, retainedNodes: !3) -!116 = !DILocation(line: 165, column: 12, scope: !115) diff --git a/tests/codegen/contr/gold/accounting_tests.scilla.gold b/tests/codegen/contr/gold/accounting_tests.scilla.gold new file mode 100644 index 00000000..aa539a56 --- /dev/null +++ b/tests/codegen/contr/gold/accounting_tests.scilla.gold @@ -0,0 +1,7829 @@ + + +; gas_remaining: 4001332 +; ModuleID = 'AccountingTests' +source_filename = "AccountingTests" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +%"$TyDescrTy_PrimTyp_87" = type { i32, i32 } +%_TyDescrTy_Typ = type { i32, i8* } +%"$TyDescrTy_ADTTyp_119" = type { %TyDescrString, i32, i32, i32, %"$TyDescrTy_ADTTyp_Specl_118"** } +%TyDescrString = type { i8*, i32 } +%"$TyDescrTy_ADTTyp_Specl_118" = type { %_TyDescrTy_Typ**, %"$TyDescrTy_ADTTyp_Constr_120"**, %"$TyDescrTy_ADTTyp_119"* } +%"$TyDescrTy_ADTTyp_Constr_120" = type { %TyDescrString, i32, %_TyDescrTy_Typ** } +%"$TyDescr_AddrTyp_127" = type { i32, %"$TyDescr_AddrFieldTyp_126"* } +%"$TyDescr_AddrFieldTyp_126" = type { %TyDescrString, %_TyDescrTy_Typ* } +%TName_List_Message = type { i8, %CName_Cons_Message*, %CName_Nil_Message* } +%CName_Cons_Message = type <{ i8, i8*, %TName_List_Message* }> +%CName_Nil_Message = type <{ i8 }> +%TName_Option_String = type { i8, %CName_Some_String*, %CName_None_String* } +%CName_Some_String = type <{ i8, %String }> +%String = type { i8*, i32 } +%CName_None_String = type <{ i8 }> +%TName_List_String = type { i8, %CName_Cons_String*, %CName_Nil_String* } +%CName_Cons_String = type <{ i8, %String, %TName_List_String* }> +%CName_Nil_String = type <{ i8 }> +%TName_Bool = type { i8, %CName_True*, %CName_False* } +%CName_True = type <{ i8 }> +%CName_False = type <{ i8 }> +%Uint32 = type { i32 } +%"$ParamDescr_4259" = type { %ParamDescrString, %_TyDescrTy_Typ* } +%ParamDescrString = type { i8*, i32 } +%"$TransDescr_4260" = type { %ParamDescrString, i32, %"$ParamDescr_4259"* } +%"$$fundef_79_env_179" = type { %String } +%"$$fundef_77_env_180" = type {} +%"$$fundef_81_env_181" = type {} +%"$$fundef_71_env_182" = type { { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, %TName_List_String*, %String, %TName_List_String* } +%"$$fundef_69_env_183" = type { { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, %TName_List_String*, %TName_List_String* } +%"$$fundef_67_env_184" = type { { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, %TName_List_String* } +%"$$fundef_65_env_185" = type { { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, %TName_List_String*, { i8*, i8* }* } +%"$$fundef_63_env_186" = type { { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { i8*, i8* }* } +%"$$fundef_61_env_187" = type { { i8*, i8* }* } +%"$$fundef_59_env_188" = type { { i8*, i8* }* } +%"$$fundef_75_env_189" = type {} +%"$$fundef_73_env_190" = type {} +%"$$fundef_57_env_191" = type { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, %TName_List_String* } +%"$$fundef_55_env_192" = type { { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, %TName_List_String* } +%"$$fundef_53_env_193" = type { { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } } +%"$$fundef_51_env_194" = type {} +%"$$fundef_49_env_195" = type {} +%"$$fundef_47_env_196" = type {} +%Uint128 = type { i128 } + +@_execptr = global i8* null +@_gasrem = global i64 0 +@"$TyDescr_Int32_Prim_88" = global %"$TyDescrTy_PrimTyp_87" zeroinitializer +@"$TyDescr_Int32_89" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Int32_Prim_88" to i8*) } +@"$TyDescr_Uint32_Prim_90" = global %"$TyDescrTy_PrimTyp_87" { i32 1, i32 0 } +@"$TyDescr_Uint32_91" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Uint32_Prim_90" to i8*) } +@"$TyDescr_Int64_Prim_92" = global %"$TyDescrTy_PrimTyp_87" { i32 0, i32 1 } +@"$TyDescr_Int64_93" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Int64_Prim_92" to i8*) } +@"$TyDescr_Uint64_Prim_94" = global %"$TyDescrTy_PrimTyp_87" { i32 1, i32 1 } +@"$TyDescr_Uint64_95" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Uint64_Prim_94" to i8*) } +@"$TyDescr_Int128_Prim_96" = global %"$TyDescrTy_PrimTyp_87" { i32 0, i32 2 } +@"$TyDescr_Int128_97" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Int128_Prim_96" to i8*) } +@"$TyDescr_Uint128_Prim_98" = global %"$TyDescrTy_PrimTyp_87" { i32 1, i32 2 } +@"$TyDescr_Uint128_99" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Uint128_Prim_98" to i8*) } +@"$TyDescr_Int256_Prim_100" = global %"$TyDescrTy_PrimTyp_87" { i32 0, i32 3 } +@"$TyDescr_Int256_101" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Int256_Prim_100" to i8*) } +@"$TyDescr_Uint256_Prim_102" = global %"$TyDescrTy_PrimTyp_87" { i32 1, i32 3 } +@"$TyDescr_Uint256_103" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Uint256_Prim_102" to i8*) } +@"$TyDescr_String_Prim_104" = global %"$TyDescrTy_PrimTyp_87" { i32 2, i32 0 } +@"$TyDescr_String_105" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_String_Prim_104" to i8*) } +@"$TyDescr_Bnum_Prim_106" = global %"$TyDescrTy_PrimTyp_87" { i32 3, i32 0 } +@"$TyDescr_Bnum_107" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Bnum_Prim_106" to i8*) } +@"$TyDescr_Message_Prim_108" = global %"$TyDescrTy_PrimTyp_87" { i32 4, i32 0 } +@"$TyDescr_Message_109" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Message_Prim_108" to i8*) } +@"$TyDescr_Event_Prim_110" = global %"$TyDescrTy_PrimTyp_87" { i32 5, i32 0 } +@"$TyDescr_Event_111" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Event_Prim_110" to i8*) } +@"$TyDescr_Exception_Prim_112" = global %"$TyDescrTy_PrimTyp_87" { i32 6, i32 0 } +@"$TyDescr_Exception_113" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Exception_Prim_112" to i8*) } +@"$TyDescr_Bystr_Prim_114" = global %"$TyDescrTy_PrimTyp_87" { i32 7, i32 0 } +@"$TyDescr_Bystr_115" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Bystr_Prim_114" to i8*) } +@"$TyDescr_Bystr20_Prim_116" = global %"$TyDescrTy_PrimTyp_87" { i32 8, i32 20 } +@"$TyDescr_Bystr20_117" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_87"* @"$TyDescr_Bystr20_Prim_116" to i8*) } +@"$TyDescr_ADT_List_Message_121" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_List_Message_ADTTyp_Specl_139" to i8*) } +@"$TyDescr_ADT_List_String_122" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_List_String_ADTTyp_Specl_148" to i8*) } +@"$TyDescr_ADT_Bool_123" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_Bool_ADTTyp_Specl_160" to i8*) } +@"$TyDescr_ADT_Option_String_124" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_Option_String_ADTTyp_Specl_172" to i8*) } +@"$TyDescr_Addr_128" = unnamed_addr constant %_TyDescrTy_Typ { i32 3, i8* bitcast (%"$TyDescr_AddrTyp_127"* @"$TyDescr_AddrFields_175" to i8*) } +@"$TyDescr_Addr_129" = unnamed_addr constant %_TyDescrTy_Typ { i32 3, i8* bitcast (%"$TyDescr_AddrTyp_127"* @"$TyDescr_AddrFields_178" to i8*) } +@"$TyDescr_List_ADTTyp_130" = unnamed_addr constant %"$TyDescrTy_ADTTyp_119" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_List_150", i32 0, i32 0), i32 4 }, i32 1, i32 2, i32 2, %"$TyDescrTy_ADTTyp_Specl_118"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Specl_118"*], [2 x %"$TyDescrTy_ADTTyp_Specl_118"*]* @"$TyDescr_List_ADTTyp_m_specls_149", i32 0, i32 0) } +@"$TyDescr_List_Cons_Message_Constr_m_args_131" = unnamed_addr constant [2 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Message_109", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121"] +@"$TyDescr_ADT_Cons_132" = unnamed_addr constant [4 x i8] c"Cons" +@"$TyDescr_List_Cons_Message_ADTTyp_Constr_133" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Cons_132", i32 0, i32 0), i32 4 }, i32 2, %_TyDescrTy_Typ** getelementptr inbounds ([2 x %_TyDescrTy_Typ*], [2 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Cons_Message_Constr_m_args_131", i32 0, i32 0) } +@"$TyDescr_List_Nil_Message_Constr_m_args_134" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_Nil_135" = unnamed_addr constant [3 x i8] c"Nil" +@"$TyDescr_List_Nil_Message_ADTTyp_Constr_136" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$TyDescr_ADT_Nil_135", i32 0, i32 0), i32 3 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Nil_Message_Constr_m_args_134", i32 0, i32 0) } +@"$TyDescr_List_Message_ADTTyp_Specl_m_constrs_137" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_120"*] [%"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_List_Cons_Message_ADTTyp_Constr_133", %"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_List_Nil_Message_ADTTyp_Constr_136"] +@"$TyDescr_List_Message_ADTTyp_Specl_m_TArgs_138" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Message_109"] +@"$TyDescr_List_Message_ADTTyp_Specl_139" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_118" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Message_ADTTyp_Specl_m_TArgs_138", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_120"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_120"*], [2 x %"$TyDescrTy_ADTTyp_Constr_120"*]* @"$TyDescr_List_Message_ADTTyp_Specl_m_constrs_137", i32 0, i32 0), %"$TyDescrTy_ADTTyp_119"* @"$TyDescr_List_ADTTyp_130" } +@"$TyDescr_List_Cons_String_Constr_m_args_140" = unnamed_addr constant [2 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122"] +@"$TyDescr_ADT_Cons_141" = unnamed_addr constant [4 x i8] c"Cons" +@"$TyDescr_List_Cons_String_ADTTyp_Constr_142" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Cons_141", i32 0, i32 0), i32 4 }, i32 2, %_TyDescrTy_Typ** getelementptr inbounds ([2 x %_TyDescrTy_Typ*], [2 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Cons_String_Constr_m_args_140", i32 0, i32 0) } +@"$TyDescr_List_Nil_String_Constr_m_args_143" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_Nil_144" = unnamed_addr constant [3 x i8] c"Nil" +@"$TyDescr_List_Nil_String_ADTTyp_Constr_145" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$TyDescr_ADT_Nil_144", i32 0, i32 0), i32 3 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Nil_String_Constr_m_args_143", i32 0, i32 0) } +@"$TyDescr_List_String_ADTTyp_Specl_m_constrs_146" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_120"*] [%"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_List_Cons_String_ADTTyp_Constr_142", %"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_List_Nil_String_ADTTyp_Constr_145"] +@"$TyDescr_List_String_ADTTyp_Specl_m_TArgs_147" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_105"] +@"$TyDescr_List_String_ADTTyp_Specl_148" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_118" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_List_String_ADTTyp_Specl_m_TArgs_147", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_120"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_120"*], [2 x %"$TyDescrTy_ADTTyp_Constr_120"*]* @"$TyDescr_List_String_ADTTyp_Specl_m_constrs_146", i32 0, i32 0), %"$TyDescrTy_ADTTyp_119"* @"$TyDescr_List_ADTTyp_130" } +@"$TyDescr_List_ADTTyp_m_specls_149" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Specl_118"*] [%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_List_Message_ADTTyp_Specl_139", %"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_List_String_ADTTyp_Specl_148"] +@"$TyDescr_ADT_List_150" = unnamed_addr constant [4 x i8] c"List" +@"$TyDescr_Bool_ADTTyp_151" = unnamed_addr constant %"$TyDescrTy_ADTTyp_119" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Bool_162", i32 0, i32 0), i32 4 }, i32 0, i32 2, i32 1, %"$TyDescrTy_ADTTyp_Specl_118"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_118"*], [1 x %"$TyDescrTy_ADTTyp_Specl_118"*]* @"$TyDescr_Bool_ADTTyp_m_specls_161", i32 0, i32 0) } +@"$TyDescr_Bool_True_Constr_m_args_152" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_True_153" = unnamed_addr constant [4 x i8] c"True" +@"$TyDescr_Bool_True_ADTTyp_Constr_154" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_True_153", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_True_Constr_m_args_152", i32 0, i32 0) } +@"$TyDescr_Bool_False_Constr_m_args_155" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_False_156" = unnamed_addr constant [5 x i8] c"False" +@"$TyDescr_Bool_False_ADTTyp_Constr_157" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$TyDescr_ADT_False_156", i32 0, i32 0), i32 5 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_False_Constr_m_args_155", i32 0, i32 0) } +@"$TyDescr_Bool_ADTTyp_Specl_m_constrs_158" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_120"*] [%"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_Bool_True_ADTTyp_Constr_154", %"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_Bool_False_ADTTyp_Constr_157"] +@"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_159" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_Bool_ADTTyp_Specl_160" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_118" { %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_159", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_120"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_120"*], [2 x %"$TyDescrTy_ADTTyp_Constr_120"*]* @"$TyDescr_Bool_ADTTyp_Specl_m_constrs_158", i32 0, i32 0), %"$TyDescrTy_ADTTyp_119"* @"$TyDescr_Bool_ADTTyp_151" } +@"$TyDescr_Bool_ADTTyp_m_specls_161" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_118"*] [%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_Bool_ADTTyp_Specl_160"] +@"$TyDescr_ADT_Bool_162" = unnamed_addr constant [4 x i8] c"Bool" +@"$TyDescr_Option_ADTTyp_163" = unnamed_addr constant %"$TyDescrTy_ADTTyp_119" { %TyDescrString { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$TyDescr_ADT_Option_174", i32 0, i32 0), i32 6 }, i32 1, i32 2, i32 1, %"$TyDescrTy_ADTTyp_Specl_118"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_118"*], [1 x %"$TyDescrTy_ADTTyp_Specl_118"*]* @"$TyDescr_Option_ADTTyp_m_specls_173", i32 0, i32 0) } +@"$TyDescr_Option_Some_String_Constr_m_args_164" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_105"] +@"$TyDescr_ADT_Some_165" = unnamed_addr constant [4 x i8] c"Some" +@"$TyDescr_Option_Some_String_ADTTyp_Constr_166" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Some_165", i32 0, i32 0), i32 4 }, i32 1, %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_Some_String_Constr_m_args_164", i32 0, i32 0) } +@"$TyDescr_Option_None_String_Constr_m_args_167" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_None_168" = unnamed_addr constant [4 x i8] c"None" +@"$TyDescr_Option_None_String_ADTTyp_Constr_169" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_120" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_None_168", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_None_String_Constr_m_args_167", i32 0, i32 0) } +@"$TyDescr_Option_String_ADTTyp_Specl_m_constrs_170" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_120"*] [%"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_Option_Some_String_ADTTyp_Constr_166", %"$TyDescrTy_ADTTyp_Constr_120"* @"$TyDescr_Option_None_String_ADTTyp_Constr_169"] +@"$TyDescr_Option_String_ADTTyp_Specl_m_TArgs_171" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_105"] +@"$TyDescr_Option_String_ADTTyp_Specl_172" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_118" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_Option_String_ADTTyp_Specl_m_TArgs_171", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_120"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_120"*], [2 x %"$TyDescrTy_ADTTyp_Constr_120"*]* @"$TyDescr_Option_String_ADTTyp_Specl_m_constrs_170", i32 0, i32 0), %"$TyDescrTy_ADTTyp_119"* @"$TyDescr_Option_ADTTyp_163" } +@"$TyDescr_Option_ADTTyp_m_specls_173" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_118"*] [%"$TyDescrTy_ADTTyp_Specl_118"* @"$TyDescr_Option_String_ADTTyp_Specl_172"] +@"$TyDescr_ADT_Option_174" = unnamed_addr constant [6 x i8] c"Option" +@"$TyDescr_AddrFields_175" = unnamed_addr constant %"$TyDescr_AddrTyp_127" { i32 -1, %"$TyDescr_AddrFieldTyp_126"* null } +@"$TyDescr_AddrField_176" = unnamed_addr constant [14 x i8] c"stored_strings" +@"$TyDescr_AddrFields_177" = unnamed_addr constant [1 x %"$TyDescr_AddrFieldTyp_126"] [%"$TyDescr_AddrFieldTyp_126" { %TyDescrString { i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$TyDescr_AddrField_176", i32 0, i32 0), i32 14 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122" }] +@"$TyDescr_AddrFields_178" = unnamed_addr constant %"$TyDescr_AddrTyp_127" { i32 1, %"$TyDescr_AddrFieldTyp_126"* getelementptr inbounds ([1 x %"$TyDescr_AddrFieldTyp_126"], [1 x %"$TyDescr_AddrFieldTyp_126"]* @"$TyDescr_AddrFields_177", i32 0, i32 0) } +@list_foldk = global { i8*, i8* }* null +@ListUtils.list_head = global { i8*, i8* }* null +@ListUtils.list_eq = global { i8*, i8* }* null +@accounting_tests.one_msg = global { %TName_List_Message* (i8*, i8*)*, i8* } zeroinitializer +@accounting_tests.list_head_string = global { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } zeroinitializer +@accounting_tests.list_eq_string = global { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } zeroinitializer +@_cparam__scilla_version = global %Uint32 zeroinitializer +@_cparam__this_address = global [20 x i8] zeroinitializer +@_cparam__creation_block = global i8* null +@_cparam_support_contract = global [20 x i8] zeroinitializer +@"$stringlit_816" = unnamed_addr constant [5 x i8] c"Hello" +@"$test_string_1_818" = unnamed_addr constant [14 x i8] c"test_string_1\00" +@"$stringlit_827" = unnamed_addr constant [5 x i8] c"World" +@"$test_string_2_829" = unnamed_addr constant [14 x i8] c"test_string_2\00" +@"$outgoing_amount_839" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$max_outgoing_msgs_849" = unnamed_addr constant [18 x i8] c"max_outgoing_msgs\00" +@"$stringlit_867" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_875" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_880" = unnamed_addr constant [5 x i8] c"Reset" +@"$stringlit_883" = unnamed_addr constant [7 x i8] c"_amount" +@"$stored_strings_933" = unnamed_addr constant [15 x i8] c"stored_strings\00" +@"$stringlit_991" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_996" = unnamed_addr constant [26 x i8] c"Support contract not reset" +@"$outgoing_amount_1010" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$max_outgoing_msgs_1025" = unnamed_addr constant [18 x i8] c"max_outgoing_msgs\00" +@"$_balance_1048" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_1098" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_1103" = unnamed_addr constant [30 x i8] c"Insufficient balance for tests" +@"$outgoing_amount_1120" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$stringlit_1146" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1154" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1159" = unnamed_addr constant [9 x i8] c"NonAccept" +@"$stringlit_1162" = unnamed_addr constant [7 x i8] c"_amount" +@"$test_string_1_1214" = unnamed_addr constant [14 x i8] c"test_string_1\00" +@"$stringlit_1240" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1248" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1253" = unnamed_addr constant [11 x i8] c"StoreString" +@"$stringlit_1256" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_1263" = unnamed_addr constant [1 x i8] c"s" +@"$test_string_2_1298" = unnamed_addr constant [14 x i8] c"test_string_2\00" +@"$stringlit_1324" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1332" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1337" = unnamed_addr constant [11 x i8] c"StoreString" +@"$stringlit_1340" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_1347" = unnamed_addr constant [1 x i8] c"s" +@"$stringlit_1393" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1401" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1406" = unnamed_addr constant [20 x i8] c"Finalize_Test_Send_1" +@"$stringlit_1409" = unnamed_addr constant [7 x i8] c"_amount" +@"$test_string_1_1453" = unnamed_addr constant [14 x i8] c"test_string_1\00" +@"$test_string_2_1468" = unnamed_addr constant [14 x i8] c"test_string_2\00" +@"$stored_strings_1530" = unnamed_addr constant [15 x i8] c"stored_strings\00" +@"$stringlit_1591" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_1596" = unnamed_addr constant [16 x i8] c"Test_Send failed" +@"$stringlit_1599" = unnamed_addr constant [7 x i8] c"test_no" +@"$stringlit_1606" = unnamed_addr constant [8 x i8] c"expected" +@"$stringlit_1614" = unnamed_addr constant [6 x i8] c"actual" +@"$test_string_1_1671" = unnamed_addr constant [14 x i8] c"test_string_1\00" +@"$stringlit_1697" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1705" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1710" = unnamed_addr constant [11 x i8] c"StoreString" +@"$stringlit_1713" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_1720" = unnamed_addr constant [1 x i8] c"s" +@"$test_string_2_1729" = unnamed_addr constant [14 x i8] c"test_string_2\00" +@"$stringlit_1755" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1763" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1768" = unnamed_addr constant [11 x i8] c"StoreString" +@"$stringlit_1771" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_1778" = unnamed_addr constant [1 x i8] c"s" +@"$stringlit_1841" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1849" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1854" = unnamed_addr constant [20 x i8] c"Finalize_Test_Send_2" +@"$stringlit_1857" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_1953" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_1961" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_1966" = unnamed_addr constant [18 x i8] c"Test_Send_3_Helper" +@"$stringlit_1969" = unnamed_addr constant [7 x i8] c"_amount" +@"$test_string_2_2003" = unnamed_addr constant [14 x i8] c"test_string_2\00" +@"$stringlit_2029" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2037" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2042" = unnamed_addr constant [11 x i8] c"StoreString" +@"$stringlit_2045" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_2052" = unnamed_addr constant [1 x i8] c"s" +@"$stringlit_2098" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2106" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2111" = unnamed_addr constant [20 x i8] c"Finalize_Test_Send_3" +@"$stringlit_2114" = unnamed_addr constant [7 x i8] c"_amount" +@"$test_string_1_2158" = unnamed_addr constant [14 x i8] c"test_string_1\00" +@"$stringlit_2184" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2192" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2197" = unnamed_addr constant [11 x i8] c"StoreString" +@"$stringlit_2200" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_2207" = unnamed_addr constant [1 x i8] c"s" +@"$_balance_2280" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_2329" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_2334" = unnamed_addr constant [18 x i8] c"Unexpected balance" +@"$stringlit_2337" = unnamed_addr constant [8 x i8] c"expected" +@"$stringlit_2344" = unnamed_addr constant [6 x i8] c"actual" +@"$_balance_2385" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_2436" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_2441" = unnamed_addr constant [54 x i8] c"Main contract read unexpected support contract balance" +@"$stringlit_2444" = unnamed_addr constant [8 x i8] c"expected" +@"$stringlit_2451" = unnamed_addr constant [6 x i8] c"actual" +@"$outgoing_amount_2499" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$_balance_2514" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_2540" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2548" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2553" = unnamed_addr constant [6 x i8] c"Accept" +@"$stringlit_2556" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_2618" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2626" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2631" = unnamed_addr constant [9 x i8] c"NonAccept" +@"$stringlit_2634" = unnamed_addr constant [7 x i8] c"_amount" +@"$outgoing_amount_2702" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$_balance_2717" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_2743" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2751" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2756" = unnamed_addr constant [6 x i8] c"Accept" +@"$stringlit_2759" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_2779" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2787" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2792" = unnamed_addr constant [9 x i8] c"NonAccept" +@"$stringlit_2795" = unnamed_addr constant [7 x i8] c"_amount" +@"$outgoing_amount_2888" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$_balance_2903" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_2929" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_2937" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_2942" = unnamed_addr constant [6 x i8] c"Accept" +@"$stringlit_2945" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_2999" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3007" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3012" = unnamed_addr constant [18 x i8] c"CheckSenderBalance" +@"$stringlit_3015" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3022" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$outgoing_amount_3074" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$_balance_3089" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_3115" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3123" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3128" = unnamed_addr constant [9 x i8] c"NonAccept" +@"$stringlit_3131" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3177" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3185" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3190" = unnamed_addr constant [18 x i8] c"CheckSenderBalance" +@"$stringlit_3193" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3200" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$outgoing_amount_3252" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$stringlit_3278" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3286" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3291" = unnamed_addr constant [21 x i8] c"AcceptAndCheckBalance" +@"$stringlit_3294" = unnamed_addr constant [7 x i8] c"_amount" +@"$_balance_3329" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_3365" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3373" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3378" = unnamed_addr constant [21 x i8] c"CheckRecipientBalance" +@"$stringlit_3381" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3388" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$outgoing_amount_3440" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$stringlit_3466" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3474" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3479" = unnamed_addr constant [9 x i8] c"NonAccept" +@"$stringlit_3482" = unnamed_addr constant [7 x i8] c"_amount" +@"$_balance_3517" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_3545" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3553" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3558" = unnamed_addr constant [21 x i8] c"CheckRecipientBalance" +@"$stringlit_3561" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3568" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$outgoing_amount_3620" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$stringlit_3646" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3654" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3659" = unnamed_addr constant [27 x i8] c"AcceptAndCheckSenderBalance" +@"$stringlit_3662" = unnamed_addr constant [7 x i8] c"_amount" +@"$outgoing_amount_3714" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$stringlit_3740" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3748" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3753" = unnamed_addr constant [26 x i8] c"AcceptTwiceAndCheckBalance" +@"$stringlit_3756" = unnamed_addr constant [7 x i8] c"_amount" +@"$outgoing_amount_3801" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$_balance_3816" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_3842" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3850" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3855" = unnamed_addr constant [26 x i8] c"AcceptTwiceAndCheckBalance" +@"$stringlit_3858" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3912" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_3920" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_3925" = unnamed_addr constant [18 x i8] c"CheckSenderBalance" +@"$stringlit_3928" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_3935" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$outgoing_amount_3987" = unnamed_addr constant [16 x i8] c"outgoing_amount\00" +@"$stringlit_4013" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_4021" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_4026" = unnamed_addr constant [26 x i8] c"AcceptTwiceAndCheckBalance" +@"$stringlit_4029" = unnamed_addr constant [7 x i8] c"_amount" +@"$_balance_4064" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_4100" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_4108" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_4113" = unnamed_addr constant [21 x i8] c"CheckRecipientBalance" +@"$stringlit_4116" = unnamed_addr constant [7 x i8] c"_amount" +@"$stringlit_4123" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$_balance_4175" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_4201" = unnamed_addr constant [10 x i8] c"_recipient" +@"$stringlit_4209" = unnamed_addr constant [4 x i8] c"_tag" +@"$stringlit_4214" = unnamed_addr constant [6 x i8] c"Accept" +@"$stringlit_4217" = unnamed_addr constant [7 x i8] c"_amount" +@_tydescr_table = constant [21 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %_TyDescrTy_Typ* @"$TyDescr_Event_111", %_TyDescrTy_Typ* @"$TyDescr_Int64_93", %_TyDescrTy_Typ* @"$TyDescr_Addr_128", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_123", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ* @"$TyDescr_Uint256_103", %_TyDescrTy_Typ* @"$TyDescr_Uint32_91", %_TyDescrTy_Typ* @"$TyDescr_Uint64_95", %_TyDescrTy_Typ* @"$TyDescr_Bnum_107", %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ* @"$TyDescr_Addr_129", %_TyDescrTy_Typ* @"$TyDescr_Exception_113", %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_String_124", %_TyDescrTy_Typ* @"$TyDescr_Int256_101", %_TyDescrTy_Typ* @"$TyDescr_Int128_97", %_TyDescrTy_Typ* @"$TyDescr_Bystr_115", %_TyDescrTy_Typ* @"$TyDescr_Message_109", %_TyDescrTy_Typ* @"$TyDescr_Int32_89"] +@_tydescr_table_length = constant i32 21 +@"$pname__scilla_version_4261" = unnamed_addr constant [15 x i8] c"_scilla_version" +@"$pname__this_address_4262" = unnamed_addr constant [13 x i8] c"_this_address" +@"$pname__creation_block_4263" = unnamed_addr constant [15 x i8] c"_creation_block" +@"$pname_support_contract_4264" = unnamed_addr constant [16 x i8] c"support_contract" +@_contract_parameters = constant [4 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__scilla_version_4261", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Uint32_91" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$pname__this_address_4262", i32 0, i32 0), i32 13 }, %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__creation_block_4263", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Bnum_107" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$pname_support_contract_4264", i32 0, i32 0), i32 16 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_129" }] +@_contract_parameters_length = constant i32 4 +@"$tpname__amount_4265" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4266" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4267" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Reset_4268" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4265", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4266", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4267", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Reset_4269" = unnamed_addr constant [5 x i8] c"Reset" +@"$tpname__amount_4270" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4271" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4272" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Insufficient_Balance_4273" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4270", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4271", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4272", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Insufficient_Balance_4274" = unnamed_addr constant [25 x i8] c"Test_Insufficient_Balance" +@"$tpname__amount_4275" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4276" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4277" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_1_4278" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4275", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4276", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4277", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_1_4279" = unnamed_addr constant [11 x i8] c"Test_Send_1" +@"$tpname__amount_4280" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4281" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4282" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Finalize_Test_Send_1_4283" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4280", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4281", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4282", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Finalize_Test_Send_1_4284" = unnamed_addr constant [20 x i8] c"Finalize_Test_Send_1" +@"$tpname__amount_4285" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4286" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4287" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_2_4288" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4285", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4286", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4287", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_2_4289" = unnamed_addr constant [11 x i8] c"Test_Send_2" +@"$tpname__amount_4290" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4291" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4292" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Finalize_Test_Send_2_4293" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4290", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4291", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4292", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Finalize_Test_Send_2_4294" = unnamed_addr constant [20 x i8] c"Finalize_Test_Send_2" +@"$tpname__amount_4295" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4296" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4297" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_3_4298" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4295", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4296", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4297", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_3_4299" = unnamed_addr constant [11 x i8] c"Test_Send_3" +@"$tpname__amount_4300" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4301" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4302" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_3_Helper_4303" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4300", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4301", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4302", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_3_Helper_4304" = unnamed_addr constant [18 x i8] c"Test_Send_3_Helper" +@"$tpname__amount_4305" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4306" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4307" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Finalize_Test_Send_3_4308" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4305", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4306", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4307", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Finalize_Test_Send_3_4309" = unnamed_addr constant [20 x i8] c"Finalize_Test_Send_3" +@"$tpname__amount_4310" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4311" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4312" = unnamed_addr constant [7 x i8] c"_sender" +@"$tpname_expected_balance_4313" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$tparams_CheckSenderBalance_4314" = unnamed_addr constant [4 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4310", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4311", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4312", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$tpname_expected_balance_4313", i32 0, i32 0), i32 16 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }] +@"$tname_CheckSenderBalance_4315" = unnamed_addr constant [18 x i8] c"CheckSenderBalance" +@"$tpname__amount_4316" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4317" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4318" = unnamed_addr constant [7 x i8] c"_sender" +@"$tpname_expected_balance_4319" = unnamed_addr constant [16 x i8] c"expected_balance" +@"$tparams_CheckRecipientBalance_4320" = unnamed_addr constant [4 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4316", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4317", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4318", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$tpname_expected_balance_4319", i32 0, i32 0), i32 16 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }] +@"$tname_CheckRecipientBalance_4321" = unnamed_addr constant [21 x i8] c"CheckRecipientBalance" +@"$tpname__amount_4322" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4323" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4324" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_4_4325" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4322", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4323", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4324", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_4_4326" = unnamed_addr constant [11 x i8] c"Test_Send_4" +@"$tpname__amount_4327" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4328" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4329" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_5_4330" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4327", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4328", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4329", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_5_4331" = unnamed_addr constant [11 x i8] c"Test_Send_5" +@"$tpname__amount_4332" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4333" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4334" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_6_4335" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4332", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4333", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4334", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_6_4336" = unnamed_addr constant [11 x i8] c"Test_Send_6" +@"$tpname__amount_4337" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4338" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4339" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_7_4340" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4337", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4338", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4339", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_7_4341" = unnamed_addr constant [11 x i8] c"Test_Send_7" +@"$tpname__amount_4342" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4343" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4344" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_8_4345" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4342", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4343", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4344", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_8_4346" = unnamed_addr constant [11 x i8] c"Test_Send_8" +@"$tpname__amount_4347" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4348" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4349" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_9_4350" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4347", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4348", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4349", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_9_4351" = unnamed_addr constant [11 x i8] c"Test_Send_9" +@"$tpname__amount_4352" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4353" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4354" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_10_4355" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4352", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4353", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4354", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_10_4356" = unnamed_addr constant [12 x i8] c"Test_Send_10" +@"$tpname__amount_4357" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4358" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4359" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_11_4360" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4357", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4358", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4359", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_11_4361" = unnamed_addr constant [12 x i8] c"Test_Send_11" +@"$tpname__amount_4362" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4363" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4364" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_12_4365" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4362", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4363", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4364", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_12_4366" = unnamed_addr constant [12 x i8] c"Test_Send_12" +@"$tpname__amount_4367" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4368" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4369" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_13_4370" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4367", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4368", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4369", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_13_4371" = unnamed_addr constant [12 x i8] c"Test_Send_13" +@"$tpname__amount_4372" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_4373" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_4374" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Test_Send_14_4375" = unnamed_addr constant [3 x %"$ParamDescr_4259"] [%"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_4372", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_99" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_4373", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }, %"$ParamDescr_4259" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_4374", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_128" }] +@"$tname_Test_Send_14_4376" = unnamed_addr constant [12 x i8] c"Test_Send_14" +@_transition_parameters = constant [22 x %"$TransDescr_4260"] [%"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tname_Reset_4269", i32 0, i32 0), i32 5 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Reset_4268", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([25 x i8], [25 x i8]* @"$tname_Test_Insufficient_Balance_4274", i32 0, i32 0), i32 25 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Insufficient_Balance_4273", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_1_4279", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_1_4278", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$tname_Finalize_Test_Send_1_4284", i32 0, i32 0), i32 20 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Finalize_Test_Send_1_4283", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_2_4289", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_2_4288", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$tname_Finalize_Test_Send_2_4294", i32 0, i32 0), i32 20 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Finalize_Test_Send_2_4293", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_3_4299", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_3_4298", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$tname_Test_Send_3_Helper_4304", i32 0, i32 0), i32 18 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_3_Helper_4303", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$tname_Finalize_Test_Send_3_4309", i32 0, i32 0), i32 20 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Finalize_Test_Send_3_4308", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$tname_CheckSenderBalance_4315", i32 0, i32 0), i32 18 }, i32 4, %"$ParamDescr_4259"* getelementptr inbounds ([4 x %"$ParamDescr_4259"], [4 x %"$ParamDescr_4259"]* @"$tparams_CheckSenderBalance_4314", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$tname_CheckRecipientBalance_4321", i32 0, i32 0), i32 21 }, i32 4, %"$ParamDescr_4259"* getelementptr inbounds ([4 x %"$ParamDescr_4259"], [4 x %"$ParamDescr_4259"]* @"$tparams_CheckRecipientBalance_4320", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_4_4326", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_4_4325", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_5_4331", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_5_4330", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_6_4336", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_6_4335", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_7_4341", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_7_4340", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_8_4346", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_8_4345", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_Test_Send_9_4351", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_9_4350", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$tname_Test_Send_10_4356", i32 0, i32 0), i32 12 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_10_4355", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$tname_Test_Send_11_4361", i32 0, i32 0), i32 12 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_11_4360", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$tname_Test_Send_12_4366", i32 0, i32 0), i32 12 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_12_4365", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$tname_Test_Send_13_4371", i32 0, i32 0), i32 12 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_13_4370", i32 0, i32 0) }, %"$TransDescr_4260" { %ParamDescrString { i8* getelementptr inbounds ([12 x i8], [12 x i8]* @"$tname_Test_Send_14_4376", i32 0, i32 0), i32 12 }, i32 3, %"$ParamDescr_4259"* getelementptr inbounds ([3 x %"$ParamDescr_4259"], [3 x %"$ParamDescr_4259"]* @"$tparams_Test_Send_14_4375", i32 0, i32 0) }] +@_transition_parameters_length = constant i32 22 + +define internal %TName_Bool* @"$fundef_79"(%"$$fundef_79_env_179"* %0, %String %1) { +entry: + %"$$fundef_79_env_x_707" = getelementptr inbounds %"$$fundef_79_env_179", %"$$fundef_79_env_179"* %0, i32 0, i32 0 + %"$x_envload_708" = load %String, %String* %"$$fundef_79_env_x_707", align 8 + %x = alloca %String, align 8 + store %String %"$x_envload_708", %String* %x, align 8 + %"$retval_80" = alloca %TName_Bool*, align 8 + %"$execptr_load_709" = load i8*, i8** @_execptr, align 8 + %"$x_710" = load %String, %String* %x, align 8 + %"$eq_call_711" = call %TName_Bool* @_eq_String(i8* %"$execptr_load_709", %String %"$x_710", %String %1) + store %TName_Bool* %"$eq_call_711", %TName_Bool** %"$retval_80", align 8 + %"$$retval_80_713" = load %TName_Bool*, %TName_Bool** %"$retval_80", align 8 + ret %TName_Bool* %"$$retval_80_713" +} + +define internal { %TName_Bool* (i8*, %String)*, i8* } @"$fundef_77"(%"$$fundef_77_env_180"* %0, %String %1) { +entry: + %"$retval_78" = alloca { %TName_Bool* (i8*, %String)*, i8* }, align 8 + %"$gasrem_696" = load i64, i64* @_gasrem, align 8 + %"$gascmp_697" = icmp ugt i64 1, %"$gasrem_696" + br i1 %"$gascmp_697", label %"$out_of_gas_698", label %"$have_gas_699" + +"$out_of_gas_698": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_699" + +"$have_gas_699": ; preds = %"$out_of_gas_698", %entry + %"$consume_700" = sub i64 %"$gasrem_696", 1 + store i64 %"$consume_700", i64* @_gasrem, align 8 + %"$$fundef_79_envp_701_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_79_envp_701_salloc" = call i8* @_salloc(i8* %"$$fundef_79_envp_701_load", i64 16) + %"$$fundef_79_envp_701" = bitcast i8* %"$$fundef_79_envp_701_salloc" to %"$$fundef_79_env_179"* + %"$$fundef_79_env_voidp_703" = bitcast %"$$fundef_79_env_179"* %"$$fundef_79_envp_701" to i8* + %"$$fundef_79_cloval_704" = insertvalue { %TName_Bool* (i8*, %String)*, i8* } { %TName_Bool* (i8*, %String)* bitcast (%TName_Bool* (%"$$fundef_79_env_179"*, %String)* @"$fundef_79" to %TName_Bool* (i8*, %String)*), i8* undef }, i8* %"$$fundef_79_env_voidp_703", 1 + %"$$fundef_79_env_x_705" = getelementptr inbounds %"$$fundef_79_env_179", %"$$fundef_79_env_179"* %"$$fundef_79_envp_701", i32 0, i32 0 + store %String %1, %String* %"$$fundef_79_env_x_705", align 8 + store { %TName_Bool* (i8*, %String)*, i8* } %"$$fundef_79_cloval_704", { %TName_Bool* (i8*, %String)*, i8* }* %"$retval_78", align 8 + %"$$retval_78_706" = load { %TName_Bool* (i8*, %String)*, i8* }, { %TName_Bool* (i8*, %String)*, i8* }* %"$retval_78", align 8 + ret { %TName_Bool* (i8*, %String)*, i8* } %"$$retval_78_706" +} + +define internal %TName_List_Message* @"$fundef_81"(%"$$fundef_81_env_181"* %0, i8* %1) { +entry: + %"$retval_82" = alloca %TName_List_Message*, align 8 + %"$gasrem_671" = load i64, i64* @_gasrem, align 8 + %"$gascmp_672" = icmp ugt i64 1, %"$gasrem_671" + br i1 %"$gascmp_672", label %"$out_of_gas_673", label %"$have_gas_674" + +"$out_of_gas_673": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_674" + +"$have_gas_674": ; preds = %"$out_of_gas_673", %entry + %"$consume_675" = sub i64 %"$gasrem_671", 1 + store i64 %"$consume_675", i64* @_gasrem, align 8 + %mty = alloca %TName_List_Message*, align 8 + %"$gasrem_676" = load i64, i64* @_gasrem, align 8 + %"$gascmp_677" = icmp ugt i64 1, %"$gasrem_676" + br i1 %"$gascmp_677", label %"$out_of_gas_678", label %"$have_gas_679" + +"$out_of_gas_678": ; preds = %"$have_gas_674" + call void @_out_of_gas() + br label %"$have_gas_679" + +"$have_gas_679": ; preds = %"$out_of_gas_678", %"$have_gas_674" + %"$consume_680" = sub i64 %"$gasrem_676", 1 + store i64 %"$consume_680", i64* @_gasrem, align 8 + %"$adtval_681_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_681_salloc" = call i8* @_salloc(i8* %"$adtval_681_load", i64 1) + %"$adtval_681" = bitcast i8* %"$adtval_681_salloc" to %CName_Nil_Message* + %"$adtgep_682" = getelementptr inbounds %CName_Nil_Message, %CName_Nil_Message* %"$adtval_681", i32 0, i32 0 + store i8 1, i8* %"$adtgep_682", align 1 + %"$adtptr_683" = bitcast %CName_Nil_Message* %"$adtval_681" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_683", %TName_List_Message** %mty, align 8 + %"$gasrem_684" = load i64, i64* @_gasrem, align 8 + %"$gascmp_685" = icmp ugt i64 1, %"$gasrem_684" + br i1 %"$gascmp_685", label %"$out_of_gas_686", label %"$have_gas_687" + +"$out_of_gas_686": ; preds = %"$have_gas_679" + call void @_out_of_gas() + br label %"$have_gas_687" + +"$have_gas_687": ; preds = %"$out_of_gas_686", %"$have_gas_679" + %"$consume_688" = sub i64 %"$gasrem_684", 1 + store i64 %"$consume_688", i64* @_gasrem, align 8 + %"$mty_689" = load %TName_List_Message*, %TName_List_Message** %mty, align 8 + %"$adtval_690_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_690_salloc" = call i8* @_salloc(i8* %"$adtval_690_load", i64 17) + %"$adtval_690" = bitcast i8* %"$adtval_690_salloc" to %CName_Cons_Message* + %"$adtgep_691" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_690", i32 0, i32 0 + store i8 0, i8* %"$adtgep_691", align 1 + %"$adtgep_692" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_690", i32 0, i32 1 + store i8* %1, i8** %"$adtgep_692", align 8 + %"$adtgep_693" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_690", i32 0, i32 2 + store %TName_List_Message* %"$mty_689", %TName_List_Message** %"$adtgep_693", align 8 + %"$adtptr_694" = bitcast %CName_Cons_Message* %"$adtval_690" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_694", %TName_List_Message** %"$retval_82", align 8 + %"$$retval_82_695" = load %TName_List_Message*, %TName_List_Message** %"$retval_82", align 8 + ret %TName_List_Message* %"$$retval_82_695" +} + +define internal %TName_List_String* @"$fundef_71"(%"$$fundef_71_env_182"* %0, { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %1) { +entry: + %"$$fundef_71_env_equal_587" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %0, i32 0, i32 0 + %"$equal_envload_588" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_71_env_equal_587", align 8 + %equal = alloca { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_envload_588", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + %"$$fundef_71_env_l1_589" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %0, i32 0, i32 1 + %"$l1_envload_590" = load %TName_List_String*, %TName_List_String** %"$$fundef_71_env_l1_589", align 8 + %l1 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$l1_envload_590", %TName_List_String** %l1, align 8 + %"$$fundef_71_env_x1_591" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %0, i32 0, i32 2 + %"$x1_envload_592" = load %String, %String* %"$$fundef_71_env_x1_591", align 8 + %x1 = alloca %String, align 8 + store %String %"$x1_envload_592", %String* %x1, align 8 + %"$$fundef_71_env_xs2_593" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %0, i32 0, i32 3 + %"$xs2_envload_594" = load %TName_List_String*, %TName_List_String** %"$$fundef_71_env_xs2_593", align 8 + %xs2 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$xs2_envload_594", %TName_List_String** %xs2, align 8 + %"$retval_72" = alloca %TName_List_String*, align 8 + %"$gasrem_595" = load i64, i64* @_gasrem, align 8 + %"$gascmp_596" = icmp ugt i64 2, %"$gasrem_595" + br i1 %"$gascmp_596", label %"$out_of_gas_597", label %"$have_gas_598" + +"$out_of_gas_597": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_598" + +"$have_gas_598": ; preds = %"$out_of_gas_597", %entry + %"$consume_599" = sub i64 %"$gasrem_595", 2 + store i64 %"$consume_599", i64* @_gasrem, align 8 + %"$xs2_601" = load %TName_List_String*, %TName_List_String** %xs2, align 8 + %"$xs2_tag_602" = getelementptr inbounds %TName_List_String, %TName_List_String* %"$xs2_601", i32 0, i32 0 + %"$xs2_tag_603" = load i8, i8* %"$xs2_tag_602", align 1 + switch i8 %"$xs2_tag_603", label %"$empty_default_604" [ + i8 0, label %"$Cons_605" + i8 1, label %"$Nil_662" + ] + +"$Cons_605": ; preds = %"$have_gas_598" + %"$xs2_606" = bitcast %TName_List_String* %"$xs2_601" to %CName_Cons_String* + %"$x2_gep_607" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$xs2_606", i32 0, i32 1 + %"$x2_load_608" = load %String, %String* %"$x2_gep_607", align 8 + %x2 = alloca %String, align 8 + store %String %"$x2_load_608", %String* %x2, align 8 + %"$tl2_gep_609" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$xs2_606", i32 0, i32 2 + %"$tl2_load_610" = load %TName_List_String*, %TName_List_String** %"$tl2_gep_609", align 8 + %tl2 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$tl2_load_610", %TName_List_String** %tl2, align 8 + %"$gasrem_611" = load i64, i64* @_gasrem, align 8 + %"$gascmp_612" = icmp ugt i64 1, %"$gasrem_611" + br i1 %"$gascmp_612", label %"$out_of_gas_613", label %"$have_gas_614" + +"$out_of_gas_613": ; preds = %"$Cons_605" + call void @_out_of_gas() + br label %"$have_gas_614" + +"$have_gas_614": ; preds = %"$out_of_gas_613", %"$Cons_605" + %"$consume_615" = sub i64 %"$gasrem_611", 1 + store i64 %"$consume_615", i64* @_gasrem, align 8 + %eq_x1_x2 = alloca %TName_Bool*, align 8 + %"$gasrem_616" = load i64, i64* @_gasrem, align 8 + %"$gascmp_617" = icmp ugt i64 1, %"$gasrem_616" + br i1 %"$gascmp_617", label %"$out_of_gas_618", label %"$have_gas_619" + +"$out_of_gas_618": ; preds = %"$have_gas_614" + call void @_out_of_gas() + br label %"$have_gas_619" + +"$have_gas_619": ; preds = %"$out_of_gas_618", %"$have_gas_614" + %"$consume_620" = sub i64 %"$gasrem_616", 1 + store i64 %"$consume_620", i64* @_gasrem, align 8 + %"$equal_8" = alloca { %TName_Bool* (i8*, %String)*, i8* }, align 8 + %"$equal_621" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + %"$equal_fptr_622" = extractvalue { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_621", 0 + %"$equal_envptr_623" = extractvalue { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_621", 1 + %"$x1_624" = load %String, %String* %x1, align 8 + %"$equal_call_625" = call { %TName_Bool* (i8*, %String)*, i8* } %"$equal_fptr_622"(i8* %"$equal_envptr_623", %String %"$x1_624") + store { %TName_Bool* (i8*, %String)*, i8* } %"$equal_call_625", { %TName_Bool* (i8*, %String)*, i8* }* %"$equal_8", align 8 + %"$equal_9" = alloca %TName_Bool*, align 8 + %"$$equal_8_626" = load { %TName_Bool* (i8*, %String)*, i8* }, { %TName_Bool* (i8*, %String)*, i8* }* %"$equal_8", align 8 + %"$$equal_8_fptr_627" = extractvalue { %TName_Bool* (i8*, %String)*, i8* } %"$$equal_8_626", 0 + %"$$equal_8_envptr_628" = extractvalue { %TName_Bool* (i8*, %String)*, i8* } %"$$equal_8_626", 1 + %"$x2_629" = load %String, %String* %x2, align 8 + %"$$equal_8_call_630" = call %TName_Bool* %"$$equal_8_fptr_627"(i8* %"$$equal_8_envptr_628", %String %"$x2_629") + store %TName_Bool* %"$$equal_8_call_630", %TName_Bool** %"$equal_9", align 8 + %"$$equal_9_631" = load %TName_Bool*, %TName_Bool** %"$equal_9", align 8 + store %TName_Bool* %"$$equal_9_631", %TName_Bool** %eq_x1_x2, align 8 + %"$gasrem_632" = load i64, i64* @_gasrem, align 8 + %"$gascmp_633" = icmp ugt i64 2, %"$gasrem_632" + br i1 %"$gascmp_633", label %"$out_of_gas_634", label %"$have_gas_635" + +"$out_of_gas_634": ; preds = %"$have_gas_619" + call void @_out_of_gas() + br label %"$have_gas_635" + +"$have_gas_635": ; preds = %"$out_of_gas_634", %"$have_gas_619" + %"$consume_636" = sub i64 %"$gasrem_632", 2 + store i64 %"$consume_636", i64* @_gasrem, align 8 + %"$eq_x1_x2_638" = load %TName_Bool*, %TName_Bool** %eq_x1_x2, align 8 + %"$eq_x1_x2_tag_639" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$eq_x1_x2_638", i32 0, i32 0 + %"$eq_x1_x2_tag_640" = load i8, i8* %"$eq_x1_x2_tag_639", align 1 + switch i8 %"$eq_x1_x2_tag_640", label %"$empty_default_641" [ + i8 0, label %"$True_642" + i8 1, label %"$False_654" + ] + +"$True_642": ; preds = %"$have_gas_635" + %"$eq_x1_x2_643" = bitcast %TName_Bool* %"$eq_x1_x2_638" to %CName_True* + %"$gasrem_644" = load i64, i64* @_gasrem, align 8 + %"$gascmp_645" = icmp ugt i64 1, %"$gasrem_644" + br i1 %"$gascmp_645", label %"$out_of_gas_646", label %"$have_gas_647" + +"$out_of_gas_646": ; preds = %"$True_642" + call void @_out_of_gas() + br label %"$have_gas_647" + +"$have_gas_647": ; preds = %"$out_of_gas_646", %"$True_642" + %"$consume_648" = sub i64 %"$gasrem_644", 1 + store i64 %"$consume_648", i64* @_gasrem, align 8 + %"$recurse_10" = alloca %TName_List_String*, align 8 + %"$recurse_fptr_649" = extractvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %1, 0 + %"$recurse_envptr_650" = extractvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %1, 1 + %"$tl2_651" = load %TName_List_String*, %TName_List_String** %tl2, align 8 + %"$recurse_call_652" = call %TName_List_String* %"$recurse_fptr_649"(i8* %"$recurse_envptr_650", %TName_List_String* %"$tl2_651") + store %TName_List_String* %"$recurse_call_652", %TName_List_String** %"$recurse_10", align 8 + %"$$recurse_10_653" = load %TName_List_String*, %TName_List_String** %"$recurse_10", align 8 + store %TName_List_String* %"$$recurse_10_653", %TName_List_String** %"$retval_72", align 8 + br label %"$matchsucc_637" + +"$False_654": ; preds = %"$have_gas_635" + %"$eq_x1_x2_655" = bitcast %TName_Bool* %"$eq_x1_x2_638" to %CName_False* + %"$gasrem_656" = load i64, i64* @_gasrem, align 8 + %"$gascmp_657" = icmp ugt i64 1, %"$gasrem_656" + br i1 %"$gascmp_657", label %"$out_of_gas_658", label %"$have_gas_659" + +"$out_of_gas_658": ; preds = %"$False_654" + call void @_out_of_gas() + br label %"$have_gas_659" + +"$have_gas_659": ; preds = %"$out_of_gas_658", %"$False_654" + %"$consume_660" = sub i64 %"$gasrem_656", 1 + store i64 %"$consume_660", i64* @_gasrem, align 8 + %"$l1_661" = load %TName_List_String*, %TName_List_String** %l1, align 8 + store %TName_List_String* %"$l1_661", %TName_List_String** %"$retval_72", align 8 + br label %"$matchsucc_637" + +"$empty_default_641": ; preds = %"$have_gas_635" + br label %"$matchsucc_637" + +"$matchsucc_637": ; preds = %"$have_gas_659", %"$have_gas_647", %"$empty_default_641" + br label %"$matchsucc_600" + +"$Nil_662": ; preds = %"$have_gas_598" + %"$xs2_663" = bitcast %TName_List_String* %"$xs2_601" to %CName_Nil_String* + %"$gasrem_664" = load i64, i64* @_gasrem, align 8 + %"$gascmp_665" = icmp ugt i64 1, %"$gasrem_664" + br i1 %"$gascmp_665", label %"$out_of_gas_666", label %"$have_gas_667" + +"$out_of_gas_666": ; preds = %"$Nil_662" + call void @_out_of_gas() + br label %"$have_gas_667" + +"$have_gas_667": ; preds = %"$out_of_gas_666", %"$Nil_662" + %"$consume_668" = sub i64 %"$gasrem_664", 1 + store i64 %"$consume_668", i64* @_gasrem, align 8 + %"$l1_669" = load %TName_List_String*, %TName_List_String** %l1, align 8 + store %TName_List_String* %"$l1_669", %TName_List_String** %"$retval_72", align 8 + br label %"$matchsucc_600" + +"$empty_default_604": ; preds = %"$have_gas_598" + br label %"$matchsucc_600" + +"$matchsucc_600": ; preds = %"$have_gas_667", %"$matchsucc_637", %"$empty_default_604" + %"$$retval_72_670" = load %TName_List_String*, %TName_List_String** %"$retval_72", align 8 + ret %TName_List_String* %"$$retval_72_670" +} + +define internal { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } @"$fundef_69"(%"$$fundef_69_env_183"* %0, %String %1) { +entry: + %"$$fundef_69_env_equal_564" = getelementptr inbounds %"$$fundef_69_env_183", %"$$fundef_69_env_183"* %0, i32 0, i32 0 + %"$equal_envload_565" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_69_env_equal_564", align 8 + %equal = alloca { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_envload_565", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + %"$$fundef_69_env_l1_566" = getelementptr inbounds %"$$fundef_69_env_183", %"$$fundef_69_env_183"* %0, i32 0, i32 1 + %"$l1_envload_567" = load %TName_List_String*, %TName_List_String** %"$$fundef_69_env_l1_566", align 8 + %l1 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$l1_envload_567", %TName_List_String** %l1, align 8 + %"$$fundef_69_env_xs2_568" = getelementptr inbounds %"$$fundef_69_env_183", %"$$fundef_69_env_183"* %0, i32 0, i32 2 + %"$xs2_envload_569" = load %TName_List_String*, %TName_List_String** %"$$fundef_69_env_xs2_568", align 8 + %xs2 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$xs2_envload_569", %TName_List_String** %xs2, align 8 + %"$retval_70" = alloca { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }, align 8 + %"$gasrem_570" = load i64, i64* @_gasrem, align 8 + %"$gascmp_571" = icmp ugt i64 1, %"$gasrem_570" + br i1 %"$gascmp_571", label %"$out_of_gas_572", label %"$have_gas_573" + +"$out_of_gas_572": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_573" + +"$have_gas_573": ; preds = %"$out_of_gas_572", %entry + %"$consume_574" = sub i64 %"$gasrem_570", 1 + store i64 %"$consume_574", i64* @_gasrem, align 8 + %"$$fundef_71_envp_575_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_71_envp_575_salloc" = call i8* @_salloc(i8* %"$$fundef_71_envp_575_load", i64 48) + %"$$fundef_71_envp_575" = bitcast i8* %"$$fundef_71_envp_575_salloc" to %"$$fundef_71_env_182"* + %"$$fundef_71_env_voidp_577" = bitcast %"$$fundef_71_env_182"* %"$$fundef_71_envp_575" to i8* + %"$$fundef_71_cloval_578" = insertvalue { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })* bitcast (%TName_List_String* (%"$$fundef_71_env_182"*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })* @"$fundef_71" to %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*), i8* undef }, i8* %"$$fundef_71_env_voidp_577", 1 + %"$$fundef_71_env_equal_579" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %"$$fundef_71_envp_575", i32 0, i32 0 + %"$equal_580" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_580", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_71_env_equal_579", align 8 + %"$$fundef_71_env_l1_581" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %"$$fundef_71_envp_575", i32 0, i32 1 + %"$l1_582" = load %TName_List_String*, %TName_List_String** %l1, align 8 + store %TName_List_String* %"$l1_582", %TName_List_String** %"$$fundef_71_env_l1_581", align 8 + %"$$fundef_71_env_x1_583" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %"$$fundef_71_envp_575", i32 0, i32 2 + store %String %1, %String* %"$$fundef_71_env_x1_583", align 8 + %"$$fundef_71_env_xs2_584" = getelementptr inbounds %"$$fundef_71_env_182", %"$$fundef_71_env_182"* %"$$fundef_71_envp_575", i32 0, i32 3 + %"$xs2_585" = load %TName_List_String*, %TName_List_String** %xs2, align 8 + store %TName_List_String* %"$xs2_585", %TName_List_String** %"$$fundef_71_env_xs2_584", align 8 + store { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$fundef_71_cloval_578", { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }* %"$retval_70", align 8 + %"$$retval_70_586" = load { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }, { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }* %"$retval_70", align 8 + ret { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$retval_70_586" +} + +define internal { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } @"$fundef_67"(%"$$fundef_67_env_184"* %0, %TName_List_String* %1) { +entry: + %"$$fundef_67_env_equal_545" = getelementptr inbounds %"$$fundef_67_env_184", %"$$fundef_67_env_184"* %0, i32 0, i32 0 + %"$equal_envload_546" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_67_env_equal_545", align 8 + %equal = alloca { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_envload_546", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + %"$$fundef_67_env_l1_547" = getelementptr inbounds %"$$fundef_67_env_184", %"$$fundef_67_env_184"* %0, i32 0, i32 1 + %"$l1_envload_548" = load %TName_List_String*, %TName_List_String** %"$$fundef_67_env_l1_547", align 8 + %l1 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$l1_envload_548", %TName_List_String** %l1, align 8 + %"$retval_68" = alloca { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }, align 8 + %"$gasrem_549" = load i64, i64* @_gasrem, align 8 + %"$gascmp_550" = icmp ugt i64 1, %"$gasrem_549" + br i1 %"$gascmp_550", label %"$out_of_gas_551", label %"$have_gas_552" + +"$out_of_gas_551": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_552" + +"$have_gas_552": ; preds = %"$out_of_gas_551", %entry + %"$consume_553" = sub i64 %"$gasrem_549", 1 + store i64 %"$consume_553", i64* @_gasrem, align 8 + %"$$fundef_69_envp_554_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_69_envp_554_salloc" = call i8* @_salloc(i8* %"$$fundef_69_envp_554_load", i64 32) + %"$$fundef_69_envp_554" = bitcast i8* %"$$fundef_69_envp_554_salloc" to %"$$fundef_69_env_183"* + %"$$fundef_69_env_voidp_556" = bitcast %"$$fundef_69_env_183"* %"$$fundef_69_envp_554" to i8* + %"$$fundef_69_cloval_557" = insertvalue { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)* bitcast ({ %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (%"$$fundef_69_env_183"*, %String)* @"$fundef_69" to { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*), i8* undef }, i8* %"$$fundef_69_env_voidp_556", 1 + %"$$fundef_69_env_equal_558" = getelementptr inbounds %"$$fundef_69_env_183", %"$$fundef_69_env_183"* %"$$fundef_69_envp_554", i32 0, i32 0 + %"$equal_559" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_559", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_69_env_equal_558", align 8 + %"$$fundef_69_env_l1_560" = getelementptr inbounds %"$$fundef_69_env_183", %"$$fundef_69_env_183"* %"$$fundef_69_envp_554", i32 0, i32 1 + %"$l1_561" = load %TName_List_String*, %TName_List_String** %l1, align 8 + store %TName_List_String* %"$l1_561", %TName_List_String** %"$$fundef_69_env_l1_560", align 8 + %"$$fundef_69_env_xs2_562" = getelementptr inbounds %"$$fundef_69_env_183", %"$$fundef_69_env_183"* %"$$fundef_69_envp_554", i32 0, i32 2 + store %TName_List_String* %1, %TName_List_String** %"$$fundef_69_env_xs2_562", align 8 + store { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } %"$$fundef_69_cloval_557", { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }* %"$retval_68", align 8 + %"$$retval_68_563" = load { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }, { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }* %"$retval_68", align 8 + ret { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } %"$$retval_68_563" +} + +define internal %TName_Bool* @"$fundef_65"(%"$$fundef_65_env_185"* %0, %TName_List_String* %1) { +entry: + %"$$fundef_65_env_equal_438" = getelementptr inbounds %"$$fundef_65_env_185", %"$$fundef_65_env_185"* %0, i32 0, i32 0 + %"$equal_envload_439" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_65_env_equal_438", align 8 + %equal = alloca { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_envload_439", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + %"$$fundef_65_env_l1_440" = getelementptr inbounds %"$$fundef_65_env_185", %"$$fundef_65_env_185"* %0, i32 0, i32 1 + %"$l1_envload_441" = load %TName_List_String*, %TName_List_String** %"$$fundef_65_env_l1_440", align 8 + %l1 = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$l1_envload_441", %TName_List_String** %l1, align 8 + %"$$fundef_65_env_list_foldk_442" = getelementptr inbounds %"$$fundef_65_env_185", %"$$fundef_65_env_185"* %0, i32 0, i32 2 + %"$list_foldk_envload_443" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_65_env_list_foldk_442", align 8 + %list_foldk = alloca { i8*, i8* }*, align 8 + store { i8*, i8* }* %"$list_foldk_envload_443", { i8*, i8* }** %list_foldk, align 8 + %"$retval_66" = alloca %TName_Bool*, align 8 + %"$gasrem_444" = load i64, i64* @_gasrem, align 8 + %"$gascmp_445" = icmp ugt i64 1, %"$gasrem_444" + br i1 %"$gascmp_445", label %"$out_of_gas_446", label %"$have_gas_447" + +"$out_of_gas_446": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_447" + +"$have_gas_447": ; preds = %"$out_of_gas_446", %entry + %"$consume_448" = sub i64 %"$gasrem_444", 1 + store i64 %"$consume_448", i64* @_gasrem, align 8 + %foldk = alloca { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }, align 8 + %"$gasrem_449" = load i64, i64* @_gasrem, align 8 + %"$gascmp_450" = icmp ugt i64 1, %"$gasrem_449" + br i1 %"$gascmp_450", label %"$out_of_gas_451", label %"$have_gas_452" + +"$out_of_gas_451": ; preds = %"$have_gas_447" + call void @_out_of_gas() + br label %"$have_gas_452" + +"$have_gas_452": ; preds = %"$out_of_gas_451", %"$have_gas_447" + %"$consume_453" = sub i64 %"$gasrem_449", 1 + store i64 %"$consume_453", i64* @_gasrem, align 8 + %"$list_foldk_454" = load { i8*, i8* }*, { i8*, i8* }** %list_foldk, align 8 + %"$list_foldk_455" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldk_454", i32 0 + %"$list_foldk_456" = bitcast { i8*, i8* }* %"$list_foldk_455" to { { i8*, i8* }* (i8*)*, i8* }* + %"$list_foldk_457" = load { { i8*, i8* }* (i8*)*, i8* }, { { i8*, i8* }* (i8*)*, i8* }* %"$list_foldk_456", align 8 + %"$list_foldk_fptr_458" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldk_457", 0 + %"$list_foldk_envptr_459" = extractvalue { { i8*, i8* }* (i8*)*, i8* } %"$list_foldk_457", 1 + %"$list_foldk_call_460" = call { i8*, i8* }* %"$list_foldk_fptr_458"(i8* %"$list_foldk_envptr_459") + %"$list_foldk_461" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$list_foldk_call_460", i32 1 + %"$list_foldk_462" = bitcast { i8*, i8* }* %"$list_foldk_461" to { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* }* + %"$list_foldk_463" = load { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* }* %"$list_foldk_462", align 8 + %"$list_foldk_fptr_464" = extractvalue { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldk_463", 0 + %"$list_foldk_envptr_465" = extractvalue { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* } %"$list_foldk_463", 1 + %"$list_foldk_call_466" = call { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } %"$list_foldk_fptr_464"(i8* %"$list_foldk_envptr_465") + store { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } %"$list_foldk_call_466", { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }* %foldk, align 8 + %"$gasrem_467" = load i64, i64* @_gasrem, align 8 + %"$gascmp_468" = icmp ugt i64 1, %"$gasrem_467" + br i1 %"$gascmp_468", label %"$out_of_gas_469", label %"$have_gas_470" + +"$out_of_gas_469": ; preds = %"$have_gas_452" + call void @_out_of_gas() + br label %"$have_gas_470" + +"$have_gas_470": ; preds = %"$out_of_gas_469", %"$have_gas_452" + %"$consume_471" = sub i64 %"$gasrem_467", 1 + store i64 %"$consume_471", i64* @_gasrem, align 8 + %iter = alloca { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_472" = load i64, i64* @_gasrem, align 8 + %"$gascmp_473" = icmp ugt i64 1, %"$gasrem_472" + br i1 %"$gascmp_473", label %"$out_of_gas_474", label %"$have_gas_475" + +"$out_of_gas_474": ; preds = %"$have_gas_470" + call void @_out_of_gas() + br label %"$have_gas_475" + +"$have_gas_475": ; preds = %"$out_of_gas_474", %"$have_gas_470" + %"$consume_476" = sub i64 %"$gasrem_472", 1 + store i64 %"$consume_476", i64* @_gasrem, align 8 + %"$$fundef_67_envp_477_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_67_envp_477_salloc" = call i8* @_salloc(i8* %"$$fundef_67_envp_477_load", i64 24) + %"$$fundef_67_envp_477" = bitcast i8* %"$$fundef_67_envp_477_salloc" to %"$$fundef_67_env_184"* + %"$$fundef_67_env_voidp_479" = bitcast %"$$fundef_67_env_184"* %"$$fundef_67_envp_477" to i8* + %"$$fundef_67_cloval_480" = insertvalue { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)* bitcast ({ { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (%"$$fundef_67_env_184"*, %TName_List_String*)* @"$fundef_67" to { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_67_env_voidp_479", 1 + %"$$fundef_67_env_equal_481" = getelementptr inbounds %"$$fundef_67_env_184", %"$$fundef_67_env_184"* %"$$fundef_67_envp_477", i32 0, i32 0 + %"$equal_482" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_482", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_67_env_equal_481", align 8 + %"$$fundef_67_env_l1_483" = getelementptr inbounds %"$$fundef_67_env_184", %"$$fundef_67_env_184"* %"$$fundef_67_envp_477", i32 0, i32 1 + %"$l1_484" = load %TName_List_String*, %TName_List_String** %l1, align 8 + store %TName_List_String* %"$l1_484", %TName_List_String** %"$$fundef_67_env_l1_483", align 8 + store { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$fundef_67_cloval_480", { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %iter, align 8 + %"$gasrem_485" = load i64, i64* @_gasrem, align 8 + %"$gascmp_486" = icmp ugt i64 1, %"$gasrem_485" + br i1 %"$gascmp_486", label %"$out_of_gas_487", label %"$have_gas_488" + +"$out_of_gas_487": ; preds = %"$have_gas_475" + call void @_out_of_gas() + br label %"$have_gas_488" + +"$have_gas_488": ; preds = %"$out_of_gas_487", %"$have_gas_475" + %"$consume_489" = sub i64 %"$gasrem_485", 1 + store i64 %"$consume_489", i64* @_gasrem, align 8 + %remaining = alloca %TName_List_String*, align 8 + %"$gasrem_490" = load i64, i64* @_gasrem, align 8 + %"$gascmp_491" = icmp ugt i64 1, %"$gasrem_490" + br i1 %"$gascmp_491", label %"$out_of_gas_492", label %"$have_gas_493" + +"$out_of_gas_492": ; preds = %"$have_gas_488" + call void @_out_of_gas() + br label %"$have_gas_493" + +"$have_gas_493": ; preds = %"$out_of_gas_492", %"$have_gas_488" + %"$consume_494" = sub i64 %"$gasrem_490", 1 + store i64 %"$consume_494", i64* @_gasrem, align 8 + %"$foldk_11" = alloca { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + %"$foldk_495" = load { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }, { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }* %foldk, align 8 + %"$foldk_fptr_496" = extractvalue { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } %"$foldk_495", 0 + %"$foldk_envptr_497" = extractvalue { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } %"$foldk_495", 1 + %"$iter_498" = load { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %iter, align 8 + %"$foldk_call_499" = call { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$foldk_fptr_496"(i8* %"$foldk_envptr_497", { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$iter_498") + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$foldk_call_499", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$foldk_11", align 8 + %"$foldk_12" = alloca { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$$foldk_11_500" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$foldk_11", align 8 + %"$$foldk_11_fptr_501" = extractvalue { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$foldk_11_500", 0 + %"$$foldk_11_envptr_502" = extractvalue { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$foldk_11_500", 1 + %"$$foldk_11_call_503" = call { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$foldk_11_fptr_501"(i8* %"$$foldk_11_envptr_502", %TName_List_String* %1) + store { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$foldk_11_call_503", { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %"$foldk_12", align 8 + %"$foldk_13" = alloca %TName_List_String*, align 8 + %"$$foldk_12_504" = load { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %"$foldk_12", align 8 + %"$$foldk_12_fptr_505" = extractvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$foldk_12_504", 0 + %"$$foldk_12_envptr_506" = extractvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$foldk_12_504", 1 + %"$l1_507" = load %TName_List_String*, %TName_List_String** %l1, align 8 + %"$$foldk_12_call_508" = call %TName_List_String* %"$$foldk_12_fptr_505"(i8* %"$$foldk_12_envptr_506", %TName_List_String* %"$l1_507") + store %TName_List_String* %"$$foldk_12_call_508", %TName_List_String** %"$foldk_13", align 8 + %"$$foldk_13_509" = load %TName_List_String*, %TName_List_String** %"$foldk_13", align 8 + store %TName_List_String* %"$$foldk_13_509", %TName_List_String** %remaining, align 8 + %"$gasrem_510" = load i64, i64* @_gasrem, align 8 + %"$gascmp_511" = icmp ugt i64 2, %"$gasrem_510" + br i1 %"$gascmp_511", label %"$out_of_gas_512", label %"$have_gas_513" + +"$out_of_gas_512": ; preds = %"$have_gas_493" + call void @_out_of_gas() + br label %"$have_gas_513" + +"$have_gas_513": ; preds = %"$out_of_gas_512", %"$have_gas_493" + %"$consume_514" = sub i64 %"$gasrem_510", 2 + store i64 %"$consume_514", i64* @_gasrem, align 8 + %"$remaining_516" = load %TName_List_String*, %TName_List_String** %remaining, align 8 + %"$remaining_tag_517" = getelementptr inbounds %TName_List_String, %TName_List_String* %"$remaining_516", i32 0, i32 0 + %"$remaining_tag_518" = load i8, i8* %"$remaining_tag_517", align 1 + switch i8 %"$remaining_tag_518", label %"$empty_default_519" [ + i8 0, label %"$Cons_520" + i8 1, label %"$Nil_534" + ] + +"$Cons_520": ; preds = %"$have_gas_513" + %"$remaining_521" = bitcast %TName_List_String* %"$remaining_516" to %CName_Cons_String* + %"$$remaining_0_gep_522" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$remaining_521", i32 0, i32 1 + %"$$remaining_0_load_523" = load %String, %String* %"$$remaining_0_gep_522", align 8 + %"$remaining_0" = alloca %String, align 8 + store %String %"$$remaining_0_load_523", %String* %"$remaining_0", align 8 + %"$$remaining_1_gep_524" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$remaining_521", i32 0, i32 2 + %"$$remaining_1_load_525" = load %TName_List_String*, %TName_List_String** %"$$remaining_1_gep_524", align 8 + %"$remaining_1" = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$$remaining_1_load_525", %TName_List_String** %"$remaining_1", align 8 + %"$gasrem_526" = load i64, i64* @_gasrem, align 8 + %"$gascmp_527" = icmp ugt i64 1, %"$gasrem_526" + br i1 %"$gascmp_527", label %"$out_of_gas_528", label %"$have_gas_529" + +"$out_of_gas_528": ; preds = %"$Cons_520" + call void @_out_of_gas() + br label %"$have_gas_529" + +"$have_gas_529": ; preds = %"$out_of_gas_528", %"$Cons_520" + %"$consume_530" = sub i64 %"$gasrem_526", 1 + store i64 %"$consume_530", i64* @_gasrem, align 8 + %"$adtval_531_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_531_salloc" = call i8* @_salloc(i8* %"$adtval_531_load", i64 1) + %"$adtval_531" = bitcast i8* %"$adtval_531_salloc" to %CName_False* + %"$adtgep_532" = getelementptr inbounds %CName_False, %CName_False* %"$adtval_531", i32 0, i32 0 + store i8 1, i8* %"$adtgep_532", align 1 + %"$adtptr_533" = bitcast %CName_False* %"$adtval_531" to %TName_Bool* + store %TName_Bool* %"$adtptr_533", %TName_Bool** %"$retval_66", align 8 + br label %"$matchsucc_515" + +"$Nil_534": ; preds = %"$have_gas_513" + %"$remaining_535" = bitcast %TName_List_String* %"$remaining_516" to %CName_Nil_String* + %"$gasrem_536" = load i64, i64* @_gasrem, align 8 + %"$gascmp_537" = icmp ugt i64 1, %"$gasrem_536" + br i1 %"$gascmp_537", label %"$out_of_gas_538", label %"$have_gas_539" + +"$out_of_gas_538": ; preds = %"$Nil_534" + call void @_out_of_gas() + br label %"$have_gas_539" + +"$have_gas_539": ; preds = %"$out_of_gas_538", %"$Nil_534" + %"$consume_540" = sub i64 %"$gasrem_536", 1 + store i64 %"$consume_540", i64* @_gasrem, align 8 + %"$adtval_541_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_541_salloc" = call i8* @_salloc(i8* %"$adtval_541_load", i64 1) + %"$adtval_541" = bitcast i8* %"$adtval_541_salloc" to %CName_True* + %"$adtgep_542" = getelementptr inbounds %CName_True, %CName_True* %"$adtval_541", i32 0, i32 0 + store i8 0, i8* %"$adtgep_542", align 1 + %"$adtptr_543" = bitcast %CName_True* %"$adtval_541" to %TName_Bool* + store %TName_Bool* %"$adtptr_543", %TName_Bool** %"$retval_66", align 8 + br label %"$matchsucc_515" + +"$empty_default_519": ; preds = %"$have_gas_513" + br label %"$matchsucc_515" + +"$matchsucc_515": ; preds = %"$have_gas_539", %"$have_gas_529", %"$empty_default_519" + %"$$retval_66_544" = load %TName_Bool*, %TName_Bool** %"$retval_66", align 8 + ret %TName_Bool* %"$$retval_66_544" +} + +define internal { %TName_Bool* (i8*, %TName_List_String*)*, i8* } @"$fundef_63"(%"$$fundef_63_env_186"* %0, %TName_List_String* %1) { +entry: + %"$$fundef_63_env_equal_419" = getelementptr inbounds %"$$fundef_63_env_186", %"$$fundef_63_env_186"* %0, i32 0, i32 0 + %"$equal_envload_420" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_63_env_equal_419", align 8 + %equal = alloca { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_envload_420", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + %"$$fundef_63_env_list_foldk_421" = getelementptr inbounds %"$$fundef_63_env_186", %"$$fundef_63_env_186"* %0, i32 0, i32 1 + %"$list_foldk_envload_422" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_63_env_list_foldk_421", align 8 + %list_foldk = alloca { i8*, i8* }*, align 8 + store { i8*, i8* }* %"$list_foldk_envload_422", { i8*, i8* }** %list_foldk, align 8 + %"$retval_64" = alloca { %TName_Bool* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_423" = load i64, i64* @_gasrem, align 8 + %"$gascmp_424" = icmp ugt i64 1, %"$gasrem_423" + br i1 %"$gascmp_424", label %"$out_of_gas_425", label %"$have_gas_426" + +"$out_of_gas_425": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_426" + +"$have_gas_426": ; preds = %"$out_of_gas_425", %entry + %"$consume_427" = sub i64 %"$gasrem_423", 1 + store i64 %"$consume_427", i64* @_gasrem, align 8 + %"$$fundef_65_envp_428_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_65_envp_428_salloc" = call i8* @_salloc(i8* %"$$fundef_65_envp_428_load", i64 32) + %"$$fundef_65_envp_428" = bitcast i8* %"$$fundef_65_envp_428_salloc" to %"$$fundef_65_env_185"* + %"$$fundef_65_env_voidp_430" = bitcast %"$$fundef_65_env_185"* %"$$fundef_65_envp_428" to i8* + %"$$fundef_65_cloval_431" = insertvalue { %TName_Bool* (i8*, %TName_List_String*)*, i8* } { %TName_Bool* (i8*, %TName_List_String*)* bitcast (%TName_Bool* (%"$$fundef_65_env_185"*, %TName_List_String*)* @"$fundef_65" to %TName_Bool* (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_65_env_voidp_430", 1 + %"$$fundef_65_env_equal_432" = getelementptr inbounds %"$$fundef_65_env_185", %"$$fundef_65_env_185"* %"$$fundef_65_envp_428", i32 0, i32 0 + %"$equal_433" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %equal, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$equal_433", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_65_env_equal_432", align 8 + %"$$fundef_65_env_l1_434" = getelementptr inbounds %"$$fundef_65_env_185", %"$$fundef_65_env_185"* %"$$fundef_65_envp_428", i32 0, i32 1 + store %TName_List_String* %1, %TName_List_String** %"$$fundef_65_env_l1_434", align 8 + %"$$fundef_65_env_list_foldk_435" = getelementptr inbounds %"$$fundef_65_env_185", %"$$fundef_65_env_185"* %"$$fundef_65_envp_428", i32 0, i32 2 + %"$list_foldk_436" = load { i8*, i8* }*, { i8*, i8* }** %list_foldk, align 8 + store { i8*, i8* }* %"$list_foldk_436", { i8*, i8* }** %"$$fundef_65_env_list_foldk_435", align 8 + store { %TName_Bool* (i8*, %TName_List_String*)*, i8* } %"$$fundef_65_cloval_431", { %TName_Bool* (i8*, %TName_List_String*)*, i8* }* %"$retval_64", align 8 + %"$$retval_64_437" = load { %TName_Bool* (i8*, %TName_List_String*)*, i8* }, { %TName_Bool* (i8*, %TName_List_String*)*, i8* }* %"$retval_64", align 8 + ret { %TName_Bool* (i8*, %TName_List_String*)*, i8* } %"$$retval_64_437" +} + +define internal { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } @"$fundef_61"(%"$$fundef_61_env_187"* %0, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %1) { +entry: + %"$$fundef_61_env_list_foldk_404" = getelementptr inbounds %"$$fundef_61_env_187", %"$$fundef_61_env_187"* %0, i32 0, i32 0 + %"$list_foldk_envload_405" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_61_env_list_foldk_404", align 8 + %list_foldk = alloca { i8*, i8* }*, align 8 + store { i8*, i8* }* %"$list_foldk_envload_405", { i8*, i8* }** %list_foldk, align 8 + %"$retval_62" = alloca { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_406" = load i64, i64* @_gasrem, align 8 + %"$gascmp_407" = icmp ugt i64 1, %"$gasrem_406" + br i1 %"$gascmp_407", label %"$out_of_gas_408", label %"$have_gas_409" + +"$out_of_gas_408": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_409" + +"$have_gas_409": ; preds = %"$out_of_gas_408", %entry + %"$consume_410" = sub i64 %"$gasrem_406", 1 + store i64 %"$consume_410", i64* @_gasrem, align 8 + %"$$fundef_63_envp_411_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_63_envp_411_salloc" = call i8* @_salloc(i8* %"$$fundef_63_envp_411_load", i64 24) + %"$$fundef_63_envp_411" = bitcast i8* %"$$fundef_63_envp_411_salloc" to %"$$fundef_63_env_186"* + %"$$fundef_63_env_voidp_413" = bitcast %"$$fundef_63_env_186"* %"$$fundef_63_envp_411" to i8* + %"$$fundef_63_cloval_414" = insertvalue { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)* bitcast ({ %TName_Bool* (i8*, %TName_List_String*)*, i8* } (%"$$fundef_63_env_186"*, %TName_List_String*)* @"$fundef_63" to { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_63_env_voidp_413", 1 + %"$$fundef_63_env_equal_415" = getelementptr inbounds %"$$fundef_63_env_186", %"$$fundef_63_env_186"* %"$$fundef_63_envp_411", i32 0, i32 0 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %1, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %"$$fundef_63_env_equal_415", align 8 + %"$$fundef_63_env_list_foldk_416" = getelementptr inbounds %"$$fundef_63_env_186", %"$$fundef_63_env_186"* %"$$fundef_63_envp_411", i32 0, i32 1 + %"$list_foldk_417" = load { i8*, i8* }*, { i8*, i8* }** %list_foldk, align 8 + store { i8*, i8* }* %"$list_foldk_417", { i8*, i8* }** %"$$fundef_63_env_list_foldk_416", align 8 + store { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$fundef_63_cloval_414", { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$retval_62", align 8 + %"$$retval_62_418" = load { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$retval_62", align 8 + ret { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$retval_62_418" +} + +define internal { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } @"$fundef_59"(%"$$fundef_59_env_188"* %0) { +entry: + %"$$fundef_59_env_list_foldk_390" = getelementptr inbounds %"$$fundef_59_env_188", %"$$fundef_59_env_188"* %0, i32 0, i32 0 + %"$list_foldk_envload_391" = load { i8*, i8* }*, { i8*, i8* }** %"$$fundef_59_env_list_foldk_390", align 8 + %list_foldk = alloca { i8*, i8* }*, align 8 + store { i8*, i8* }* %"$list_foldk_envload_391", { i8*, i8* }** %list_foldk, align 8 + %"$retval_60" = alloca { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }, align 8 + %"$gasrem_392" = load i64, i64* @_gasrem, align 8 + %"$gascmp_393" = icmp ugt i64 1, %"$gasrem_392" + br i1 %"$gascmp_393", label %"$out_of_gas_394", label %"$have_gas_395" + +"$out_of_gas_394": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_395" + +"$have_gas_395": ; preds = %"$out_of_gas_394", %entry + %"$consume_396" = sub i64 %"$gasrem_392", 1 + store i64 %"$consume_396", i64* @_gasrem, align 8 + %"$$fundef_61_envp_397_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_61_envp_397_salloc" = call i8* @_salloc(i8* %"$$fundef_61_envp_397_load", i64 8) + %"$$fundef_61_envp_397" = bitcast i8* %"$$fundef_61_envp_397_salloc" to %"$$fundef_61_env_187"* + %"$$fundef_61_env_voidp_399" = bitcast %"$$fundef_61_env_187"* %"$$fundef_61_envp_397" to i8* + %"$$fundef_61_cloval_400" = insertvalue { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })* bitcast ({ { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (%"$$fundef_61_env_187"*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })* @"$fundef_61" to { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*), i8* undef }, i8* %"$$fundef_61_env_voidp_399", 1 + %"$$fundef_61_env_list_foldk_401" = getelementptr inbounds %"$$fundef_61_env_187", %"$$fundef_61_env_187"* %"$$fundef_61_envp_397", i32 0, i32 0 + %"$list_foldk_402" = load { i8*, i8* }*, { i8*, i8* }** %list_foldk, align 8 + store { i8*, i8* }* %"$list_foldk_402", { i8*, i8* }** %"$$fundef_61_env_list_foldk_401", align 8 + store { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } %"$$fundef_61_cloval_400", { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }* %"$retval_60", align 8 + %"$$retval_60_403" = load { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }, { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }* %"$retval_60", align 8 + ret { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } %"$$retval_60_403" +} + +define internal %TName_Option_String* @"$fundef_75"(%"$$fundef_75_env_189"* %0, %TName_List_String* %1) { +entry: + %"$retval_76" = alloca %TName_Option_String*, align 8 + %"$gasrem_354" = load i64, i64* @_gasrem, align 8 + %"$gascmp_355" = icmp ugt i64 2, %"$gasrem_354" + br i1 %"$gascmp_355", label %"$out_of_gas_356", label %"$have_gas_357" + +"$out_of_gas_356": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_357" + +"$have_gas_357": ; preds = %"$out_of_gas_356", %entry + %"$consume_358" = sub i64 %"$gasrem_354", 2 + store i64 %"$consume_358", i64* @_gasrem, align 8 + %"$l_tag_360" = getelementptr inbounds %TName_List_String, %TName_List_String* %1, i32 0, i32 0 + %"$l_tag_361" = load i8, i8* %"$l_tag_360", align 1 + switch i8 %"$l_tag_361", label %"$empty_default_362" [ + i8 0, label %"$Cons_363" + i8 1, label %"$Nil_379" + ] + +"$Cons_363": ; preds = %"$have_gas_357" + %"$l_364" = bitcast %TName_List_String* %1 to %CName_Cons_String* + %"$h_gep_365" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$l_364", i32 0, i32 1 + %"$h_load_366" = load %String, %String* %"$h_gep_365", align 8 + %h = alloca %String, align 8 + store %String %"$h_load_366", %String* %h, align 8 + %"$t_gep_367" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$l_364", i32 0, i32 2 + %"$t_load_368" = load %TName_List_String*, %TName_List_String** %"$t_gep_367", align 8 + %t = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$t_load_368", %TName_List_String** %t, align 8 + %"$gasrem_369" = load i64, i64* @_gasrem, align 8 + %"$gascmp_370" = icmp ugt i64 1, %"$gasrem_369" + br i1 %"$gascmp_370", label %"$out_of_gas_371", label %"$have_gas_372" + +"$out_of_gas_371": ; preds = %"$Cons_363" + call void @_out_of_gas() + br label %"$have_gas_372" + +"$have_gas_372": ; preds = %"$out_of_gas_371", %"$Cons_363" + %"$consume_373" = sub i64 %"$gasrem_369", 1 + store i64 %"$consume_373", i64* @_gasrem, align 8 + %"$h_374" = load %String, %String* %h, align 8 + %"$adtval_375_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_375_salloc" = call i8* @_salloc(i8* %"$adtval_375_load", i64 17) + %"$adtval_375" = bitcast i8* %"$adtval_375_salloc" to %CName_Some_String* + %"$adtgep_376" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$adtval_375", i32 0, i32 0 + store i8 0, i8* %"$adtgep_376", align 1 + %"$adtgep_377" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$adtval_375", i32 0, i32 1 + store %String %"$h_374", %String* %"$adtgep_377", align 8 + %"$adtptr_378" = bitcast %CName_Some_String* %"$adtval_375" to %TName_Option_String* + store %TName_Option_String* %"$adtptr_378", %TName_Option_String** %"$retval_76", align 8 + br label %"$matchsucc_359" + +"$Nil_379": ; preds = %"$have_gas_357" + %"$l_380" = bitcast %TName_List_String* %1 to %CName_Nil_String* + %"$gasrem_381" = load i64, i64* @_gasrem, align 8 + %"$gascmp_382" = icmp ugt i64 1, %"$gasrem_381" + br i1 %"$gascmp_382", label %"$out_of_gas_383", label %"$have_gas_384" + +"$out_of_gas_383": ; preds = %"$Nil_379" + call void @_out_of_gas() + br label %"$have_gas_384" + +"$have_gas_384": ; preds = %"$out_of_gas_383", %"$Nil_379" + %"$consume_385" = sub i64 %"$gasrem_381", 1 + store i64 %"$consume_385", i64* @_gasrem, align 8 + %"$adtval_386_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_386_salloc" = call i8* @_salloc(i8* %"$adtval_386_load", i64 1) + %"$adtval_386" = bitcast i8* %"$adtval_386_salloc" to %CName_None_String* + %"$adtgep_387" = getelementptr inbounds %CName_None_String, %CName_None_String* %"$adtval_386", i32 0, i32 0 + store i8 1, i8* %"$adtgep_387", align 1 + %"$adtptr_388" = bitcast %CName_None_String* %"$adtval_386" to %TName_Option_String* + store %TName_Option_String* %"$adtptr_388", %TName_Option_String** %"$retval_76", align 8 + br label %"$matchsucc_359" + +"$empty_default_362": ; preds = %"$have_gas_357" + br label %"$matchsucc_359" + +"$matchsucc_359": ; preds = %"$have_gas_384", %"$have_gas_372", %"$empty_default_362" + %"$$retval_76_389" = load %TName_Option_String*, %TName_Option_String** %"$retval_76", align 8 + ret %TName_Option_String* %"$$retval_76_389" +} + +define internal { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } @"$fundef_73"(%"$$fundef_73_env_190"* %0) { +entry: + %"$retval_74" = alloca { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_345" = load i64, i64* @_gasrem, align 8 + %"$gascmp_346" = icmp ugt i64 1, %"$gasrem_345" + br i1 %"$gascmp_346", label %"$out_of_gas_347", label %"$have_gas_348" + +"$out_of_gas_347": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_348" + +"$have_gas_348": ; preds = %"$out_of_gas_347", %entry + %"$consume_349" = sub i64 %"$gasrem_345", 1 + store i64 %"$consume_349", i64* @_gasrem, align 8 + store { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } { %TName_Option_String* (i8*, %TName_List_String*)* bitcast (%TName_Option_String* (%"$$fundef_75_env_189"*, %TName_List_String*)* @"$fundef_75" to %TName_Option_String* (i8*, %TName_List_String*)*), i8* null }, { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }* %"$retval_74", align 8 + %"$$retval_74_353" = load { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }, { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }* %"$retval_74", align 8 + ret { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } %"$$retval_74_353" +} + +define internal %TName_List_String* @"$fundef_57"(%"$$fundef_57_env_191"* %0, %TName_List_String* %1) { +entry: + %"$$fundef_57_env_g_325" = getelementptr inbounds %"$$fundef_57_env_191", %"$$fundef_57_env_191"* %0, i32 0, i32 0 + %"$g_envload_326" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_57_env_g_325", align 8 + %g = alloca { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_envload_326", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + %"$$fundef_57_env_t_327" = getelementptr inbounds %"$$fundef_57_env_191", %"$$fundef_57_env_191"* %0, i32 0, i32 1 + %"$t_envload_328" = load %TName_List_String*, %TName_List_String** %"$$fundef_57_env_t_327", align 8 + %t = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$t_envload_328", %TName_List_String** %t, align 8 + %"$retval_58" = alloca %TName_List_String*, align 8 + %"$gasrem_329" = load i64, i64* @_gasrem, align 8 + %"$gascmp_330" = icmp ugt i64 1, %"$gasrem_329" + br i1 %"$gascmp_330", label %"$out_of_gas_331", label %"$have_gas_332" + +"$out_of_gas_331": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_332" + +"$have_gas_332": ; preds = %"$out_of_gas_331", %entry + %"$consume_333" = sub i64 %"$gasrem_329", 1 + store i64 %"$consume_333", i64* @_gasrem, align 8 + %"$g_3" = alloca { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$g_334" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + %"$g_fptr_335" = extractvalue { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_334", 0 + %"$g_envptr_336" = extractvalue { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_334", 1 + %"$g_call_337" = call { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$g_fptr_335"(i8* %"$g_envptr_336", %TName_List_String* %1) + store { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$g_call_337", { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %"$g_3", align 8 + %"$g_4" = alloca %TName_List_String*, align 8 + %"$$g_3_338" = load { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %"$g_3", align 8 + %"$$g_3_fptr_339" = extractvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$g_3_338", 0 + %"$$g_3_envptr_340" = extractvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$g_3_338", 1 + %"$t_341" = load %TName_List_String*, %TName_List_String** %t, align 8 + %"$$g_3_call_342" = call %TName_List_String* %"$$g_3_fptr_339"(i8* %"$$g_3_envptr_340", %TName_List_String* %"$t_341") + store %TName_List_String* %"$$g_3_call_342", %TName_List_String** %"$g_4", align 8 + %"$$g_4_343" = load %TName_List_String*, %TName_List_String** %"$g_4", align 8 + store %TName_List_String* %"$$g_4_343", %TName_List_String** %"$retval_58", align 8 + %"$$retval_58_344" = load %TName_List_String*, %TName_List_String** %"$retval_58", align 8 + ret %TName_List_String* %"$$retval_58_344" +} + +define internal %TName_List_String* @"$fundef_55"(%"$$fundef_55_env_192"* %0, %TName_List_String* %1) { +entry: + %"$$fundef_55_env_f_256" = getelementptr inbounds %"$$fundef_55_env_192", %"$$fundef_55_env_192"* %0, i32 0, i32 0 + %"$f_envload_257" = load { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_55_env_f_256", align 8 + %f = alloca { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + store { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$f_envload_257", { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %f, align 8 + %"$$fundef_55_env_g_258" = getelementptr inbounds %"$$fundef_55_env_192", %"$$fundef_55_env_192"* %0, i32 0, i32 1 + %"$g_envload_259" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_55_env_g_258", align 8 + %g = alloca { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_envload_259", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + %"$$fundef_55_env_z_260" = getelementptr inbounds %"$$fundef_55_env_192", %"$$fundef_55_env_192"* %0, i32 0, i32 2 + %"$z_envload_261" = load %TName_List_String*, %TName_List_String** %"$$fundef_55_env_z_260", align 8 + %z = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$z_envload_261", %TName_List_String** %z, align 8 + %"$retval_56" = alloca %TName_List_String*, align 8 + %"$gasrem_262" = load i64, i64* @_gasrem, align 8 + %"$gascmp_263" = icmp ugt i64 2, %"$gasrem_262" + br i1 %"$gascmp_263", label %"$out_of_gas_264", label %"$have_gas_265" + +"$out_of_gas_264": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_265" + +"$have_gas_265": ; preds = %"$out_of_gas_264", %entry + %"$consume_266" = sub i64 %"$gasrem_262", 2 + store i64 %"$consume_266", i64* @_gasrem, align 8 + %"$l_tag_268" = getelementptr inbounds %TName_List_String, %TName_List_String* %1, i32 0, i32 0 + %"$l_tag_269" = load i8, i8* %"$l_tag_268", align 1 + switch i8 %"$l_tag_269", label %"$empty_default_270" [ + i8 0, label %"$Cons_271" + i8 1, label %"$Nil_316" + ] + +"$Cons_271": ; preds = %"$have_gas_265" + %"$l_272" = bitcast %TName_List_String* %1 to %CName_Cons_String* + %"$h_gep_273" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$l_272", i32 0, i32 1 + %"$h_load_274" = load %String, %String* %"$h_gep_273", align 8 + %h = alloca %String, align 8 + store %String %"$h_load_274", %String* %h, align 8 + %"$t_gep_275" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$l_272", i32 0, i32 2 + %"$t_load_276" = load %TName_List_String*, %TName_List_String** %"$t_gep_275", align 8 + %t = alloca %TName_List_String*, align 8 + store %TName_List_String* %"$t_load_276", %TName_List_String** %t, align 8 + %"$gasrem_277" = load i64, i64* @_gasrem, align 8 + %"$gascmp_278" = icmp ugt i64 1, %"$gasrem_277" + br i1 %"$gascmp_278", label %"$out_of_gas_279", label %"$have_gas_280" + +"$out_of_gas_279": ; preds = %"$Cons_271" + call void @_out_of_gas() + br label %"$have_gas_280" + +"$have_gas_280": ; preds = %"$out_of_gas_279", %"$Cons_271" + %"$consume_281" = sub i64 %"$gasrem_277", 1 + store i64 %"$consume_281", i64* @_gasrem, align 8 + %partial = alloca { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_282" = load i64, i64* @_gasrem, align 8 + %"$gascmp_283" = icmp ugt i64 1, %"$gasrem_282" + br i1 %"$gascmp_283", label %"$out_of_gas_284", label %"$have_gas_285" + +"$out_of_gas_284": ; preds = %"$have_gas_280" + call void @_out_of_gas() + br label %"$have_gas_285" + +"$have_gas_285": ; preds = %"$out_of_gas_284", %"$have_gas_280" + %"$consume_286" = sub i64 %"$gasrem_282", 1 + store i64 %"$consume_286", i64* @_gasrem, align 8 + %"$$fundef_57_envp_287_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_57_envp_287_salloc" = call i8* @_salloc(i8* %"$$fundef_57_envp_287_load", i64 24) + %"$$fundef_57_envp_287" = bitcast i8* %"$$fundef_57_envp_287_salloc" to %"$$fundef_57_env_191"* + %"$$fundef_57_env_voidp_289" = bitcast %"$$fundef_57_env_191"* %"$$fundef_57_envp_287" to i8* + %"$$fundef_57_cloval_290" = insertvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } { %TName_List_String* (i8*, %TName_List_String*)* bitcast (%TName_List_String* (%"$$fundef_57_env_191"*, %TName_List_String*)* @"$fundef_57" to %TName_List_String* (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_57_env_voidp_289", 1 + %"$$fundef_57_env_g_291" = getelementptr inbounds %"$$fundef_57_env_191", %"$$fundef_57_env_191"* %"$$fundef_57_envp_287", i32 0, i32 0 + %"$g_292" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_292", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_57_env_g_291", align 8 + %"$$fundef_57_env_t_293" = getelementptr inbounds %"$$fundef_57_env_191", %"$$fundef_57_env_191"* %"$$fundef_57_envp_287", i32 0, i32 1 + %"$t_294" = load %TName_List_String*, %TName_List_String** %t, align 8 + store %TName_List_String* %"$t_294", %TName_List_String** %"$$fundef_57_env_t_293", align 8 + store { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$fundef_57_cloval_290", { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %partial, align 8 + %"$gasrem_295" = load i64, i64* @_gasrem, align 8 + %"$gascmp_296" = icmp ugt i64 1, %"$gasrem_295" + br i1 %"$gascmp_296", label %"$out_of_gas_297", label %"$have_gas_298" + +"$out_of_gas_297": ; preds = %"$have_gas_285" + call void @_out_of_gas() + br label %"$have_gas_298" + +"$have_gas_298": ; preds = %"$out_of_gas_297", %"$have_gas_285" + %"$consume_299" = sub i64 %"$gasrem_295", 1 + store i64 %"$consume_299", i64* @_gasrem, align 8 + %"$f_5" = alloca { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }, align 8 + %"$f_300" = load { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %f, align 8 + %"$f_fptr_301" = extractvalue { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$f_300", 0 + %"$f_envptr_302" = extractvalue { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$f_300", 1 + %"$z_303" = load %TName_List_String*, %TName_List_String** %z, align 8 + %"$f_call_304" = call { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } %"$f_fptr_301"(i8* %"$f_envptr_302", %TName_List_String* %"$z_303") + store { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } %"$f_call_304", { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }* %"$f_5", align 8 + %"$f_6" = alloca { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }, align 8 + %"$$f_5_305" = load { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }, { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* }* %"$f_5", align 8 + %"$$f_5_fptr_306" = extractvalue { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } %"$$f_5_305", 0 + %"$$f_5_envptr_307" = extractvalue { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } %"$$f_5_305", 1 + %"$h_308" = load %String, %String* %h, align 8 + %"$$f_5_call_309" = call { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$f_5_fptr_306"(i8* %"$$f_5_envptr_307", %String %"$h_308") + store { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$f_5_call_309", { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }* %"$f_6", align 8 + %"$f_7" = alloca %TName_List_String*, align 8 + %"$$f_6_310" = load { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }, { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* }* %"$f_6", align 8 + %"$$f_6_fptr_311" = extractvalue { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$f_6_310", 0 + %"$$f_6_envptr_312" = extractvalue { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$f_6_310", 1 + %"$partial_313" = load { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %partial, align 8 + %"$$f_6_call_314" = call %TName_List_String* %"$$f_6_fptr_311"(i8* %"$$f_6_envptr_312", { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$partial_313") + store %TName_List_String* %"$$f_6_call_314", %TName_List_String** %"$f_7", align 8 + %"$$f_7_315" = load %TName_List_String*, %TName_List_String** %"$f_7", align 8 + store %TName_List_String* %"$$f_7_315", %TName_List_String** %"$retval_56", align 8 + br label %"$matchsucc_267" + +"$Nil_316": ; preds = %"$have_gas_265" + %"$l_317" = bitcast %TName_List_String* %1 to %CName_Nil_String* + %"$gasrem_318" = load i64, i64* @_gasrem, align 8 + %"$gascmp_319" = icmp ugt i64 1, %"$gasrem_318" + br i1 %"$gascmp_319", label %"$out_of_gas_320", label %"$have_gas_321" + +"$out_of_gas_320": ; preds = %"$Nil_316" + call void @_out_of_gas() + br label %"$have_gas_321" + +"$have_gas_321": ; preds = %"$out_of_gas_320", %"$Nil_316" + %"$consume_322" = sub i64 %"$gasrem_318", 1 + store i64 %"$consume_322", i64* @_gasrem, align 8 + %"$z_323" = load %TName_List_String*, %TName_List_String** %z, align 8 + store %TName_List_String* %"$z_323", %TName_List_String** %"$retval_56", align 8 + br label %"$matchsucc_267" + +"$empty_default_270": ; preds = %"$have_gas_265" + br label %"$matchsucc_267" + +"$matchsucc_267": ; preds = %"$have_gas_321", %"$have_gas_298", %"$empty_default_270" + %"$$retval_56_324" = load %TName_List_String*, %TName_List_String** %"$retval_56", align 8 + ret %TName_List_String* %"$$retval_56_324" +} + +define internal { %TName_List_String* (i8*, %TName_List_String*)*, i8* } @"$fundef_53"(%"$$fundef_53_env_193"* %0, %TName_List_String* %1) { +entry: + %"$$fundef_53_env_f_237" = getelementptr inbounds %"$$fundef_53_env_193", %"$$fundef_53_env_193"* %0, i32 0, i32 0 + %"$f_envload_238" = load { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_53_env_f_237", align 8 + %f = alloca { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + store { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$f_envload_238", { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %f, align 8 + %"$$fundef_53_env_g_239" = getelementptr inbounds %"$$fundef_53_env_193", %"$$fundef_53_env_193"* %0, i32 0, i32 1 + %"$g_envload_240" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_53_env_g_239", align 8 + %g = alloca { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_envload_240", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + %"$retval_54" = alloca { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_241" = load i64, i64* @_gasrem, align 8 + %"$gascmp_242" = icmp ugt i64 1, %"$gasrem_241" + br i1 %"$gascmp_242", label %"$out_of_gas_243", label %"$have_gas_244" + +"$out_of_gas_243": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_244" + +"$have_gas_244": ; preds = %"$out_of_gas_243", %entry + %"$consume_245" = sub i64 %"$gasrem_241", 1 + store i64 %"$consume_245", i64* @_gasrem, align 8 + %"$$fundef_55_envp_246_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_55_envp_246_salloc" = call i8* @_salloc(i8* %"$$fundef_55_envp_246_load", i64 40) + %"$$fundef_55_envp_246" = bitcast i8* %"$$fundef_55_envp_246_salloc" to %"$$fundef_55_env_192"* + %"$$fundef_55_env_voidp_248" = bitcast %"$$fundef_55_env_192"* %"$$fundef_55_envp_246" to i8* + %"$$fundef_55_cloval_249" = insertvalue { %TName_List_String* (i8*, %TName_List_String*)*, i8* } { %TName_List_String* (i8*, %TName_List_String*)* bitcast (%TName_List_String* (%"$$fundef_55_env_192"*, %TName_List_String*)* @"$fundef_55" to %TName_List_String* (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_55_env_voidp_248", 1 + %"$$fundef_55_env_f_250" = getelementptr inbounds %"$$fundef_55_env_192", %"$$fundef_55_env_192"* %"$$fundef_55_envp_246", i32 0, i32 0 + %"$f_251" = load { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %f, align 8 + store { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$f_251", { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_55_env_f_250", align 8 + %"$$fundef_55_env_g_252" = getelementptr inbounds %"$$fundef_55_env_192", %"$$fundef_55_env_192"* %"$$fundef_55_envp_246", i32 0, i32 1 + %"$g_253" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_253", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_55_env_g_252", align 8 + %"$$fundef_55_env_z_254" = getelementptr inbounds %"$$fundef_55_env_192", %"$$fundef_55_env_192"* %"$$fundef_55_envp_246", i32 0, i32 2 + store %TName_List_String* %1, %TName_List_String** %"$$fundef_55_env_z_254", align 8 + store { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$fundef_55_cloval_249", { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %"$retval_54", align 8 + %"$$retval_54_255" = load { %TName_List_String* (i8*, %TName_List_String*)*, i8* }, { %TName_List_String* (i8*, %TName_List_String*)*, i8* }* %"$retval_54", align 8 + ret { %TName_List_String* (i8*, %TName_List_String*)*, i8* } %"$$retval_54_255" +} + +define internal { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } @"$fundef_51"(%"$$fundef_51_env_194"* %0, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %1) { +entry: + %"$retval_52" = alloca { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + %"$gasrem_218" = load i64, i64* @_gasrem, align 8 + %"$gascmp_219" = icmp ugt i64 1, %"$gasrem_218" + br i1 %"$gascmp_219", label %"$out_of_gas_220", label %"$have_gas_221" + +"$out_of_gas_220": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_221" + +"$have_gas_221": ; preds = %"$out_of_gas_220", %entry + %"$consume_222" = sub i64 %"$gasrem_218", 1 + store i64 %"$consume_222", i64* @_gasrem, align 8 + %"$gasrem_223" = load i64, i64* @_gasrem, align 8 + %"$gascmp_224" = icmp ugt i64 1, %"$gasrem_223" + br i1 %"$gascmp_224", label %"$out_of_gas_225", label %"$have_gas_226" + +"$out_of_gas_225": ; preds = %"$have_gas_221" + call void @_out_of_gas() + br label %"$have_gas_226" + +"$have_gas_226": ; preds = %"$out_of_gas_225", %"$have_gas_221" + %"$consume_227" = sub i64 %"$gasrem_223", 1 + store i64 %"$consume_227", i64* @_gasrem, align 8 + %"$$fundef_53_envp_228_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_53_envp_228_salloc" = call i8* @_salloc(i8* %"$$fundef_53_envp_228_load", i64 32) + %"$$fundef_53_envp_228" = bitcast i8* %"$$fundef_53_envp_228_salloc" to %"$$fundef_53_env_193"* + %"$$fundef_53_env_voidp_230" = bitcast %"$$fundef_53_env_193"* %"$$fundef_53_envp_228" to i8* + %"$$fundef_53_cloval_231" = insertvalue { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)* bitcast ({ %TName_List_String* (i8*, %TName_List_String*)*, i8* } (%"$$fundef_53_env_193"*, %TName_List_String*)* @"$fundef_53" to { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*), i8* undef }, i8* %"$$fundef_53_env_voidp_230", 1 + %g = alloca { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$fundef_53_cloval_231", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + %"$$fundef_53_env_f_232" = getelementptr inbounds %"$$fundef_53_env_193", %"$$fundef_53_env_193"* %"$$fundef_53_envp_228", i32 0, i32 0 + store { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* } %1, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_53_env_f_232", align 8 + %"$$fundef_53_env_g_233" = getelementptr inbounds %"$$fundef_53_env_193", %"$$fundef_53_env_193"* %"$$fundef_53_envp_228", i32 0, i32 1 + %"$g_234" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_234", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$$fundef_53_env_g_233", align 8 + %"$g_235" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %g, align 8 + store { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$g_235", { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$retval_52", align 8 + %"$$retval_52_236" = load { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$retval_52", align 8 + ret { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$retval_52_236" +} + +define internal { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } @"$fundef_49"(%"$$fundef_49_env_195"* %0) { +entry: + %"$retval_50" = alloca { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }, align 8 + %"$gasrem_209" = load i64, i64* @_gasrem, align 8 + %"$gascmp_210" = icmp ugt i64 1, %"$gasrem_209" + br i1 %"$gascmp_210", label %"$out_of_gas_211", label %"$have_gas_212" + +"$out_of_gas_211": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_212" + +"$have_gas_212": ; preds = %"$out_of_gas_211", %entry + %"$consume_213" = sub i64 %"$gasrem_209", 1 + store i64 %"$consume_213", i64* @_gasrem, align 8 + store { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })* bitcast ({ { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (%"$$fundef_51_env_194"*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })* @"$fundef_51" to { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*), i8* null }, { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }* %"$retval_50", align 8 + %"$$retval_50_217" = load { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }, { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* }* %"$retval_50", align 8 + ret { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } %"$$retval_50_217" +} + +define internal { i8*, i8* }* @"$fundef_47"(%"$$fundef_47_env_196"* %0) { +entry: + %"$retval_48" = alloca { i8*, i8* }*, align 8 + %"$gasrem_197" = load i64, i64* @_gasrem, align 8 + %"$gascmp_198" = icmp ugt i64 1, %"$gasrem_197" + br i1 %"$gascmp_198", label %"$out_of_gas_199", label %"$have_gas_200" + +"$out_of_gas_199": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_200" + +"$have_gas_200": ; preds = %"$out_of_gas_199", %entry + %"$consume_201" = sub i64 %"$gasrem_197", 1 + store i64 %"$consume_201", i64* @_gasrem, align 8 + %"$dyndisp_table_205_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$dyndisp_table_205_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_205_salloc_load", i64 32) + %"$dyndisp_table_205_salloc" = bitcast i8* %"$dyndisp_table_205_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_205" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_205_salloc" to { i8*, i8* }* + %"$dyndisp_gep_206" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_205", i32 1 + %"$dyndisp_pcast_207" = bitcast { i8*, i8* }* %"$dyndisp_gep_206" to { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (%"$$fundef_49_env_195"*)* @"$fundef_49" to { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*), i8* null }, { { { { %TName_List_String* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { { %TName_List_String* (i8*, { %TName_List_String* (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*, %String)*, i8* } (i8*, %TName_List_String*)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_207", align 8 + store { i8*, i8* }* %"$dyndisp_table_205", { i8*, i8* }** %"$retval_48", align 8 + %"$$retval_48_208" = load { i8*, i8* }*, { i8*, i8* }** %"$retval_48", align 8 + ret { i8*, i8* }* %"$$retval_48_208" +} + +declare void @_out_of_gas() + +declare i8* @_salloc(i8*, i64) + +declare %TName_Bool* @_eq_String(i8*, %String, %String) + +define void @_init_libs() { +entry: + %"$gasrem_714" = load i64, i64* @_gasrem, align 8 + %"$gascmp_715" = icmp ugt i64 1, %"$gasrem_714" + br i1 %"$gascmp_715", label %"$out_of_gas_716", label %"$have_gas_717" + +"$out_of_gas_716": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_717" + +"$have_gas_717": ; preds = %"$out_of_gas_716", %entry + %"$consume_718" = sub i64 %"$gasrem_714", 1 + store i64 %"$consume_718", i64* @_gasrem, align 8 + %"$dyndisp_table_722_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$dyndisp_table_722_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_722_salloc_load", i64 32) + %"$dyndisp_table_722_salloc" = bitcast i8* %"$dyndisp_table_722_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_722" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_722_salloc" to { i8*, i8* }* + %"$dyndisp_gep_723" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_722", i32 0 + %"$dyndisp_pcast_724" = bitcast { i8*, i8* }* %"$dyndisp_gep_723" to { { i8*, i8* }* (i8*)*, i8* }* + store { { i8*, i8* }* (i8*)*, i8* } { { i8*, i8* }* (i8*)* bitcast ({ i8*, i8* }* (%"$$fundef_47_env_196"*)* @"$fundef_47" to { i8*, i8* }* (i8*)*), i8* null }, { { i8*, i8* }* (i8*)*, i8* }* %"$dyndisp_pcast_724", align 8 + store { i8*, i8* }* %"$dyndisp_table_722", { i8*, i8* }** @list_foldk, align 8 + %"$gasrem_725" = load i64, i64* @_gasrem, align 8 + %"$gascmp_726" = icmp ugt i64 1, %"$gasrem_725" + br i1 %"$gascmp_726", label %"$out_of_gas_727", label %"$have_gas_728" + +"$out_of_gas_727": ; preds = %"$have_gas_717" + call void @_out_of_gas() + br label %"$have_gas_728" + +"$have_gas_728": ; preds = %"$out_of_gas_727", %"$have_gas_717" + %"$consume_729" = sub i64 %"$gasrem_725", 1 + store i64 %"$consume_729", i64* @_gasrem, align 8 + %"$dyndisp_table_733_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$dyndisp_table_733_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_733_salloc_load", i64 32) + %"$dyndisp_table_733_salloc" = bitcast i8* %"$dyndisp_table_733_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_733" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_733_salloc" to { i8*, i8* }* + %"$dyndisp_gep_734" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_733", i32 0 + %"$dyndisp_pcast_735" = bitcast { i8*, i8* }* %"$dyndisp_gep_734" to { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* + store { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)* bitcast ({ %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (%"$$fundef_73_env_190"*)* @"$fundef_73" to { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*), i8* null }, { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_735", align 8 + store { i8*, i8* }* %"$dyndisp_table_733", { i8*, i8* }** @ListUtils.list_head, align 8 + %"$gasrem_736" = load i64, i64* @_gasrem, align 8 + %"$gascmp_737" = icmp ugt i64 1, %"$gasrem_736" + br i1 %"$gascmp_737", label %"$out_of_gas_738", label %"$have_gas_739" + +"$out_of_gas_738": ; preds = %"$have_gas_728" + call void @_out_of_gas() + br label %"$have_gas_739" + +"$have_gas_739": ; preds = %"$out_of_gas_738", %"$have_gas_728" + %"$consume_740" = sub i64 %"$gasrem_736", 1 + store i64 %"$consume_740", i64* @_gasrem, align 8 + %"$$fundef_59_envp_741_load" = load i8*, i8** @_execptr, align 8 + %"$$fundef_59_envp_741_salloc" = call i8* @_salloc(i8* %"$$fundef_59_envp_741_load", i64 8) + %"$$fundef_59_envp_741" = bitcast i8* %"$$fundef_59_envp_741_salloc" to %"$$fundef_59_env_188"* + %"$$fundef_59_env_voidp_743" = bitcast %"$$fundef_59_env_188"* %"$$fundef_59_envp_741" to i8* + %"$$fundef_59_cloval_744" = insertvalue { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* } { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)* bitcast ({ { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (%"$$fundef_59_env_188"*)* @"$fundef_59" to { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*), i8* undef }, i8* %"$$fundef_59_env_voidp_743", 1 + %"$$fundef_59_env_list_foldk_745" = getelementptr inbounds %"$$fundef_59_env_188", %"$$fundef_59_env_188"* %"$$fundef_59_envp_741", i32 0, i32 0 + %"$list_foldk_746" = load { i8*, i8* }*, { i8*, i8* }** @list_foldk, align 8 + store { i8*, i8* }* %"$list_foldk_746", { i8*, i8* }** %"$$fundef_59_env_list_foldk_745", align 8 + %"$dyndisp_table_747_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$dyndisp_table_747_salloc_salloc" = call i8* @_salloc(i8* %"$dyndisp_table_747_salloc_load", i64 32) + %"$dyndisp_table_747_salloc" = bitcast i8* %"$dyndisp_table_747_salloc_salloc" to [2 x { i8*, i8* }]* + %"$dyndisp_table_747" = bitcast [2 x { i8*, i8* }]* %"$dyndisp_table_747_salloc" to { i8*, i8* }* + %"$dyndisp_gep_748" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$dyndisp_table_747", i32 0 + %"$dyndisp_pcast_749" = bitcast { i8*, i8* }* %"$dyndisp_gep_748" to { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* }* + store { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* } %"$$fundef_59_cloval_744", { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* }* %"$dyndisp_pcast_749", align 8 + store { i8*, i8* }* %"$dyndisp_table_747", { i8*, i8* }** @ListUtils.list_eq, align 8 + %"$gasrem_750" = load i64, i64* @_gasrem, align 8 + %"$gascmp_751" = icmp ugt i64 1, %"$gasrem_750" + br i1 %"$gascmp_751", label %"$out_of_gas_752", label %"$have_gas_753" + +"$out_of_gas_752": ; preds = %"$have_gas_739" + call void @_out_of_gas() + br label %"$have_gas_753" + +"$have_gas_753": ; preds = %"$out_of_gas_752", %"$have_gas_739" + %"$consume_754" = sub i64 %"$gasrem_750", 1 + store i64 %"$consume_754", i64* @_gasrem, align 8 + store { %TName_List_Message* (i8*, i8*)*, i8* } { %TName_List_Message* (i8*, i8*)* bitcast (%TName_List_Message* (%"$$fundef_81_env_181"*, i8*)* @"$fundef_81" to %TName_List_Message* (i8*, i8*)*), i8* null }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$gasrem_758" = load i64, i64* @_gasrem, align 8 + %"$gascmp_759" = icmp ugt i64 1, %"$gasrem_758" + br i1 %"$gascmp_759", label %"$out_of_gas_760", label %"$have_gas_761" + +"$out_of_gas_760": ; preds = %"$have_gas_753" + call void @_out_of_gas() + br label %"$have_gas_761" + +"$have_gas_761": ; preds = %"$out_of_gas_760", %"$have_gas_753" + %"$consume_762" = sub i64 %"$gasrem_758", 1 + store i64 %"$consume_762", i64* @_gasrem, align 8 + %"$ListUtils.list_head_763" = load { i8*, i8* }*, { i8*, i8* }** @ListUtils.list_head, align 8 + %"$ListUtils.list_head_764" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$ListUtils.list_head_763", i32 0 + %"$ListUtils.list_head_765" = bitcast { i8*, i8* }* %"$ListUtils.list_head_764" to { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* + %"$ListUtils.list_head_766" = load { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }, { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* }* %"$ListUtils.list_head_765", align 8 + %"$ListUtils.list_head_fptr_767" = extractvalue { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$ListUtils.list_head_766", 0 + %"$ListUtils.list_head_envptr_768" = extractvalue { { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } (i8*)*, i8* } %"$ListUtils.list_head_766", 1 + %"$ListUtils.list_head_call_769" = call { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } %"$ListUtils.list_head_fptr_767"(i8* %"$ListUtils.list_head_envptr_768") + store { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } %"$ListUtils.list_head_call_769", { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }* @accounting_tests.list_head_string, align 8 + %"$gasrem_770" = load i64, i64* @_gasrem, align 8 + %"$gascmp_771" = icmp ugt i64 1, %"$gasrem_770" + br i1 %"$gascmp_771", label %"$out_of_gas_772", label %"$have_gas_773" + +"$out_of_gas_772": ; preds = %"$have_gas_761" + call void @_out_of_gas() + br label %"$have_gas_773" + +"$have_gas_773": ; preds = %"$out_of_gas_772", %"$have_gas_761" + %"$consume_774" = sub i64 %"$gasrem_770", 1 + store i64 %"$consume_774", i64* @_gasrem, align 8 + %string_eq = alloca { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, align 8 + %"$gasrem_775" = load i64, i64* @_gasrem, align 8 + %"$gascmp_776" = icmp ugt i64 1, %"$gasrem_775" + br i1 %"$gascmp_776", label %"$out_of_gas_777", label %"$have_gas_778" + +"$out_of_gas_777": ; preds = %"$have_gas_773" + call void @_out_of_gas() + br label %"$have_gas_778" + +"$have_gas_778": ; preds = %"$out_of_gas_777", %"$have_gas_773" + %"$consume_779" = sub i64 %"$gasrem_775", 1 + store i64 %"$consume_779", i64* @_gasrem, align 8 + store { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)* bitcast ({ %TName_Bool* (i8*, %String)*, i8* } (%"$$fundef_77_env_180"*, %String)* @"$fundef_77" to { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*), i8* null }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %string_eq, align 8 + %"$gasrem_783" = load i64, i64* @_gasrem, align 8 + %"$gascmp_784" = icmp ugt i64 1, %"$gasrem_783" + br i1 %"$gascmp_784", label %"$out_of_gas_785", label %"$have_gas_786" + +"$out_of_gas_785": ; preds = %"$have_gas_778" + call void @_out_of_gas() + br label %"$have_gas_786" + +"$have_gas_786": ; preds = %"$out_of_gas_785", %"$have_gas_778" + %"$consume_787" = sub i64 %"$gasrem_783", 1 + store i64 %"$consume_787", i64* @_gasrem, align 8 + %list_eq_string = alloca { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }, align 8 + %"$gasrem_788" = load i64, i64* @_gasrem, align 8 + %"$gascmp_789" = icmp ugt i64 1, %"$gasrem_788" + br i1 %"$gascmp_789", label %"$out_of_gas_790", label %"$have_gas_791" + +"$out_of_gas_790": ; preds = %"$have_gas_786" + call void @_out_of_gas() + br label %"$have_gas_791" + +"$have_gas_791": ; preds = %"$out_of_gas_790", %"$have_gas_786" + %"$consume_792" = sub i64 %"$gasrem_788", 1 + store i64 %"$consume_792", i64* @_gasrem, align 8 + %"$ListUtils.list_eq_793" = load { i8*, i8* }*, { i8*, i8* }** @ListUtils.list_eq, align 8 + %"$ListUtils.list_eq_794" = getelementptr { i8*, i8* }, { i8*, i8* }* %"$ListUtils.list_eq_793", i32 0 + %"$ListUtils.list_eq_795" = bitcast { i8*, i8* }* %"$ListUtils.list_eq_794" to { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* }* + %"$ListUtils.list_eq_796" = load { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* }, { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* }* %"$ListUtils.list_eq_795", align 8 + %"$ListUtils.list_eq_fptr_797" = extractvalue { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* } %"$ListUtils.list_eq_796", 0 + %"$ListUtils.list_eq_envptr_798" = extractvalue { { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } (i8*)*, i8* } %"$ListUtils.list_eq_796", 1 + %"$ListUtils.list_eq_call_799" = call { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } %"$ListUtils.list_eq_fptr_797"(i8* %"$ListUtils.list_eq_envptr_798") + store { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } %"$ListUtils.list_eq_call_799", { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }* %list_eq_string, align 8 + %"$gasrem_800" = load i64, i64* @_gasrem, align 8 + %"$gascmp_801" = icmp ugt i64 1, %"$gasrem_800" + br i1 %"$gascmp_801", label %"$out_of_gas_802", label %"$have_gas_803" + +"$out_of_gas_802": ; preds = %"$have_gas_791" + call void @_out_of_gas() + br label %"$have_gas_803" + +"$have_gas_803": ; preds = %"$out_of_gas_802", %"$have_gas_791" + %"$consume_804" = sub i64 %"$gasrem_800", 1 + store i64 %"$consume_804", i64* @_gasrem, align 8 + %"$list_eq_string_14" = alloca { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, align 8 + %"$list_eq_string_805" = load { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }, { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* }* %list_eq_string, align 8 + %"$list_eq_string_fptr_806" = extractvalue { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } %"$list_eq_string_805", 0 + %"$list_eq_string_envptr_807" = extractvalue { { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } (i8*, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* })*, i8* } %"$list_eq_string_805", 1 + %"$string_eq_808" = load { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }, { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* }* %string_eq, align 8 + %"$list_eq_string_call_809" = call { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$list_eq_string_fptr_806"(i8* %"$list_eq_string_envptr_807", { { %TName_Bool* (i8*, %String)*, i8* } (i8*, %String)*, i8* } %"$string_eq_808") + store { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$list_eq_string_call_809", { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$list_eq_string_14", align 8 + %"$$list_eq_string_14_810" = load { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* %"$list_eq_string_14", align 8 + store { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$$list_eq_string_14_810", { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* @accounting_tests.list_eq_string, align 8 + ret void +} + +define void @_init_state() { +entry: + %"$test_string_1_83" = alloca %String, align 8 + %"$gasrem_811" = load i64, i64* @_gasrem, align 8 + %"$gascmp_812" = icmp ugt i64 1, %"$gasrem_811" + br i1 %"$gascmp_812", label %"$out_of_gas_813", label %"$have_gas_814" + +"$out_of_gas_813": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_814" + +"$have_gas_814": ; preds = %"$out_of_gas_813", %entry + %"$consume_815" = sub i64 %"$gasrem_811", 1 + store i64 %"$consume_815", i64* @_gasrem, align 8 + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_816", i32 0, i32 0), i32 5 }, %String* %"$test_string_1_83", align 8 + %"$execptr_load_817" = load i8*, i8** @_execptr, align 8 + %"$$test_string_1_83_819" = load %String, %String* %"$test_string_1_83", align 8 + %"$update_value_820" = alloca %String, align 8 + store %String %"$$test_string_1_83_819", %String* %"$update_value_820", align 8 + %"$update_value_821" = bitcast %String* %"$update_value_820" to i8* + call void @_update_field(i8* %"$execptr_load_817", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_1_818", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i8* %"$update_value_821") + %"$test_string_2_84" = alloca %String, align 8 + %"$gasrem_822" = load i64, i64* @_gasrem, align 8 + %"$gascmp_823" = icmp ugt i64 1, %"$gasrem_822" + br i1 %"$gascmp_823", label %"$out_of_gas_824", label %"$have_gas_825" + +"$out_of_gas_824": ; preds = %"$have_gas_814" + call void @_out_of_gas() + br label %"$have_gas_825" + +"$have_gas_825": ; preds = %"$out_of_gas_824", %"$have_gas_814" + %"$consume_826" = sub i64 %"$gasrem_822", 1 + store i64 %"$consume_826", i64* @_gasrem, align 8 + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_827", i32 0, i32 0), i32 5 }, %String* %"$test_string_2_84", align 8 + %"$execptr_load_828" = load i8*, i8** @_execptr, align 8 + %"$$test_string_2_84_830" = load %String, %String* %"$test_string_2_84", align 8 + %"$update_value_831" = alloca %String, align 8 + store %String %"$$test_string_2_84_830", %String* %"$update_value_831", align 8 + %"$update_value_832" = bitcast %String* %"$update_value_831" to i8* + call void @_update_field(i8* %"$execptr_load_828", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_2_829", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i8* %"$update_value_832") + %"$outgoing_amount_85" = alloca %Uint128, align 8 + %"$gasrem_833" = load i64, i64* @_gasrem, align 8 + %"$gascmp_834" = icmp ugt i64 1, %"$gasrem_833" + br i1 %"$gascmp_834", label %"$out_of_gas_835", label %"$have_gas_836" + +"$out_of_gas_835": ; preds = %"$have_gas_825" + call void @_out_of_gas() + br label %"$have_gas_836" + +"$have_gas_836": ; preds = %"$out_of_gas_835", %"$have_gas_825" + %"$consume_837" = sub i64 %"$gasrem_833", 1 + store i64 %"$consume_837", i64* @_gasrem, align 8 + store %Uint128 { i128 10 }, %Uint128* %"$outgoing_amount_85", align 8 + %"$execptr_load_838" = load i8*, i8** @_execptr, align 8 + %"$$outgoing_amount_85_840" = load %Uint128, %Uint128* %"$outgoing_amount_85", align 8 + %"$update_value_841" = alloca %Uint128, align 8 + store %Uint128 %"$$outgoing_amount_85_840", %Uint128* %"$update_value_841", align 8 + %"$update_value_842" = bitcast %Uint128* %"$update_value_841" to i8* + call void @_update_field(i8* %"$execptr_load_838", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_839", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i8* %"$update_value_842") + %"$max_outgoing_msgs_86" = alloca %Uint128, align 8 + %"$gasrem_843" = load i64, i64* @_gasrem, align 8 + %"$gascmp_844" = icmp ugt i64 1, %"$gasrem_843" + br i1 %"$gascmp_844", label %"$out_of_gas_845", label %"$have_gas_846" + +"$out_of_gas_845": ; preds = %"$have_gas_836" + call void @_out_of_gas() + br label %"$have_gas_846" + +"$have_gas_846": ; preds = %"$out_of_gas_845", %"$have_gas_836" + %"$consume_847" = sub i64 %"$gasrem_843", 1 + store i64 %"$consume_847", i64* @_gasrem, align 8 + store %Uint128 { i128 3 }, %Uint128* %"$max_outgoing_msgs_86", align 8 + %"$execptr_load_848" = load i8*, i8** @_execptr, align 8 + %"$$max_outgoing_msgs_86_850" = load %Uint128, %Uint128* %"$max_outgoing_msgs_86", align 8 + %"$update_value_851" = alloca %Uint128, align 8 + store %Uint128 %"$$max_outgoing_msgs_86_850", %Uint128* %"$update_value_851", align 8 + %"$update_value_852" = bitcast %Uint128* %"$update_value_851" to i8* + call void @_update_field(i8* %"$execptr_load_848", i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$max_outgoing_msgs_849", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i8* %"$update_value_852") + ret void +} + +declare void @_update_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i8*) + +define internal void @"$Reset_853"(%Uint128 %_amount, [20 x i8]* %"$_origin_854", [20 x i8]* %"$_sender_855") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_854", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_855", align 1 + %"$gasrem_856" = load i64, i64* @_gasrem, align 8 + %"$gascmp_857" = icmp ugt i64 1, %"$gasrem_856" + br i1 %"$gascmp_857", label %"$out_of_gas_858", label %"$have_gas_859" + +"$out_of_gas_858": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_859" + +"$have_gas_859": ; preds = %"$out_of_gas_858", %entry + %"$consume_860" = sub i64 %"$gasrem_856", 1 + store i64 %"$consume_860", i64* @_gasrem, align 8 + %msg = alloca i8*, align 8 + %"$gasrem_861" = load i64, i64* @_gasrem, align 8 + %"$gascmp_862" = icmp ugt i64 1, %"$gasrem_861" + br i1 %"$gascmp_862", label %"$out_of_gas_863", label %"$have_gas_864" + +"$out_of_gas_863": ; preds = %"$have_gas_859" + call void @_out_of_gas() + br label %"$have_gas_864" + +"$have_gas_864": ; preds = %"$out_of_gas_863", %"$have_gas_859" + %"$consume_865" = sub i64 %"$gasrem_861", 1 + store i64 %"$consume_865", i64* @_gasrem, align 8 + %"$msgobj_866_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_866_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_866_salloc_load", i64 125) + %"$msgobj_866_salloc" = bitcast i8* %"$msgobj_866_salloc_salloc" to [125 x i8]* + %"$msgobj_866" = bitcast [125 x i8]* %"$msgobj_866_salloc" to i8* + store i8 3, i8* %"$msgobj_866", align 1 + %"$msgobj_fname_868" = getelementptr i8, i8* %"$msgobj_866", i32 1 + %"$msgobj_fname_869" = bitcast i8* %"$msgobj_fname_868" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_867", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_869", align 8 + %"$msgobj_td_870" = getelementptr i8, i8* %"$msgobj_866", i32 17 + %"$msgobj_td_871" = bitcast i8* %"$msgobj_td_870" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_871", align 8 + %"$support_contract_872" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_873" = getelementptr i8, i8* %"$msgobj_866", i32 25 + %"$msgobj_v_874" = bitcast i8* %"$msgobj_v_873" to [20 x i8]* + store [20 x i8] %"$support_contract_872", [20 x i8]* %"$msgobj_v_874", align 1 + %"$msgobj_fname_876" = getelementptr i8, i8* %"$msgobj_866", i32 45 + %"$msgobj_fname_877" = bitcast i8* %"$msgobj_fname_876" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_875", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_877", align 8 + %"$msgobj_td_878" = getelementptr i8, i8* %"$msgobj_866", i32 61 + %"$msgobj_td_879" = bitcast i8* %"$msgobj_td_878" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_879", align 8 + %"$msgobj_v_881" = getelementptr i8, i8* %"$msgobj_866", i32 69 + %"$msgobj_v_882" = bitcast i8* %"$msgobj_v_881" to %String* + store %String { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$stringlit_880", i32 0, i32 0), i32 5 }, %String* %"$msgobj_v_882", align 8 + %"$msgobj_fname_884" = getelementptr i8, i8* %"$msgobj_866", i32 85 + %"$msgobj_fname_885" = bitcast i8* %"$msgobj_fname_884" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_883", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_885", align 8 + %"$msgobj_td_886" = getelementptr i8, i8* %"$msgobj_866", i32 101 + %"$msgobj_td_887" = bitcast i8* %"$msgobj_td_886" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_887", align 8 + %"$msgobj_v_888" = getelementptr i8, i8* %"$msgobj_866", i32 109 + %"$msgobj_v_889" = bitcast i8* %"$msgobj_v_888" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_889", align 8 + store i8* %"$msgobj_866", i8** %msg, align 8 + %"$gasrem_891" = load i64, i64* @_gasrem, align 8 + %"$gascmp_892" = icmp ugt i64 1, %"$gasrem_891" + br i1 %"$gascmp_892", label %"$out_of_gas_893", label %"$have_gas_894" + +"$out_of_gas_893": ; preds = %"$have_gas_864" + call void @_out_of_gas() + br label %"$have_gas_894" + +"$have_gas_894": ; preds = %"$out_of_gas_893", %"$have_gas_864" + %"$consume_895" = sub i64 %"$gasrem_891", 1 + store i64 %"$consume_895", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_896" = load i64, i64* @_gasrem, align 8 + %"$gascmp_897" = icmp ugt i64 1, %"$gasrem_896" + br i1 %"$gascmp_897", label %"$out_of_gas_898", label %"$have_gas_899" + +"$out_of_gas_898": ; preds = %"$have_gas_894" + call void @_out_of_gas() + br label %"$have_gas_899" + +"$have_gas_899": ; preds = %"$out_of_gas_898", %"$have_gas_894" + %"$consume_900" = sub i64 %"$gasrem_896", 1 + store i64 %"$consume_900", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_15" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_901" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_902" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_901", 0 + %"$accounting_tests.one_msg_envptr_903" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_901", 1 + %"$msg_904" = load i8*, i8** %msg, align 8 + %"$accounting_tests.one_msg_call_905" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_902"(i8* %"$accounting_tests.one_msg_envptr_903", i8* %"$msg_904") + store %TName_List_Message* %"$accounting_tests.one_msg_call_905", %TName_List_Message** %"$accounting_tests.one_msg_15", align 8 + %"$$accounting_tests.one_msg_15_906" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_15", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_15_906", %TName_List_Message** %msgs, align 8 + %"$msgs_907" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_907_908" = bitcast %TName_List_Message* %"$msgs_907" to i8* + %"$_literal_cost_call_909" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_907_908") + %"$gasrem_910" = load i64, i64* @_gasrem, align 8 + %"$gascmp_911" = icmp ugt i64 %"$_literal_cost_call_909", %"$gasrem_910" + br i1 %"$gascmp_911", label %"$out_of_gas_912", label %"$have_gas_913" + +"$out_of_gas_912": ; preds = %"$have_gas_899" + call void @_out_of_gas() + br label %"$have_gas_913" + +"$have_gas_913": ; preds = %"$out_of_gas_912", %"$have_gas_899" + %"$consume_914" = sub i64 %"$gasrem_910", %"$_literal_cost_call_909" + store i64 %"$consume_914", i64* @_gasrem, align 8 + %"$execptr_load_915" = load i8*, i8** @_execptr, align 8 + %"$msgs_916" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_915", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_916") + %"$gasrem_917" = load i64, i64* @_gasrem, align 8 + %"$gascmp_918" = icmp ugt i64 1, %"$gasrem_917" + br i1 %"$gascmp_918", label %"$out_of_gas_919", label %"$have_gas_920" + +"$out_of_gas_919": ; preds = %"$have_gas_913" + call void @_out_of_gas() + br label %"$have_gas_920" + +"$have_gas_920": ; preds = %"$out_of_gas_919", %"$have_gas_913" + %"$consume_921" = sub i64 %"$gasrem_917", 1 + store i64 %"$consume_921", i64* @_gasrem, align 8 + %"$execptr_load_922" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_922") + ret void +} + +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + +declare void @_send(i8*, %_TyDescrTy_Typ*, %TName_List_Message*) + +declare void @_accept(i8*) + +define void @Reset(i8* %0) { +entry: + %"$_amount_924" = getelementptr i8, i8* %0, i32 0 + %"$_amount_925" = bitcast i8* %"$_amount_924" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_925", align 8 + %"$_origin_926" = getelementptr i8, i8* %0, i32 16 + %"$_origin_927" = bitcast i8* %"$_origin_926" to [20 x i8]* + %"$_sender_928" = getelementptr i8, i8* %0, i32 36 + %"$_sender_929" = bitcast i8* %"$_sender_928" to [20 x i8]* + call void @"$Reset_853"(%Uint128 %_amount, [20 x i8]* %"$_origin_927", [20 x i8]* %"$_sender_929") + ret void +} + +define internal void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$_origin_931", [20 x i8]* %"$_sender_932") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_931", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_932", align 1 + %ss = alloca %TName_List_String*, align 8 + %"$execptr_load_934" = load i8*, i8** @_execptr, align 8 + %"$ss_support_contract_935" = alloca [20 x i8], align 1 + %"$support_contract_936" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + store [20 x i8] %"$support_contract_936", [20 x i8]* %"$ss_support_contract_935", align 1 + %"$ss_call_937" = call i8* @_fetch_remote_field(i8* %"$execptr_load_934", [20 x i8]* %"$ss_support_contract_935", i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stored_strings_933", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", i32 0, i8* null, i32 1) + %"$ss_938" = bitcast i8* %"$ss_call_937" to %TName_List_String* + store %TName_List_String* %"$ss_938", %TName_List_String** %ss, align 8 + %"$ss_939" = load %TName_List_String*, %TName_List_String** %ss, align 8 + %"$$ss_939_940" = bitcast %TName_List_String* %"$ss_939" to i8* + %"$_literal_cost_call_941" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", i8* %"$$ss_939_940") + %"$gasadd_942" = add i64 %"$_literal_cost_call_941", 0 + %"$gasrem_943" = load i64, i64* @_gasrem, align 8 + %"$gascmp_944" = icmp ugt i64 %"$gasadd_942", %"$gasrem_943" + br i1 %"$gascmp_944", label %"$out_of_gas_945", label %"$have_gas_946" + +"$out_of_gas_945": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_946" + +"$have_gas_946": ; preds = %"$out_of_gas_945", %entry + %"$consume_947" = sub i64 %"$gasrem_943", %"$gasadd_942" + store i64 %"$consume_947", i64* @_gasrem, align 8 + %"$gasrem_948" = load i64, i64* @_gasrem, align 8 + %"$gascmp_949" = icmp ugt i64 1, %"$gasrem_948" + br i1 %"$gascmp_949", label %"$out_of_gas_950", label %"$have_gas_951" + +"$out_of_gas_950": ; preds = %"$have_gas_946" + call void @_out_of_gas() + br label %"$have_gas_951" + +"$have_gas_951": ; preds = %"$out_of_gas_950", %"$have_gas_946" + %"$consume_952" = sub i64 %"$gasrem_948", 1 + store i64 %"$consume_952", i64* @_gasrem, align 8 + %cur_head = alloca %TName_Option_String*, align 8 + %"$gasrem_953" = load i64, i64* @_gasrem, align 8 + %"$gascmp_954" = icmp ugt i64 1, %"$gasrem_953" + br i1 %"$gascmp_954", label %"$out_of_gas_955", label %"$have_gas_956" + +"$out_of_gas_955": ; preds = %"$have_gas_951" + call void @_out_of_gas() + br label %"$have_gas_956" + +"$have_gas_956": ; preds = %"$out_of_gas_955", %"$have_gas_951" + %"$consume_957" = sub i64 %"$gasrem_953", 1 + store i64 %"$consume_957", i64* @_gasrem, align 8 + %"$accounting_tests.list_head_string_16" = alloca %TName_Option_String*, align 8 + %"$accounting_tests.list_head_string_958" = load { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }, { %TName_Option_String* (i8*, %TName_List_String*)*, i8* }* @accounting_tests.list_head_string, align 8 + %"$accounting_tests.list_head_string_fptr_959" = extractvalue { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } %"$accounting_tests.list_head_string_958", 0 + %"$accounting_tests.list_head_string_envptr_960" = extractvalue { %TName_Option_String* (i8*, %TName_List_String*)*, i8* } %"$accounting_tests.list_head_string_958", 1 + %"$ss_961" = load %TName_List_String*, %TName_List_String** %ss, align 8 + %"$accounting_tests.list_head_string_call_962" = call %TName_Option_String* %"$accounting_tests.list_head_string_fptr_959"(i8* %"$accounting_tests.list_head_string_envptr_960", %TName_List_String* %"$ss_961") + store %TName_Option_String* %"$accounting_tests.list_head_string_call_962", %TName_Option_String** %"$accounting_tests.list_head_string_16", align 8 + %"$$accounting_tests.list_head_string_16_963" = load %TName_Option_String*, %TName_Option_String** %"$accounting_tests.list_head_string_16", align 8 + store %TName_Option_String* %"$$accounting_tests.list_head_string_16_963", %TName_Option_String** %cur_head, align 8 + %"$gasrem_964" = load i64, i64* @_gasrem, align 8 + %"$gascmp_965" = icmp ugt i64 2, %"$gasrem_964" + br i1 %"$gascmp_965", label %"$out_of_gas_966", label %"$have_gas_967" + +"$out_of_gas_966": ; preds = %"$have_gas_956" + call void @_out_of_gas() + br label %"$have_gas_967" + +"$have_gas_967": ; preds = %"$out_of_gas_966", %"$have_gas_956" + %"$consume_968" = sub i64 %"$gasrem_964", 2 + store i64 %"$consume_968", i64* @_gasrem, align 8 + %"$cur_head_970" = load %TName_Option_String*, %TName_Option_String** %cur_head, align 8 + %"$cur_head_tag_971" = getelementptr inbounds %TName_Option_String, %TName_Option_String* %"$cur_head_970", i32 0, i32 0 + %"$cur_head_tag_972" = load i8, i8* %"$cur_head_tag_971", align 1 + switch i8 %"$cur_head_tag_972", label %"$empty_default_973" [ + i8 1, label %"$None_974" + i8 0, label %"$Some_976" + ] + +"$None_974": ; preds = %"$have_gas_967" + %"$cur_head_975" = bitcast %TName_Option_String* %"$cur_head_970" to %CName_None_String* + br label %"$matchsucc_969" + +"$Some_976": ; preds = %"$have_gas_967" + %"$cur_head_977" = bitcast %TName_Option_String* %"$cur_head_970" to %CName_Some_String* + %"$$cur_head_2_gep_978" = getelementptr inbounds %CName_Some_String, %CName_Some_String* %"$cur_head_977", i32 0, i32 1 + %"$$cur_head_2_load_979" = load %String, %String* %"$$cur_head_2_gep_978", align 8 + %"$cur_head_2" = alloca %String, align 8 + store %String %"$$cur_head_2_load_979", %String* %"$cur_head_2", align 8 + %"$gasrem_980" = load i64, i64* @_gasrem, align 8 + %"$gascmp_981" = icmp ugt i64 1, %"$gasrem_980" + br i1 %"$gascmp_981", label %"$out_of_gas_982", label %"$have_gas_983" + +"$out_of_gas_982": ; preds = %"$Some_976" + call void @_out_of_gas() + br label %"$have_gas_983" + +"$have_gas_983": ; preds = %"$out_of_gas_982", %"$Some_976" + %"$consume_984" = sub i64 %"$gasrem_980", 1 + store i64 %"$consume_984", i64* @_gasrem, align 8 + %e = alloca i8*, align 8 + %"$gasrem_985" = load i64, i64* @_gasrem, align 8 + %"$gascmp_986" = icmp ugt i64 1, %"$gasrem_985" + br i1 %"$gascmp_986", label %"$out_of_gas_987", label %"$have_gas_988" + +"$out_of_gas_987": ; preds = %"$have_gas_983" + call void @_out_of_gas() + br label %"$have_gas_988" + +"$have_gas_988": ; preds = %"$out_of_gas_987", %"$have_gas_983" + %"$consume_989" = sub i64 %"$gasrem_985", 1 + store i64 %"$consume_989", i64* @_gasrem, align 8 + %"$msgobj_990_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_990_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_990_salloc_load", i64 41) + %"$msgobj_990_salloc" = bitcast i8* %"$msgobj_990_salloc_salloc" to [41 x i8]* + %"$msgobj_990" = bitcast [41 x i8]* %"$msgobj_990_salloc" to i8* + store i8 1, i8* %"$msgobj_990", align 1 + %"$msgobj_fname_992" = getelementptr i8, i8* %"$msgobj_990", i32 1 + %"$msgobj_fname_993" = bitcast i8* %"$msgobj_fname_992" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_991", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_993", align 8 + %"$msgobj_td_994" = getelementptr i8, i8* %"$msgobj_990", i32 17 + %"$msgobj_td_995" = bitcast i8* %"$msgobj_td_994" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_995", align 8 + %"$msgobj_v_997" = getelementptr i8, i8* %"$msgobj_990", i32 25 + %"$msgobj_v_998" = bitcast i8* %"$msgobj_v_997" to %String* + store %String { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"$stringlit_996", i32 0, i32 0), i32 26 }, %String* %"$msgobj_v_998", align 8 + store i8* %"$msgobj_990", i8** %e, align 8 + %"$e_1000" = load i8*, i8** %e, align 8 + %"$_literal_cost_call_1002" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_1000") + %"$gasrem_1003" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1004" = icmp ugt i64 %"$_literal_cost_call_1002", %"$gasrem_1003" + br i1 %"$gascmp_1004", label %"$out_of_gas_1005", label %"$have_gas_1006" + +"$out_of_gas_1005": ; preds = %"$have_gas_988" + call void @_out_of_gas() + br label %"$have_gas_1006" + +"$have_gas_1006": ; preds = %"$out_of_gas_1005", %"$have_gas_988" + %"$consume_1007" = sub i64 %"$gasrem_1003", %"$_literal_cost_call_1002" + store i64 %"$consume_1007", i64* @_gasrem, align 8 + %"$execptr_load_1008" = load i8*, i8** @_execptr, align 8 + %"$e_1009" = load i8*, i8** %e, align 8 + call void @_throw(i8* %"$execptr_load_1008", %_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_1009") + br label %"$matchsucc_969" + +"$empty_default_973": ; preds = %"$have_gas_967" + br label %"$matchsucc_969" + +"$matchsucc_969": ; preds = %"$have_gas_1006", %"$None_974", %"$empty_default_973" + %amount = alloca %Uint128, align 8 + %"$execptr_load_1011" = load i8*, i8** @_execptr, align 8 + %"$amount_call_1012" = call i8* @_fetch_field(i8* %"$execptr_load_1011", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_1010", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$amount_1013" = bitcast i8* %"$amount_call_1012" to %Uint128* + %"$amount_1014" = load %Uint128, %Uint128* %"$amount_1013", align 8 + store %Uint128 %"$amount_1014", %Uint128* %amount, align 8 + %"$_literal_cost_amount_1015" = alloca %Uint128, align 8 + %"$amount_1016" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_1016", %Uint128* %"$_literal_cost_amount_1015", align 8 + %"$$_literal_cost_amount_1015_1017" = bitcast %Uint128* %"$_literal_cost_amount_1015" to i8* + %"$_literal_cost_call_1018" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_1015_1017") + %"$gasadd_1019" = add i64 %"$_literal_cost_call_1018", 0 + %"$gasrem_1020" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1021" = icmp ugt i64 %"$gasadd_1019", %"$gasrem_1020" + br i1 %"$gascmp_1021", label %"$out_of_gas_1022", label %"$have_gas_1023" + +"$out_of_gas_1022": ; preds = %"$matchsucc_969" + call void @_out_of_gas() + br label %"$have_gas_1023" + +"$have_gas_1023": ; preds = %"$out_of_gas_1022", %"$matchsucc_969" + %"$consume_1024" = sub i64 %"$gasrem_1020", %"$gasadd_1019" + store i64 %"$consume_1024", i64* @_gasrem, align 8 + %max_msgs = alloca %Uint128, align 8 + %"$execptr_load_1026" = load i8*, i8** @_execptr, align 8 + %"$max_msgs_call_1027" = call i8* @_fetch_field(i8* %"$execptr_load_1026", i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$max_outgoing_msgs_1025", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$max_msgs_1028" = bitcast i8* %"$max_msgs_call_1027" to %Uint128* + %"$max_msgs_1029" = load %Uint128, %Uint128* %"$max_msgs_1028", align 8 + store %Uint128 %"$max_msgs_1029", %Uint128* %max_msgs, align 8 + %"$_literal_cost_max_msgs_1030" = alloca %Uint128, align 8 + %"$max_msgs_1031" = load %Uint128, %Uint128* %max_msgs, align 8 + store %Uint128 %"$max_msgs_1031", %Uint128* %"$_literal_cost_max_msgs_1030", align 8 + %"$$_literal_cost_max_msgs_1030_1032" = bitcast %Uint128* %"$_literal_cost_max_msgs_1030" to i8* + %"$_literal_cost_call_1033" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_max_msgs_1030_1032") + %"$gasadd_1034" = add i64 %"$_literal_cost_call_1033", 0 + %"$gasrem_1035" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1036" = icmp ugt i64 %"$gasadd_1034", %"$gasrem_1035" + br i1 %"$gascmp_1036", label %"$out_of_gas_1037", label %"$have_gas_1038" + +"$out_of_gas_1037": ; preds = %"$have_gas_1023" + call void @_out_of_gas() + br label %"$have_gas_1038" + +"$have_gas_1038": ; preds = %"$out_of_gas_1037", %"$have_gas_1023" + %"$consume_1039" = sub i64 %"$gasrem_1035", %"$gasadd_1034" + store i64 %"$consume_1039", i64* @_gasrem, align 8 + %"$gasrem_1040" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1041" = icmp ugt i64 1, %"$gasrem_1040" + br i1 %"$gascmp_1041", label %"$out_of_gas_1042", label %"$have_gas_1043" + +"$out_of_gas_1042": ; preds = %"$have_gas_1038" + call void @_out_of_gas() + br label %"$have_gas_1043" + +"$have_gas_1043": ; preds = %"$out_of_gas_1042", %"$have_gas_1038" + %"$consume_1044" = sub i64 %"$gasrem_1040", 1 + store i64 %"$consume_1044", i64* @_gasrem, align 8 + %minimum = alloca %Uint128, align 8 + %"$amount_1045" = load %Uint128, %Uint128* %amount, align 8 + %"$max_msgs_1046" = load %Uint128, %Uint128* %max_msgs, align 8 + %"$mul_call_1047" = call %Uint128 @_mul_Uint128(%Uint128 %"$amount_1045", %Uint128 %"$max_msgs_1046") + store %Uint128 %"$mul_call_1047", %Uint128* %minimum, align 8 + %bal = alloca %Uint128, align 8 + %"$execptr_load_1049" = load i8*, i8** @_execptr, align 8 + %"$bal_call_1050" = call i8* @_fetch_field(i8* %"$execptr_load_1049", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_1048", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$bal_1051" = bitcast i8* %"$bal_call_1050" to %Uint128* + %"$bal_1052" = load %Uint128, %Uint128* %"$bal_1051", align 8 + store %Uint128 %"$bal_1052", %Uint128* %bal, align 8 + %"$_literal_cost_bal_1053" = alloca %Uint128, align 8 + %"$bal_1054" = load %Uint128, %Uint128* %bal, align 8 + store %Uint128 %"$bal_1054", %Uint128* %"$_literal_cost_bal_1053", align 8 + %"$$_literal_cost_bal_1053_1055" = bitcast %Uint128* %"$_literal_cost_bal_1053" to i8* + %"$_literal_cost_call_1056" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_bal_1053_1055") + %"$gasadd_1057" = add i64 %"$_literal_cost_call_1056", 0 + %"$gasrem_1058" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1059" = icmp ugt i64 %"$gasadd_1057", %"$gasrem_1058" + br i1 %"$gascmp_1059", label %"$out_of_gas_1060", label %"$have_gas_1061" + +"$out_of_gas_1060": ; preds = %"$have_gas_1043" + call void @_out_of_gas() + br label %"$have_gas_1061" + +"$have_gas_1061": ; preds = %"$out_of_gas_1060", %"$have_gas_1043" + %"$consume_1062" = sub i64 %"$gasrem_1058", %"$gasadd_1057" + store i64 %"$consume_1062", i64* @_gasrem, align 8 + %"$gasrem_1063" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1064" = icmp ugt i64 1, %"$gasrem_1063" + br i1 %"$gascmp_1064", label %"$out_of_gas_1065", label %"$have_gas_1066" + +"$out_of_gas_1065": ; preds = %"$have_gas_1061" + call void @_out_of_gas() + br label %"$have_gas_1066" + +"$have_gas_1066": ; preds = %"$out_of_gas_1065", %"$have_gas_1061" + %"$consume_1067" = sub i64 %"$gasrem_1063", 1 + store i64 %"$consume_1067", i64* @_gasrem, align 8 + %insufficient_balance = alloca %TName_Bool*, align 8 + %"$execptr_load_1068" = load i8*, i8** @_execptr, align 8 + %"$bal_1069" = load %Uint128, %Uint128* %bal, align 8 + %"$minimum_1070" = load %Uint128, %Uint128* %minimum, align 8 + %"$lt_call_1071" = call %TName_Bool* @_lt_Uint128(i8* %"$execptr_load_1068", %Uint128 %"$bal_1069", %Uint128 %"$minimum_1070") + store %TName_Bool* %"$lt_call_1071", %TName_Bool** %insufficient_balance, align 8 + %"$gasrem_1073" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1074" = icmp ugt i64 2, %"$gasrem_1073" + br i1 %"$gascmp_1074", label %"$out_of_gas_1075", label %"$have_gas_1076" + +"$out_of_gas_1075": ; preds = %"$have_gas_1066" + call void @_out_of_gas() + br label %"$have_gas_1076" + +"$have_gas_1076": ; preds = %"$out_of_gas_1075", %"$have_gas_1066" + %"$consume_1077" = sub i64 %"$gasrem_1073", 2 + store i64 %"$consume_1077", i64* @_gasrem, align 8 + %"$insufficient_balance_1079" = load %TName_Bool*, %TName_Bool** %insufficient_balance, align 8 + %"$insufficient_balance_tag_1080" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$insufficient_balance_1079", i32 0, i32 0 + %"$insufficient_balance_tag_1081" = load i8, i8* %"$insufficient_balance_tag_1080", align 1 + switch i8 %"$insufficient_balance_tag_1081", label %"$empty_default_1082" [ + i8 1, label %"$False_1083" + i8 0, label %"$True_1085" + ] + +"$False_1083": ; preds = %"$have_gas_1076" + %"$insufficient_balance_1084" = bitcast %TName_Bool* %"$insufficient_balance_1079" to %CName_False* + br label %"$matchsucc_1078" + +"$True_1085": ; preds = %"$have_gas_1076" + %"$insufficient_balance_1086" = bitcast %TName_Bool* %"$insufficient_balance_1079" to %CName_True* + %"$gasrem_1087" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1088" = icmp ugt i64 1, %"$gasrem_1087" + br i1 %"$gascmp_1088", label %"$out_of_gas_1089", label %"$have_gas_1090" + +"$out_of_gas_1089": ; preds = %"$True_1085" + call void @_out_of_gas() + br label %"$have_gas_1090" + +"$have_gas_1090": ; preds = %"$out_of_gas_1089", %"$True_1085" + %"$consume_1091" = sub i64 %"$gasrem_1087", 1 + store i64 %"$consume_1091", i64* @_gasrem, align 8 + %e1 = alloca i8*, align 8 + %"$gasrem_1092" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1093" = icmp ugt i64 1, %"$gasrem_1092" + br i1 %"$gascmp_1093", label %"$out_of_gas_1094", label %"$have_gas_1095" + +"$out_of_gas_1094": ; preds = %"$have_gas_1090" + call void @_out_of_gas() + br label %"$have_gas_1095" + +"$have_gas_1095": ; preds = %"$out_of_gas_1094", %"$have_gas_1090" + %"$consume_1096" = sub i64 %"$gasrem_1092", 1 + store i64 %"$consume_1096", i64* @_gasrem, align 8 + %"$msgobj_1097_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1097_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1097_salloc_load", i64 41) + %"$msgobj_1097_salloc" = bitcast i8* %"$msgobj_1097_salloc_salloc" to [41 x i8]* + %"$msgobj_1097" = bitcast [41 x i8]* %"$msgobj_1097_salloc" to i8* + store i8 1, i8* %"$msgobj_1097", align 1 + %"$msgobj_fname_1099" = getelementptr i8, i8* %"$msgobj_1097", i32 1 + %"$msgobj_fname_1100" = bitcast i8* %"$msgobj_fname_1099" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1098", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1100", align 8 + %"$msgobj_td_1101" = getelementptr i8, i8* %"$msgobj_1097", i32 17 + %"$msgobj_td_1102" = bitcast i8* %"$msgobj_td_1101" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1102", align 8 + %"$msgobj_v_1104" = getelementptr i8, i8* %"$msgobj_1097", i32 25 + %"$msgobj_v_1105" = bitcast i8* %"$msgobj_v_1104" to %String* + store %String { i8* getelementptr inbounds ([30 x i8], [30 x i8]* @"$stringlit_1103", i32 0, i32 0), i32 30 }, %String* %"$msgobj_v_1105", align 8 + store i8* %"$msgobj_1097", i8** %e1, align 8 + %"$e_1107" = load i8*, i8** %e1, align 8 + %"$_literal_cost_call_1109" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_1107") + %"$gasrem_1110" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1111" = icmp ugt i64 %"$_literal_cost_call_1109", %"$gasrem_1110" + br i1 %"$gascmp_1111", label %"$out_of_gas_1112", label %"$have_gas_1113" + +"$out_of_gas_1112": ; preds = %"$have_gas_1095" + call void @_out_of_gas() + br label %"$have_gas_1113" + +"$have_gas_1113": ; preds = %"$out_of_gas_1112", %"$have_gas_1095" + %"$consume_1114" = sub i64 %"$gasrem_1110", %"$_literal_cost_call_1109" + store i64 %"$consume_1114", i64* @_gasrem, align 8 + %"$execptr_load_1115" = load i8*, i8** @_execptr, align 8 + %"$e_1116" = load i8*, i8** %e1, align 8 + call void @_throw(i8* %"$execptr_load_1115", %_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_1116") + br label %"$matchsucc_1078" + +"$empty_default_1082": ; preds = %"$have_gas_1076" + br label %"$matchsucc_1078" + +"$matchsucc_1078": ; preds = %"$have_gas_1113", %"$False_1083", %"$empty_default_1082" + ret void +} + +declare i8* @_fetch_remote_field(i8*, [20 x i8]*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) + +declare void @_throw(i8*, %_TyDescrTy_Typ*, i8*) + +declare i8* @_fetch_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) + +declare %Uint128 @_mul_Uint128(%Uint128, %Uint128) + +declare %TName_Bool* @_lt_Uint128(i8*, %Uint128, %Uint128) + +define internal void @"$Test_Insufficient_Balance_1117"(%Uint128 %_amount, [20 x i8]* %"$_origin_1118", [20 x i8]* %"$_sender_1119") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1118", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1119", align 1 + %amount = alloca %Uint128, align 8 + %"$execptr_load_1121" = load i8*, i8** @_execptr, align 8 + %"$amount_call_1122" = call i8* @_fetch_field(i8* %"$execptr_load_1121", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_1120", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$amount_1123" = bitcast i8* %"$amount_call_1122" to %Uint128* + %"$amount_1124" = load %Uint128, %Uint128* %"$amount_1123", align 8 + store %Uint128 %"$amount_1124", %Uint128* %amount, align 8 + %"$_literal_cost_amount_1125" = alloca %Uint128, align 8 + %"$amount_1126" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_1126", %Uint128* %"$_literal_cost_amount_1125", align 8 + %"$$_literal_cost_amount_1125_1127" = bitcast %Uint128* %"$_literal_cost_amount_1125" to i8* + %"$_literal_cost_call_1128" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_1125_1127") + %"$gasadd_1129" = add i64 %"$_literal_cost_call_1128", 0 + %"$gasrem_1130" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1131" = icmp ugt i64 %"$gasadd_1129", %"$gasrem_1130" + br i1 %"$gascmp_1131", label %"$out_of_gas_1132", label %"$have_gas_1133" + +"$out_of_gas_1132": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1133" + +"$have_gas_1133": ; preds = %"$out_of_gas_1132", %entry + %"$consume_1134" = sub i64 %"$gasrem_1130", %"$gasadd_1129" + store i64 %"$consume_1134", i64* @_gasrem, align 8 + %"$gasrem_1135" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1136" = icmp ugt i64 1, %"$gasrem_1135" + br i1 %"$gascmp_1136", label %"$out_of_gas_1137", label %"$have_gas_1138" + +"$out_of_gas_1137": ; preds = %"$have_gas_1133" + call void @_out_of_gas() + br label %"$have_gas_1138" + +"$have_gas_1138": ; preds = %"$out_of_gas_1137", %"$have_gas_1133" + %"$consume_1139" = sub i64 %"$gasrem_1135", 1 + store i64 %"$consume_1139", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_1140" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1141" = icmp ugt i64 1, %"$gasrem_1140" + br i1 %"$gascmp_1141", label %"$out_of_gas_1142", label %"$have_gas_1143" + +"$out_of_gas_1142": ; preds = %"$have_gas_1138" + call void @_out_of_gas() + br label %"$have_gas_1143" + +"$have_gas_1143": ; preds = %"$out_of_gas_1142", %"$have_gas_1138" + %"$consume_1144" = sub i64 %"$gasrem_1140", 1 + store i64 %"$consume_1144", i64* @_gasrem, align 8 + %"$msgobj_1145_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1145_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1145_salloc_load", i64 125) + %"$msgobj_1145_salloc" = bitcast i8* %"$msgobj_1145_salloc_salloc" to [125 x i8]* + %"$msgobj_1145" = bitcast [125 x i8]* %"$msgobj_1145_salloc" to i8* + store i8 3, i8* %"$msgobj_1145", align 1 + %"$msgobj_fname_1147" = getelementptr i8, i8* %"$msgobj_1145", i32 1 + %"$msgobj_fname_1148" = bitcast i8* %"$msgobj_fname_1147" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1146", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1148", align 8 + %"$msgobj_td_1149" = getelementptr i8, i8* %"$msgobj_1145", i32 17 + %"$msgobj_td_1150" = bitcast i8* %"$msgobj_td_1149" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1150", align 8 + %"$support_contract_1151" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_1152" = getelementptr i8, i8* %"$msgobj_1145", i32 25 + %"$msgobj_v_1153" = bitcast i8* %"$msgobj_v_1152" to [20 x i8]* + store [20 x i8] %"$support_contract_1151", [20 x i8]* %"$msgobj_v_1153", align 1 + %"$msgobj_fname_1155" = getelementptr i8, i8* %"$msgobj_1145", i32 45 + %"$msgobj_fname_1156" = bitcast i8* %"$msgobj_fname_1155" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1154", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1156", align 8 + %"$msgobj_td_1157" = getelementptr i8, i8* %"$msgobj_1145", i32 61 + %"$msgobj_td_1158" = bitcast i8* %"$msgobj_td_1157" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1158", align 8 + %"$msgobj_v_1160" = getelementptr i8, i8* %"$msgobj_1145", i32 69 + %"$msgobj_v_1161" = bitcast i8* %"$msgobj_v_1160" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_1159", i32 0, i32 0), i32 9 }, %String* %"$msgobj_v_1161", align 8 + %"$msgobj_fname_1163" = getelementptr i8, i8* %"$msgobj_1145", i32 85 + %"$msgobj_fname_1164" = bitcast i8* %"$msgobj_fname_1163" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1162", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1164", align 8 + %"$msgobj_td_1165" = getelementptr i8, i8* %"$msgobj_1145", i32 101 + %"$msgobj_td_1166" = bitcast i8* %"$msgobj_td_1165" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1166", align 8 + %"$amount_1167" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_1168" = getelementptr i8, i8* %"$msgobj_1145", i32 109 + %"$msgobj_v_1169" = bitcast i8* %"$msgobj_v_1168" to %Uint128* + store %Uint128 %"$amount_1167", %Uint128* %"$msgobj_v_1169", align 8 + store i8* %"$msgobj_1145", i8** %msg1, align 8 + %"$gasrem_1171" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1172" = icmp ugt i64 1, %"$gasrem_1171" + br i1 %"$gascmp_1172", label %"$out_of_gas_1173", label %"$have_gas_1174" + +"$out_of_gas_1173": ; preds = %"$have_gas_1143" + call void @_out_of_gas() + br label %"$have_gas_1174" + +"$have_gas_1174": ; preds = %"$out_of_gas_1173", %"$have_gas_1143" + %"$consume_1175" = sub i64 %"$gasrem_1171", 1 + store i64 %"$consume_1175", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_1176" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1177" = icmp ugt i64 1, %"$gasrem_1176" + br i1 %"$gascmp_1177", label %"$out_of_gas_1178", label %"$have_gas_1179" + +"$out_of_gas_1178": ; preds = %"$have_gas_1174" + call void @_out_of_gas() + br label %"$have_gas_1179" + +"$have_gas_1179": ; preds = %"$out_of_gas_1178", %"$have_gas_1174" + %"$consume_1180" = sub i64 %"$gasrem_1176", 1 + store i64 %"$consume_1180", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_17" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1181" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1182" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1181", 0 + %"$accounting_tests.one_msg_envptr_1183" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1181", 1 + %"$msg1_1184" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_1185" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1182"(i8* %"$accounting_tests.one_msg_envptr_1183", i8* %"$msg1_1184") + store %TName_List_Message* %"$accounting_tests.one_msg_call_1185", %TName_List_Message** %"$accounting_tests.one_msg_17", align 8 + %"$$accounting_tests.one_msg_17_1186" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_17", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_17_1186", %TName_List_Message** %msgs, align 8 + %"$msgs_1187" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_1187_1188" = bitcast %TName_List_Message* %"$msgs_1187" to i8* + %"$_literal_cost_call_1189" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_1187_1188") + %"$gasrem_1190" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1191" = icmp ugt i64 %"$_literal_cost_call_1189", %"$gasrem_1190" + br i1 %"$gascmp_1191", label %"$out_of_gas_1192", label %"$have_gas_1193" + +"$out_of_gas_1192": ; preds = %"$have_gas_1179" + call void @_out_of_gas() + br label %"$have_gas_1193" + +"$have_gas_1193": ; preds = %"$out_of_gas_1192", %"$have_gas_1179" + %"$consume_1194" = sub i64 %"$gasrem_1190", %"$_literal_cost_call_1189" + store i64 %"$consume_1194", i64* @_gasrem, align 8 + %"$execptr_load_1195" = load i8*, i8** @_execptr, align 8 + %"$msgs_1196" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_1195", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_1196") + ret void +} + +define void @Test_Insufficient_Balance(i8* %0) { +entry: + %"$_amount_1198" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1199" = bitcast i8* %"$_amount_1198" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1199", align 8 + %"$_origin_1200" = getelementptr i8, i8* %0, i32 16 + %"$_origin_1201" = bitcast i8* %"$_origin_1200" to [20 x i8]* + %"$_sender_1202" = getelementptr i8, i8* %0, i32 36 + %"$_sender_1203" = bitcast i8* %"$_sender_1202" to [20 x i8]* + call void @"$Test_Insufficient_Balance_1117"(%Uint128 %_amount, [20 x i8]* %"$_origin_1201", [20 x i8]* %"$_sender_1203") + ret void +} + +define internal void @"$Test_Send_1_1204"(%Uint128 %_amount, [20 x i8]* %"$_origin_1205", [20 x i8]* %"$_sender_1206") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1205", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1206", align 1 + %"$gasrem_1207" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1208" = icmp ugt i64 1, %"$gasrem_1207" + br i1 %"$gascmp_1208", label %"$out_of_gas_1209", label %"$have_gas_1210" + +"$out_of_gas_1209": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1210" + +"$have_gas_1210": ; preds = %"$out_of_gas_1209", %entry + %"$consume_1211" = sub i64 %"$gasrem_1207", 1 + store i64 %"$consume_1211", i64* @_gasrem, align 8 + %"$AssertReset__origin_1212" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_1212", align 1 + %"$AssertReset__sender_1213" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_1213", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_1212", [20 x i8]* %"$AssertReset__sender_1213") + %s1 = alloca %String, align 8 + %"$execptr_load_1215" = load i8*, i8** @_execptr, align 8 + %"$s1_call_1216" = call i8* @_fetch_field(i8* %"$execptr_load_1215", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_1_1214", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1) + %"$s1_1217" = bitcast i8* %"$s1_call_1216" to %String* + %"$s1_1218" = load %String, %String* %"$s1_1217", align 8 + store %String %"$s1_1218", %String* %s1, align 8 + %"$_literal_cost_s1_1219" = alloca %String, align 8 + %"$s1_1220" = load %String, %String* %s1, align 8 + store %String %"$s1_1220", %String* %"$_literal_cost_s1_1219", align 8 + %"$$_literal_cost_s1_1219_1221" = bitcast %String* %"$_literal_cost_s1_1219" to i8* + %"$_literal_cost_call_1222" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s1_1219_1221") + %"$gasadd_1223" = add i64 %"$_literal_cost_call_1222", 0 + %"$gasrem_1224" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1225" = icmp ugt i64 %"$gasadd_1223", %"$gasrem_1224" + br i1 %"$gascmp_1225", label %"$out_of_gas_1226", label %"$have_gas_1227" + +"$out_of_gas_1226": ; preds = %"$have_gas_1210" + call void @_out_of_gas() + br label %"$have_gas_1227" + +"$have_gas_1227": ; preds = %"$out_of_gas_1226", %"$have_gas_1210" + %"$consume_1228" = sub i64 %"$gasrem_1224", %"$gasadd_1223" + store i64 %"$consume_1228", i64* @_gasrem, align 8 + %"$gasrem_1229" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1230" = icmp ugt i64 1, %"$gasrem_1229" + br i1 %"$gascmp_1230", label %"$out_of_gas_1231", label %"$have_gas_1232" + +"$out_of_gas_1231": ; preds = %"$have_gas_1227" + call void @_out_of_gas() + br label %"$have_gas_1232" + +"$have_gas_1232": ; preds = %"$out_of_gas_1231", %"$have_gas_1227" + %"$consume_1233" = sub i64 %"$gasrem_1229", 1 + store i64 %"$consume_1233", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_1234" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1235" = icmp ugt i64 1, %"$gasrem_1234" + br i1 %"$gascmp_1235", label %"$out_of_gas_1236", label %"$have_gas_1237" + +"$out_of_gas_1236": ; preds = %"$have_gas_1232" + call void @_out_of_gas() + br label %"$have_gas_1237" + +"$have_gas_1237": ; preds = %"$out_of_gas_1236", %"$have_gas_1232" + %"$consume_1238" = sub i64 %"$gasrem_1234", 1 + store i64 %"$consume_1238", i64* @_gasrem, align 8 + %"$msgobj_1239_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1239_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1239_salloc_load", i64 165) + %"$msgobj_1239_salloc" = bitcast i8* %"$msgobj_1239_salloc_salloc" to [165 x i8]* + %"$msgobj_1239" = bitcast [165 x i8]* %"$msgobj_1239_salloc" to i8* + store i8 4, i8* %"$msgobj_1239", align 1 + %"$msgobj_fname_1241" = getelementptr i8, i8* %"$msgobj_1239", i32 1 + %"$msgobj_fname_1242" = bitcast i8* %"$msgobj_fname_1241" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1240", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1242", align 8 + %"$msgobj_td_1243" = getelementptr i8, i8* %"$msgobj_1239", i32 17 + %"$msgobj_td_1244" = bitcast i8* %"$msgobj_td_1243" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1244", align 8 + %"$support_contract_1245" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_1246" = getelementptr i8, i8* %"$msgobj_1239", i32 25 + %"$msgobj_v_1247" = bitcast i8* %"$msgobj_v_1246" to [20 x i8]* + store [20 x i8] %"$support_contract_1245", [20 x i8]* %"$msgobj_v_1247", align 1 + %"$msgobj_fname_1249" = getelementptr i8, i8* %"$msgobj_1239", i32 45 + %"$msgobj_fname_1250" = bitcast i8* %"$msgobj_fname_1249" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1248", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1250", align 8 + %"$msgobj_td_1251" = getelementptr i8, i8* %"$msgobj_1239", i32 61 + %"$msgobj_td_1252" = bitcast i8* %"$msgobj_td_1251" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1252", align 8 + %"$msgobj_v_1254" = getelementptr i8, i8* %"$msgobj_1239", i32 69 + %"$msgobj_v_1255" = bitcast i8* %"$msgobj_v_1254" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_1253", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_1255", align 8 + %"$msgobj_fname_1257" = getelementptr i8, i8* %"$msgobj_1239", i32 85 + %"$msgobj_fname_1258" = bitcast i8* %"$msgobj_fname_1257" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1256", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1258", align 8 + %"$msgobj_td_1259" = getelementptr i8, i8* %"$msgobj_1239", i32 101 + %"$msgobj_td_1260" = bitcast i8* %"$msgobj_td_1259" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1260", align 8 + %"$msgobj_v_1261" = getelementptr i8, i8* %"$msgobj_1239", i32 109 + %"$msgobj_v_1262" = bitcast i8* %"$msgobj_v_1261" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1262", align 8 + %"$msgobj_fname_1264" = getelementptr i8, i8* %"$msgobj_1239", i32 125 + %"$msgobj_fname_1265" = bitcast i8* %"$msgobj_fname_1264" to %String* + store %String { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$stringlit_1263", i32 0, i32 0), i32 1 }, %String* %"$msgobj_fname_1265", align 8 + %"$msgobj_td_1266" = getelementptr i8, i8* %"$msgobj_1239", i32 141 + %"$msgobj_td_1267" = bitcast i8* %"$msgobj_td_1266" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1267", align 8 + %"$s1_1268" = load %String, %String* %s1, align 8 + %"$msgobj_v_1269" = getelementptr i8, i8* %"$msgobj_1239", i32 149 + %"$msgobj_v_1270" = bitcast i8* %"$msgobj_v_1269" to %String* + store %String %"$s1_1268", %String* %"$msgobj_v_1270", align 8 + store i8* %"$msgobj_1239", i8** %msg1, align 8 + %"$gasrem_1272" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1273" = icmp ugt i64 1, %"$gasrem_1272" + br i1 %"$gascmp_1273", label %"$out_of_gas_1274", label %"$have_gas_1275" + +"$out_of_gas_1274": ; preds = %"$have_gas_1237" + call void @_out_of_gas() + br label %"$have_gas_1275" + +"$have_gas_1275": ; preds = %"$out_of_gas_1274", %"$have_gas_1237" + %"$consume_1276" = sub i64 %"$gasrem_1272", 1 + store i64 %"$consume_1276", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_1277" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1278" = icmp ugt i64 1, %"$gasrem_1277" + br i1 %"$gascmp_1278", label %"$out_of_gas_1279", label %"$have_gas_1280" + +"$out_of_gas_1279": ; preds = %"$have_gas_1275" + call void @_out_of_gas() + br label %"$have_gas_1280" + +"$have_gas_1280": ; preds = %"$out_of_gas_1279", %"$have_gas_1275" + %"$consume_1281" = sub i64 %"$gasrem_1277", 1 + store i64 %"$consume_1281", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_20" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1282" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1283" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1282", 0 + %"$accounting_tests.one_msg_envptr_1284" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1282", 1 + %"$msg1_1285" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_1286" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1283"(i8* %"$accounting_tests.one_msg_envptr_1284", i8* %"$msg1_1285") + store %TName_List_Message* %"$accounting_tests.one_msg_call_1286", %TName_List_Message** %"$accounting_tests.one_msg_20", align 8 + %"$$accounting_tests.one_msg_20_1287" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_20", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_20_1287", %TName_List_Message** %msgs1, align 8 + %"$msgs1_1288" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_1288_1289" = bitcast %TName_List_Message* %"$msgs1_1288" to i8* + %"$_literal_cost_call_1290" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_1288_1289") + %"$gasrem_1291" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1292" = icmp ugt i64 %"$_literal_cost_call_1290", %"$gasrem_1291" + br i1 %"$gascmp_1292", label %"$out_of_gas_1293", label %"$have_gas_1294" + +"$out_of_gas_1293": ; preds = %"$have_gas_1280" + call void @_out_of_gas() + br label %"$have_gas_1294" + +"$have_gas_1294": ; preds = %"$out_of_gas_1293", %"$have_gas_1280" + %"$consume_1295" = sub i64 %"$gasrem_1291", %"$_literal_cost_call_1290" + store i64 %"$consume_1295", i64* @_gasrem, align 8 + %"$execptr_load_1296" = load i8*, i8** @_execptr, align 8 + %"$msgs1_1297" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_1296", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_1297") + %s2 = alloca %String, align 8 + %"$execptr_load_1299" = load i8*, i8** @_execptr, align 8 + %"$s2_call_1300" = call i8* @_fetch_field(i8* %"$execptr_load_1299", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_2_1298", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1) + %"$s2_1301" = bitcast i8* %"$s2_call_1300" to %String* + %"$s2_1302" = load %String, %String* %"$s2_1301", align 8 + store %String %"$s2_1302", %String* %s2, align 8 + %"$_literal_cost_s2_1303" = alloca %String, align 8 + %"$s2_1304" = load %String, %String* %s2, align 8 + store %String %"$s2_1304", %String* %"$_literal_cost_s2_1303", align 8 + %"$$_literal_cost_s2_1303_1305" = bitcast %String* %"$_literal_cost_s2_1303" to i8* + %"$_literal_cost_call_1306" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s2_1303_1305") + %"$gasadd_1307" = add i64 %"$_literal_cost_call_1306", 0 + %"$gasrem_1308" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1309" = icmp ugt i64 %"$gasadd_1307", %"$gasrem_1308" + br i1 %"$gascmp_1309", label %"$out_of_gas_1310", label %"$have_gas_1311" + +"$out_of_gas_1310": ; preds = %"$have_gas_1294" + call void @_out_of_gas() + br label %"$have_gas_1311" + +"$have_gas_1311": ; preds = %"$out_of_gas_1310", %"$have_gas_1294" + %"$consume_1312" = sub i64 %"$gasrem_1308", %"$gasadd_1307" + store i64 %"$consume_1312", i64* @_gasrem, align 8 + %"$gasrem_1313" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1314" = icmp ugt i64 1, %"$gasrem_1313" + br i1 %"$gascmp_1314", label %"$out_of_gas_1315", label %"$have_gas_1316" + +"$out_of_gas_1315": ; preds = %"$have_gas_1311" + call void @_out_of_gas() + br label %"$have_gas_1316" + +"$have_gas_1316": ; preds = %"$out_of_gas_1315", %"$have_gas_1311" + %"$consume_1317" = sub i64 %"$gasrem_1313", 1 + store i64 %"$consume_1317", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_1318" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1319" = icmp ugt i64 1, %"$gasrem_1318" + br i1 %"$gascmp_1319", label %"$out_of_gas_1320", label %"$have_gas_1321" + +"$out_of_gas_1320": ; preds = %"$have_gas_1316" + call void @_out_of_gas() + br label %"$have_gas_1321" + +"$have_gas_1321": ; preds = %"$out_of_gas_1320", %"$have_gas_1316" + %"$consume_1322" = sub i64 %"$gasrem_1318", 1 + store i64 %"$consume_1322", i64* @_gasrem, align 8 + %"$msgobj_1323_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1323_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1323_salloc_load", i64 165) + %"$msgobj_1323_salloc" = bitcast i8* %"$msgobj_1323_salloc_salloc" to [165 x i8]* + %"$msgobj_1323" = bitcast [165 x i8]* %"$msgobj_1323_salloc" to i8* + store i8 4, i8* %"$msgobj_1323", align 1 + %"$msgobj_fname_1325" = getelementptr i8, i8* %"$msgobj_1323", i32 1 + %"$msgobj_fname_1326" = bitcast i8* %"$msgobj_fname_1325" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1324", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1326", align 8 + %"$msgobj_td_1327" = getelementptr i8, i8* %"$msgobj_1323", i32 17 + %"$msgobj_td_1328" = bitcast i8* %"$msgobj_td_1327" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1328", align 8 + %"$support_contract_1329" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_1330" = getelementptr i8, i8* %"$msgobj_1323", i32 25 + %"$msgobj_v_1331" = bitcast i8* %"$msgobj_v_1330" to [20 x i8]* + store [20 x i8] %"$support_contract_1329", [20 x i8]* %"$msgobj_v_1331", align 1 + %"$msgobj_fname_1333" = getelementptr i8, i8* %"$msgobj_1323", i32 45 + %"$msgobj_fname_1334" = bitcast i8* %"$msgobj_fname_1333" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1332", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1334", align 8 + %"$msgobj_td_1335" = getelementptr i8, i8* %"$msgobj_1323", i32 61 + %"$msgobj_td_1336" = bitcast i8* %"$msgobj_td_1335" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1336", align 8 + %"$msgobj_v_1338" = getelementptr i8, i8* %"$msgobj_1323", i32 69 + %"$msgobj_v_1339" = bitcast i8* %"$msgobj_v_1338" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_1337", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_1339", align 8 + %"$msgobj_fname_1341" = getelementptr i8, i8* %"$msgobj_1323", i32 85 + %"$msgobj_fname_1342" = bitcast i8* %"$msgobj_fname_1341" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1340", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1342", align 8 + %"$msgobj_td_1343" = getelementptr i8, i8* %"$msgobj_1323", i32 101 + %"$msgobj_td_1344" = bitcast i8* %"$msgobj_td_1343" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1344", align 8 + %"$msgobj_v_1345" = getelementptr i8, i8* %"$msgobj_1323", i32 109 + %"$msgobj_v_1346" = bitcast i8* %"$msgobj_v_1345" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1346", align 8 + %"$msgobj_fname_1348" = getelementptr i8, i8* %"$msgobj_1323", i32 125 + %"$msgobj_fname_1349" = bitcast i8* %"$msgobj_fname_1348" to %String* + store %String { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$stringlit_1347", i32 0, i32 0), i32 1 }, %String* %"$msgobj_fname_1349", align 8 + %"$msgobj_td_1350" = getelementptr i8, i8* %"$msgobj_1323", i32 141 + %"$msgobj_td_1351" = bitcast i8* %"$msgobj_td_1350" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1351", align 8 + %"$s2_1352" = load %String, %String* %s2, align 8 + %"$msgobj_v_1353" = getelementptr i8, i8* %"$msgobj_1323", i32 149 + %"$msgobj_v_1354" = bitcast i8* %"$msgobj_v_1353" to %String* + store %String %"$s2_1352", %String* %"$msgobj_v_1354", align 8 + store i8* %"$msgobj_1323", i8** %msg2, align 8 + %"$gasrem_1356" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1357" = icmp ugt i64 1, %"$gasrem_1356" + br i1 %"$gascmp_1357", label %"$out_of_gas_1358", label %"$have_gas_1359" + +"$out_of_gas_1358": ; preds = %"$have_gas_1321" + call void @_out_of_gas() + br label %"$have_gas_1359" + +"$have_gas_1359": ; preds = %"$out_of_gas_1358", %"$have_gas_1321" + %"$consume_1360" = sub i64 %"$gasrem_1356", 1 + store i64 %"$consume_1360", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_1361" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1362" = icmp ugt i64 1, %"$gasrem_1361" + br i1 %"$gascmp_1362", label %"$out_of_gas_1363", label %"$have_gas_1364" + +"$out_of_gas_1363": ; preds = %"$have_gas_1359" + call void @_out_of_gas() + br label %"$have_gas_1364" + +"$have_gas_1364": ; preds = %"$out_of_gas_1363", %"$have_gas_1359" + %"$consume_1365" = sub i64 %"$gasrem_1361", 1 + store i64 %"$consume_1365", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_19" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1366" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1367" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1366", 0 + %"$accounting_tests.one_msg_envptr_1368" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1366", 1 + %"$msg2_1369" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_1370" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1367"(i8* %"$accounting_tests.one_msg_envptr_1368", i8* %"$msg2_1369") + store %TName_List_Message* %"$accounting_tests.one_msg_call_1370", %TName_List_Message** %"$accounting_tests.one_msg_19", align 8 + %"$$accounting_tests.one_msg_19_1371" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_19", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_19_1371", %TName_List_Message** %msgs2, align 8 + %"$msgs2_1372" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_1372_1373" = bitcast %TName_List_Message* %"$msgs2_1372" to i8* + %"$_literal_cost_call_1374" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_1372_1373") + %"$gasrem_1375" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1376" = icmp ugt i64 %"$_literal_cost_call_1374", %"$gasrem_1375" + br i1 %"$gascmp_1376", label %"$out_of_gas_1377", label %"$have_gas_1378" + +"$out_of_gas_1377": ; preds = %"$have_gas_1364" + call void @_out_of_gas() + br label %"$have_gas_1378" + +"$have_gas_1378": ; preds = %"$out_of_gas_1377", %"$have_gas_1364" + %"$consume_1379" = sub i64 %"$gasrem_1375", %"$_literal_cost_call_1374" + store i64 %"$consume_1379", i64* @_gasrem, align 8 + %"$execptr_load_1380" = load i8*, i8** @_execptr, align 8 + %"$msgs2_1381" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_1380", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_1381") + %"$gasrem_1382" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1383" = icmp ugt i64 1, %"$gasrem_1382" + br i1 %"$gascmp_1383", label %"$out_of_gas_1384", label %"$have_gas_1385" + +"$out_of_gas_1384": ; preds = %"$have_gas_1378" + call void @_out_of_gas() + br label %"$have_gas_1385" + +"$have_gas_1385": ; preds = %"$out_of_gas_1384", %"$have_gas_1378" + %"$consume_1386" = sub i64 %"$gasrem_1382", 1 + store i64 %"$consume_1386", i64* @_gasrem, align 8 + %msg_final = alloca i8*, align 8 + %"$gasrem_1387" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1388" = icmp ugt i64 1, %"$gasrem_1387" + br i1 %"$gascmp_1388", label %"$out_of_gas_1389", label %"$have_gas_1390" + +"$out_of_gas_1389": ; preds = %"$have_gas_1385" + call void @_out_of_gas() + br label %"$have_gas_1390" + +"$have_gas_1390": ; preds = %"$out_of_gas_1389", %"$have_gas_1385" + %"$consume_1391" = sub i64 %"$gasrem_1387", 1 + store i64 %"$consume_1391", i64* @_gasrem, align 8 + %"$msgobj_1392_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1392_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1392_salloc_load", i64 125) + %"$msgobj_1392_salloc" = bitcast i8* %"$msgobj_1392_salloc_salloc" to [125 x i8]* + %"$msgobj_1392" = bitcast [125 x i8]* %"$msgobj_1392_salloc" to i8* + store i8 3, i8* %"$msgobj_1392", align 1 + %"$msgobj_fname_1394" = getelementptr i8, i8* %"$msgobj_1392", i32 1 + %"$msgobj_fname_1395" = bitcast i8* %"$msgobj_fname_1394" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1393", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1395", align 8 + %"$msgobj_td_1396" = getelementptr i8, i8* %"$msgobj_1392", i32 17 + %"$msgobj_td_1397" = bitcast i8* %"$msgobj_td_1396" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1397", align 8 + %"$_this_address_1398" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_1399" = getelementptr i8, i8* %"$msgobj_1392", i32 25 + %"$msgobj_v_1400" = bitcast i8* %"$msgobj_v_1399" to [20 x i8]* + store [20 x i8] %"$_this_address_1398", [20 x i8]* %"$msgobj_v_1400", align 1 + %"$msgobj_fname_1402" = getelementptr i8, i8* %"$msgobj_1392", i32 45 + %"$msgobj_fname_1403" = bitcast i8* %"$msgobj_fname_1402" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1401", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1403", align 8 + %"$msgobj_td_1404" = getelementptr i8, i8* %"$msgobj_1392", i32 61 + %"$msgobj_td_1405" = bitcast i8* %"$msgobj_td_1404" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1405", align 8 + %"$msgobj_v_1407" = getelementptr i8, i8* %"$msgobj_1392", i32 69 + %"$msgobj_v_1408" = bitcast i8* %"$msgobj_v_1407" to %String* + store %String { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$stringlit_1406", i32 0, i32 0), i32 20 }, %String* %"$msgobj_v_1408", align 8 + %"$msgobj_fname_1410" = getelementptr i8, i8* %"$msgobj_1392", i32 85 + %"$msgobj_fname_1411" = bitcast i8* %"$msgobj_fname_1410" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1409", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1411", align 8 + %"$msgobj_td_1412" = getelementptr i8, i8* %"$msgobj_1392", i32 101 + %"$msgobj_td_1413" = bitcast i8* %"$msgobj_td_1412" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1413", align 8 + %"$msgobj_v_1414" = getelementptr i8, i8* %"$msgobj_1392", i32 109 + %"$msgobj_v_1415" = bitcast i8* %"$msgobj_v_1414" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1415", align 8 + store i8* %"$msgobj_1392", i8** %msg_final, align 8 + %"$gasrem_1417" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1418" = icmp ugt i64 1, %"$gasrem_1417" + br i1 %"$gascmp_1418", label %"$out_of_gas_1419", label %"$have_gas_1420" + +"$out_of_gas_1419": ; preds = %"$have_gas_1390" + call void @_out_of_gas() + br label %"$have_gas_1420" + +"$have_gas_1420": ; preds = %"$out_of_gas_1419", %"$have_gas_1390" + %"$consume_1421" = sub i64 %"$gasrem_1417", 1 + store i64 %"$consume_1421", i64* @_gasrem, align 8 + %msgs_final = alloca %TName_List_Message*, align 8 + %"$gasrem_1422" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1423" = icmp ugt i64 1, %"$gasrem_1422" + br i1 %"$gascmp_1423", label %"$out_of_gas_1424", label %"$have_gas_1425" + +"$out_of_gas_1424": ; preds = %"$have_gas_1420" + call void @_out_of_gas() + br label %"$have_gas_1425" + +"$have_gas_1425": ; preds = %"$out_of_gas_1424", %"$have_gas_1420" + %"$consume_1426" = sub i64 %"$gasrem_1422", 1 + store i64 %"$consume_1426", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_18" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1427" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1428" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1427", 0 + %"$accounting_tests.one_msg_envptr_1429" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1427", 1 + %"$msg_final_1430" = load i8*, i8** %msg_final, align 8 + %"$accounting_tests.one_msg_call_1431" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1428"(i8* %"$accounting_tests.one_msg_envptr_1429", i8* %"$msg_final_1430") + store %TName_List_Message* %"$accounting_tests.one_msg_call_1431", %TName_List_Message** %"$accounting_tests.one_msg_18", align 8 + %"$$accounting_tests.one_msg_18_1432" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_18", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_18_1432", %TName_List_Message** %msgs_final, align 8 + %"$msgs_final_1433" = load %TName_List_Message*, %TName_List_Message** %msgs_final, align 8 + %"$$msgs_final_1433_1434" = bitcast %TName_List_Message* %"$msgs_final_1433" to i8* + %"$_literal_cost_call_1435" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_final_1433_1434") + %"$gasrem_1436" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1437" = icmp ugt i64 %"$_literal_cost_call_1435", %"$gasrem_1436" + br i1 %"$gascmp_1437", label %"$out_of_gas_1438", label %"$have_gas_1439" + +"$out_of_gas_1438": ; preds = %"$have_gas_1425" + call void @_out_of_gas() + br label %"$have_gas_1439" + +"$have_gas_1439": ; preds = %"$out_of_gas_1438", %"$have_gas_1425" + %"$consume_1440" = sub i64 %"$gasrem_1436", %"$_literal_cost_call_1435" + store i64 %"$consume_1440", i64* @_gasrem, align 8 + %"$execptr_load_1441" = load i8*, i8** @_execptr, align 8 + %"$msgs_final_1442" = load %TName_List_Message*, %TName_List_Message** %msgs_final, align 8 + call void @_send(i8* %"$execptr_load_1441", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_final_1442") + ret void +} + +define void @Test_Send_1(i8* %0) { +entry: + %"$_amount_1444" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1445" = bitcast i8* %"$_amount_1444" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1445", align 8 + %"$_origin_1446" = getelementptr i8, i8* %0, i32 16 + %"$_origin_1447" = bitcast i8* %"$_origin_1446" to [20 x i8]* + %"$_sender_1448" = getelementptr i8, i8* %0, i32 36 + %"$_sender_1449" = bitcast i8* %"$_sender_1448" to [20 x i8]* + call void @"$Test_Send_1_1204"(%Uint128 %_amount, [20 x i8]* %"$_origin_1447", [20 x i8]* %"$_sender_1449") + ret void +} + +define internal void @"$Finalize_Test_Send_Helper_2_Msgs_1450"(%Uint128 %_amount, [20 x i8]* %"$_origin_1451", [20 x i8]* %"$_sender_1452", %Uint128 %test_no) { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1451", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1452", align 1 + %s1 = alloca %String, align 8 + %"$execptr_load_1454" = load i8*, i8** @_execptr, align 8 + %"$s1_call_1455" = call i8* @_fetch_field(i8* %"$execptr_load_1454", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_1_1453", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1) + %"$s1_1456" = bitcast i8* %"$s1_call_1455" to %String* + %"$s1_1457" = load %String, %String* %"$s1_1456", align 8 + store %String %"$s1_1457", %String* %s1, align 8 + %"$_literal_cost_s1_1458" = alloca %String, align 8 + %"$s1_1459" = load %String, %String* %s1, align 8 + store %String %"$s1_1459", %String* %"$_literal_cost_s1_1458", align 8 + %"$$_literal_cost_s1_1458_1460" = bitcast %String* %"$_literal_cost_s1_1458" to i8* + %"$_literal_cost_call_1461" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s1_1458_1460") + %"$gasadd_1462" = add i64 %"$_literal_cost_call_1461", 0 + %"$gasrem_1463" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1464" = icmp ugt i64 %"$gasadd_1462", %"$gasrem_1463" + br i1 %"$gascmp_1464", label %"$out_of_gas_1465", label %"$have_gas_1466" + +"$out_of_gas_1465": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1466" + +"$have_gas_1466": ; preds = %"$out_of_gas_1465", %entry + %"$consume_1467" = sub i64 %"$gasrem_1463", %"$gasadd_1462" + store i64 %"$consume_1467", i64* @_gasrem, align 8 + %s2 = alloca %String, align 8 + %"$execptr_load_1469" = load i8*, i8** @_execptr, align 8 + %"$s2_call_1470" = call i8* @_fetch_field(i8* %"$execptr_load_1469", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_2_1468", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1) + %"$s2_1471" = bitcast i8* %"$s2_call_1470" to %String* + %"$s2_1472" = load %String, %String* %"$s2_1471", align 8 + store %String %"$s2_1472", %String* %s2, align 8 + %"$_literal_cost_s2_1473" = alloca %String, align 8 + %"$s2_1474" = load %String, %String* %s2, align 8 + store %String %"$s2_1474", %String* %"$_literal_cost_s2_1473", align 8 + %"$$_literal_cost_s2_1473_1475" = bitcast %String* %"$_literal_cost_s2_1473" to i8* + %"$_literal_cost_call_1476" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s2_1473_1475") + %"$gasadd_1477" = add i64 %"$_literal_cost_call_1476", 0 + %"$gasrem_1478" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1479" = icmp ugt i64 %"$gasadd_1477", %"$gasrem_1478" + br i1 %"$gascmp_1479", label %"$out_of_gas_1480", label %"$have_gas_1481" + +"$out_of_gas_1480": ; preds = %"$have_gas_1466" + call void @_out_of_gas() + br label %"$have_gas_1481" + +"$have_gas_1481": ; preds = %"$out_of_gas_1480", %"$have_gas_1466" + %"$consume_1482" = sub i64 %"$gasrem_1478", %"$gasadd_1477" + store i64 %"$consume_1482", i64* @_gasrem, align 8 + %"$gasrem_1483" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1484" = icmp ugt i64 1, %"$gasrem_1483" + br i1 %"$gascmp_1484", label %"$out_of_gas_1485", label %"$have_gas_1486" + +"$out_of_gas_1485": ; preds = %"$have_gas_1481" + call void @_out_of_gas() + br label %"$have_gas_1486" + +"$have_gas_1486": ; preds = %"$out_of_gas_1485", %"$have_gas_1481" + %"$consume_1487" = sub i64 %"$gasrem_1483", 1 + store i64 %"$consume_1487", i64* @_gasrem, align 8 + %expected = alloca %TName_List_String*, align 8 + %"$gasrem_1488" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1489" = icmp ugt i64 1, %"$gasrem_1488" + br i1 %"$gascmp_1489", label %"$out_of_gas_1490", label %"$have_gas_1491" + +"$out_of_gas_1490": ; preds = %"$have_gas_1486" + call void @_out_of_gas() + br label %"$have_gas_1491" + +"$have_gas_1491": ; preds = %"$out_of_gas_1490", %"$have_gas_1486" + %"$consume_1492" = sub i64 %"$gasrem_1488", 1 + store i64 %"$consume_1492", i64* @_gasrem, align 8 + %mty = alloca %TName_List_String*, align 8 + %"$gasrem_1493" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1494" = icmp ugt i64 1, %"$gasrem_1493" + br i1 %"$gascmp_1494", label %"$out_of_gas_1495", label %"$have_gas_1496" + +"$out_of_gas_1495": ; preds = %"$have_gas_1491" + call void @_out_of_gas() + br label %"$have_gas_1496" + +"$have_gas_1496": ; preds = %"$out_of_gas_1495", %"$have_gas_1491" + %"$consume_1497" = sub i64 %"$gasrem_1493", 1 + store i64 %"$consume_1497", i64* @_gasrem, align 8 + %"$adtval_1498_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_1498_salloc" = call i8* @_salloc(i8* %"$adtval_1498_load", i64 1) + %"$adtval_1498" = bitcast i8* %"$adtval_1498_salloc" to %CName_Nil_String* + %"$adtgep_1499" = getelementptr inbounds %CName_Nil_String, %CName_Nil_String* %"$adtval_1498", i32 0, i32 0 + store i8 1, i8* %"$adtgep_1499", align 1 + %"$adtptr_1500" = bitcast %CName_Nil_String* %"$adtval_1498" to %TName_List_String* + store %TName_List_String* %"$adtptr_1500", %TName_List_String** %mty, align 8 + %"$gasrem_1501" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1502" = icmp ugt i64 1, %"$gasrem_1501" + br i1 %"$gascmp_1502", label %"$out_of_gas_1503", label %"$have_gas_1504" + +"$out_of_gas_1503": ; preds = %"$have_gas_1496" + call void @_out_of_gas() + br label %"$have_gas_1504" + +"$have_gas_1504": ; preds = %"$out_of_gas_1503", %"$have_gas_1496" + %"$consume_1505" = sub i64 %"$gasrem_1501", 1 + store i64 %"$consume_1505", i64* @_gasrem, align 8 + %fst = alloca %TName_List_String*, align 8 + %"$gasrem_1506" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1507" = icmp ugt i64 1, %"$gasrem_1506" + br i1 %"$gascmp_1507", label %"$out_of_gas_1508", label %"$have_gas_1509" + +"$out_of_gas_1508": ; preds = %"$have_gas_1504" + call void @_out_of_gas() + br label %"$have_gas_1509" + +"$have_gas_1509": ; preds = %"$out_of_gas_1508", %"$have_gas_1504" + %"$consume_1510" = sub i64 %"$gasrem_1506", 1 + store i64 %"$consume_1510", i64* @_gasrem, align 8 + %"$s1_1511" = load %String, %String* %s1, align 8 + %"$mty_1512" = load %TName_List_String*, %TName_List_String** %mty, align 8 + %"$adtval_1513_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_1513_salloc" = call i8* @_salloc(i8* %"$adtval_1513_load", i64 25) + %"$adtval_1513" = bitcast i8* %"$adtval_1513_salloc" to %CName_Cons_String* + %"$adtgep_1514" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_1513", i32 0, i32 0 + store i8 0, i8* %"$adtgep_1514", align 1 + %"$adtgep_1515" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_1513", i32 0, i32 1 + store %String %"$s1_1511", %String* %"$adtgep_1515", align 8 + %"$adtgep_1516" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_1513", i32 0, i32 2 + store %TName_List_String* %"$mty_1512", %TName_List_String** %"$adtgep_1516", align 8 + %"$adtptr_1517" = bitcast %CName_Cons_String* %"$adtval_1513" to %TName_List_String* + store %TName_List_String* %"$adtptr_1517", %TName_List_String** %fst, align 8 + %"$gasrem_1518" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1519" = icmp ugt i64 1, %"$gasrem_1518" + br i1 %"$gascmp_1519", label %"$out_of_gas_1520", label %"$have_gas_1521" + +"$out_of_gas_1520": ; preds = %"$have_gas_1509" + call void @_out_of_gas() + br label %"$have_gas_1521" + +"$have_gas_1521": ; preds = %"$out_of_gas_1520", %"$have_gas_1509" + %"$consume_1522" = sub i64 %"$gasrem_1518", 1 + store i64 %"$consume_1522", i64* @_gasrem, align 8 + %"$s2_1523" = load %String, %String* %s2, align 8 + %"$fst_1524" = load %TName_List_String*, %TName_List_String** %fst, align 8 + %"$adtval_1525_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_1525_salloc" = call i8* @_salloc(i8* %"$adtval_1525_load", i64 25) + %"$adtval_1525" = bitcast i8* %"$adtval_1525_salloc" to %CName_Cons_String* + %"$adtgep_1526" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_1525", i32 0, i32 0 + store i8 0, i8* %"$adtgep_1526", align 1 + %"$adtgep_1527" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_1525", i32 0, i32 1 + store %String %"$s2_1523", %String* %"$adtgep_1527", align 8 + %"$adtgep_1528" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_1525", i32 0, i32 2 + store %TName_List_String* %"$fst_1524", %TName_List_String** %"$adtgep_1528", align 8 + %"$adtptr_1529" = bitcast %CName_Cons_String* %"$adtval_1525" to %TName_List_String* + store %TName_List_String* %"$adtptr_1529", %TName_List_String** %expected, align 8 + %actual = alloca %TName_List_String*, align 8 + %"$execptr_load_1531" = load i8*, i8** @_execptr, align 8 + %"$actual_support_contract_1532" = alloca [20 x i8], align 1 + %"$support_contract_1533" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + store [20 x i8] %"$support_contract_1533", [20 x i8]* %"$actual_support_contract_1532", align 1 + %"$actual_call_1534" = call i8* @_fetch_remote_field(i8* %"$execptr_load_1531", [20 x i8]* %"$actual_support_contract_1532", i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stored_strings_1530", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", i32 0, i8* null, i32 1) + %"$actual_1535" = bitcast i8* %"$actual_call_1534" to %TName_List_String* + store %TName_List_String* %"$actual_1535", %TName_List_String** %actual, align 8 + %"$actual_1536" = load %TName_List_String*, %TName_List_String** %actual, align 8 + %"$$actual_1536_1537" = bitcast %TName_List_String* %"$actual_1536" to i8* + %"$_literal_cost_call_1538" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", i8* %"$$actual_1536_1537") + %"$gasadd_1539" = add i64 %"$_literal_cost_call_1538", 0 + %"$gasrem_1540" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1541" = icmp ugt i64 %"$gasadd_1539", %"$gasrem_1540" + br i1 %"$gascmp_1541", label %"$out_of_gas_1542", label %"$have_gas_1543" + +"$out_of_gas_1542": ; preds = %"$have_gas_1521" + call void @_out_of_gas() + br label %"$have_gas_1543" + +"$have_gas_1543": ; preds = %"$out_of_gas_1542", %"$have_gas_1521" + %"$consume_1544" = sub i64 %"$gasrem_1540", %"$gasadd_1539" + store i64 %"$consume_1544", i64* @_gasrem, align 8 + %"$gasrem_1545" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1546" = icmp ugt i64 1, %"$gasrem_1545" + br i1 %"$gascmp_1546", label %"$out_of_gas_1547", label %"$have_gas_1548" + +"$out_of_gas_1547": ; preds = %"$have_gas_1543" + call void @_out_of_gas() + br label %"$have_gas_1548" + +"$have_gas_1548": ; preds = %"$out_of_gas_1547", %"$have_gas_1543" + %"$consume_1549" = sub i64 %"$gasrem_1545", 1 + store i64 %"$consume_1549", i64* @_gasrem, align 8 + %res = alloca %TName_Bool*, align 8 + %"$gasrem_1550" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1551" = icmp ugt i64 1, %"$gasrem_1550" + br i1 %"$gascmp_1551", label %"$out_of_gas_1552", label %"$have_gas_1553" + +"$out_of_gas_1552": ; preds = %"$have_gas_1548" + call void @_out_of_gas() + br label %"$have_gas_1553" + +"$have_gas_1553": ; preds = %"$out_of_gas_1552", %"$have_gas_1548" + %"$consume_1554" = sub i64 %"$gasrem_1550", 1 + store i64 %"$consume_1554", i64* @_gasrem, align 8 + %"$accounting_tests.list_eq_string_21" = alloca { %TName_Bool* (i8*, %TName_List_String*)*, i8* }, align 8 + %"$accounting_tests.list_eq_string_1555" = load { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }, { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* }* @accounting_tests.list_eq_string, align 8 + %"$accounting_tests.list_eq_string_fptr_1556" = extractvalue { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$accounting_tests.list_eq_string_1555", 0 + %"$accounting_tests.list_eq_string_envptr_1557" = extractvalue { { %TName_Bool* (i8*, %TName_List_String*)*, i8* } (i8*, %TName_List_String*)*, i8* } %"$accounting_tests.list_eq_string_1555", 1 + %"$expected_1558" = load %TName_List_String*, %TName_List_String** %expected, align 8 + %"$accounting_tests.list_eq_string_call_1559" = call { %TName_Bool* (i8*, %TName_List_String*)*, i8* } %"$accounting_tests.list_eq_string_fptr_1556"(i8* %"$accounting_tests.list_eq_string_envptr_1557", %TName_List_String* %"$expected_1558") + store { %TName_Bool* (i8*, %TName_List_String*)*, i8* } %"$accounting_tests.list_eq_string_call_1559", { %TName_Bool* (i8*, %TName_List_String*)*, i8* }* %"$accounting_tests.list_eq_string_21", align 8 + %"$accounting_tests.list_eq_string_22" = alloca %TName_Bool*, align 8 + %"$$accounting_tests.list_eq_string_21_1560" = load { %TName_Bool* (i8*, %TName_List_String*)*, i8* }, { %TName_Bool* (i8*, %TName_List_String*)*, i8* }* %"$accounting_tests.list_eq_string_21", align 8 + %"$$accounting_tests.list_eq_string_21_fptr_1561" = extractvalue { %TName_Bool* (i8*, %TName_List_String*)*, i8* } %"$$accounting_tests.list_eq_string_21_1560", 0 + %"$$accounting_tests.list_eq_string_21_envptr_1562" = extractvalue { %TName_Bool* (i8*, %TName_List_String*)*, i8* } %"$$accounting_tests.list_eq_string_21_1560", 1 + %"$actual_1563" = load %TName_List_String*, %TName_List_String** %actual, align 8 + %"$$accounting_tests.list_eq_string_21_call_1564" = call %TName_Bool* %"$$accounting_tests.list_eq_string_21_fptr_1561"(i8* %"$$accounting_tests.list_eq_string_21_envptr_1562", %TName_List_String* %"$actual_1563") + store %TName_Bool* %"$$accounting_tests.list_eq_string_21_call_1564", %TName_Bool** %"$accounting_tests.list_eq_string_22", align 8 + %"$$accounting_tests.list_eq_string_22_1565" = load %TName_Bool*, %TName_Bool** %"$accounting_tests.list_eq_string_22", align 8 + store %TName_Bool* %"$$accounting_tests.list_eq_string_22_1565", %TName_Bool** %res, align 8 + %"$gasrem_1566" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1567" = icmp ugt i64 2, %"$gasrem_1566" + br i1 %"$gascmp_1567", label %"$out_of_gas_1568", label %"$have_gas_1569" + +"$out_of_gas_1568": ; preds = %"$have_gas_1553" + call void @_out_of_gas() + br label %"$have_gas_1569" + +"$have_gas_1569": ; preds = %"$out_of_gas_1568", %"$have_gas_1553" + %"$consume_1570" = sub i64 %"$gasrem_1566", 2 + store i64 %"$consume_1570", i64* @_gasrem, align 8 + %"$res_1572" = load %TName_Bool*, %TName_Bool** %res, align 8 + %"$res_tag_1573" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$res_1572", i32 0, i32 0 + %"$res_tag_1574" = load i8, i8* %"$res_tag_1573", align 1 + switch i8 %"$res_tag_1574", label %"$empty_default_1575" [ + i8 0, label %"$True_1576" + i8 1, label %"$False_1578" + ] + +"$True_1576": ; preds = %"$have_gas_1569" + %"$res_1577" = bitcast %TName_Bool* %"$res_1572" to %CName_True* + br label %"$matchsucc_1571" + +"$False_1578": ; preds = %"$have_gas_1569" + %"$res_1579" = bitcast %TName_Bool* %"$res_1572" to %CName_False* + %"$gasrem_1580" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1581" = icmp ugt i64 1, %"$gasrem_1580" + br i1 %"$gascmp_1581", label %"$out_of_gas_1582", label %"$have_gas_1583" + +"$out_of_gas_1582": ; preds = %"$False_1578" + call void @_out_of_gas() + br label %"$have_gas_1583" + +"$have_gas_1583": ; preds = %"$out_of_gas_1582", %"$False_1578" + %"$consume_1584" = sub i64 %"$gasrem_1580", 1 + store i64 %"$consume_1584", i64* @_gasrem, align 8 + %e = alloca i8*, align 8 + %"$gasrem_1585" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1586" = icmp ugt i64 1, %"$gasrem_1585" + br i1 %"$gascmp_1586", label %"$out_of_gas_1587", label %"$have_gas_1588" + +"$out_of_gas_1587": ; preds = %"$have_gas_1583" + call void @_out_of_gas() + br label %"$have_gas_1588" + +"$have_gas_1588": ; preds = %"$out_of_gas_1587", %"$have_gas_1583" + %"$consume_1589" = sub i64 %"$gasrem_1585", 1 + store i64 %"$consume_1589", i64* @_gasrem, align 8 + %"$msgobj_1590_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1590_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1590_salloc_load", i64 145) + %"$msgobj_1590_salloc" = bitcast i8* %"$msgobj_1590_salloc_salloc" to [145 x i8]* + %"$msgobj_1590" = bitcast [145 x i8]* %"$msgobj_1590_salloc" to i8* + store i8 4, i8* %"$msgobj_1590", align 1 + %"$msgobj_fname_1592" = getelementptr i8, i8* %"$msgobj_1590", i32 1 + %"$msgobj_fname_1593" = bitcast i8* %"$msgobj_fname_1592" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1591", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1593", align 8 + %"$msgobj_td_1594" = getelementptr i8, i8* %"$msgobj_1590", i32 17 + %"$msgobj_td_1595" = bitcast i8* %"$msgobj_td_1594" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1595", align 8 + %"$msgobj_v_1597" = getelementptr i8, i8* %"$msgobj_1590", i32 25 + %"$msgobj_v_1598" = bitcast i8* %"$msgobj_v_1597" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_1596", i32 0, i32 0), i32 16 }, %String* %"$msgobj_v_1598", align 8 + %"$msgobj_fname_1600" = getelementptr i8, i8* %"$msgobj_1590", i32 41 + %"$msgobj_fname_1601" = bitcast i8* %"$msgobj_fname_1600" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1599", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1601", align 8 + %"$msgobj_td_1602" = getelementptr i8, i8* %"$msgobj_1590", i32 57 + %"$msgobj_td_1603" = bitcast i8* %"$msgobj_td_1602" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1603", align 8 + %"$msgobj_v_1604" = getelementptr i8, i8* %"$msgobj_1590", i32 65 + %"$msgobj_v_1605" = bitcast i8* %"$msgobj_v_1604" to %Uint128* + store %Uint128 %test_no, %Uint128* %"$msgobj_v_1605", align 8 + %"$msgobj_fname_1607" = getelementptr i8, i8* %"$msgobj_1590", i32 81 + %"$msgobj_fname_1608" = bitcast i8* %"$msgobj_fname_1607" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_1606", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_1608", align 8 + %"$msgobj_td_1609" = getelementptr i8, i8* %"$msgobj_1590", i32 97 + %"$msgobj_td_1610" = bitcast i8* %"$msgobj_td_1609" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", %_TyDescrTy_Typ** %"$msgobj_td_1610", align 8 + %"$expected_1611" = load %TName_List_String*, %TName_List_String** %expected, align 8 + %"$msgobj_v_1612" = getelementptr i8, i8* %"$msgobj_1590", i32 105 + %"$msgobj_v_1613" = bitcast i8* %"$msgobj_v_1612" to %TName_List_String** + store %TName_List_String* %"$expected_1611", %TName_List_String** %"$msgobj_v_1613", align 8 + %"$msgobj_fname_1615" = getelementptr i8, i8* %"$msgobj_1590", i32 113 + %"$msgobj_fname_1616" = bitcast i8* %"$msgobj_fname_1615" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_1614", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_1616", align 8 + %"$msgobj_td_1617" = getelementptr i8, i8* %"$msgobj_1590", i32 129 + %"$msgobj_td_1618" = bitcast i8* %"$msgobj_td_1617" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_122", %_TyDescrTy_Typ** %"$msgobj_td_1618", align 8 + %"$actual_1619" = load %TName_List_String*, %TName_List_String** %actual, align 8 + %"$msgobj_v_1620" = getelementptr i8, i8* %"$msgobj_1590", i32 137 + %"$msgobj_v_1621" = bitcast i8* %"$msgobj_v_1620" to %TName_List_String** + store %TName_List_String* %"$actual_1619", %TName_List_String** %"$msgobj_v_1621", align 8 + store i8* %"$msgobj_1590", i8** %e, align 8 + %"$e_1623" = load i8*, i8** %e, align 8 + %"$_literal_cost_call_1625" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_1623") + %"$gasrem_1626" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1627" = icmp ugt i64 %"$_literal_cost_call_1625", %"$gasrem_1626" + br i1 %"$gascmp_1627", label %"$out_of_gas_1628", label %"$have_gas_1629" + +"$out_of_gas_1628": ; preds = %"$have_gas_1588" + call void @_out_of_gas() + br label %"$have_gas_1629" + +"$have_gas_1629": ; preds = %"$out_of_gas_1628", %"$have_gas_1588" + %"$consume_1630" = sub i64 %"$gasrem_1626", %"$_literal_cost_call_1625" + store i64 %"$consume_1630", i64* @_gasrem, align 8 + %"$execptr_load_1631" = load i8*, i8** @_execptr, align 8 + %"$e_1632" = load i8*, i8** %e, align 8 + call void @_throw(i8* %"$execptr_load_1631", %_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_1632") + br label %"$matchsucc_1571" + +"$empty_default_1575": ; preds = %"$have_gas_1569" + br label %"$matchsucc_1571" + +"$matchsucc_1571": ; preds = %"$have_gas_1629", %"$True_1576", %"$empty_default_1575" + ret void +} + +define internal void @"$Finalize_Test_Send_1_1633"(%Uint128 %_amount, [20 x i8]* %"$_origin_1634", [20 x i8]* %"$_sender_1635") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1634", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1635", align 1 + %"$gasrem_1636" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1637" = icmp ugt i64 1, %"$gasrem_1636" + br i1 %"$gascmp_1637", label %"$out_of_gas_1638", label %"$have_gas_1639" + +"$out_of_gas_1638": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1639" + +"$have_gas_1639": ; preds = %"$out_of_gas_1638", %entry + %"$consume_1640" = sub i64 %"$gasrem_1636", 1 + store i64 %"$consume_1640", i64* @_gasrem, align 8 + %x = alloca %Uint128, align 8 + %"$gasrem_1641" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1642" = icmp ugt i64 1, %"$gasrem_1641" + br i1 %"$gascmp_1642", label %"$out_of_gas_1643", label %"$have_gas_1644" + +"$out_of_gas_1643": ; preds = %"$have_gas_1639" + call void @_out_of_gas() + br label %"$have_gas_1644" + +"$have_gas_1644": ; preds = %"$out_of_gas_1643", %"$have_gas_1639" + %"$consume_1645" = sub i64 %"$gasrem_1641", 1 + store i64 %"$consume_1645", i64* @_gasrem, align 8 + store %Uint128 { i128 1 }, %Uint128* %x, align 8 + %"$gasrem_1646" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1647" = icmp ugt i64 1, %"$gasrem_1646" + br i1 %"$gascmp_1647", label %"$out_of_gas_1648", label %"$have_gas_1649" + +"$out_of_gas_1648": ; preds = %"$have_gas_1644" + call void @_out_of_gas() + br label %"$have_gas_1649" + +"$have_gas_1649": ; preds = %"$out_of_gas_1648", %"$have_gas_1644" + %"$consume_1650" = sub i64 %"$gasrem_1646", 1 + store i64 %"$consume_1650", i64* @_gasrem, align 8 + %"$Finalize_Test_Send_Helper_2_Msgs__origin_1651" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__origin_1651", align 1 + %"$Finalize_Test_Send_Helper_2_Msgs__sender_1652" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__sender_1652", align 1 + %"$x_1653" = load %Uint128, %Uint128* %x, align 8 + call void @"$Finalize_Test_Send_Helper_2_Msgs_1450"(%Uint128 %_amount, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__origin_1651", [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__sender_1652", %Uint128 %"$x_1653") + ret void +} + +define void @Finalize_Test_Send_1(i8* %0) { +entry: + %"$_amount_1655" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1656" = bitcast i8* %"$_amount_1655" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1656", align 8 + %"$_origin_1657" = getelementptr i8, i8* %0, i32 16 + %"$_origin_1658" = bitcast i8* %"$_origin_1657" to [20 x i8]* + %"$_sender_1659" = getelementptr i8, i8* %0, i32 36 + %"$_sender_1660" = bitcast i8* %"$_sender_1659" to [20 x i8]* + call void @"$Finalize_Test_Send_1_1633"(%Uint128 %_amount, [20 x i8]* %"$_origin_1658", [20 x i8]* %"$_sender_1660") + ret void +} + +define internal void @"$Test_Send_2_1661"(%Uint128 %_amount, [20 x i8]* %"$_origin_1662", [20 x i8]* %"$_sender_1663") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1662", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1663", align 1 + %"$gasrem_1664" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1665" = icmp ugt i64 1, %"$gasrem_1664" + br i1 %"$gascmp_1665", label %"$out_of_gas_1666", label %"$have_gas_1667" + +"$out_of_gas_1666": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1667" + +"$have_gas_1667": ; preds = %"$out_of_gas_1666", %entry + %"$consume_1668" = sub i64 %"$gasrem_1664", 1 + store i64 %"$consume_1668", i64* @_gasrem, align 8 + %"$AssertReset__origin_1669" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_1669", align 1 + %"$AssertReset__sender_1670" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_1670", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_1669", [20 x i8]* %"$AssertReset__sender_1670") + %s1 = alloca %String, align 8 + %"$execptr_load_1672" = load i8*, i8** @_execptr, align 8 + %"$s1_call_1673" = call i8* @_fetch_field(i8* %"$execptr_load_1672", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_1_1671", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1) + %"$s1_1674" = bitcast i8* %"$s1_call_1673" to %String* + %"$s1_1675" = load %String, %String* %"$s1_1674", align 8 + store %String %"$s1_1675", %String* %s1, align 8 + %"$_literal_cost_s1_1676" = alloca %String, align 8 + %"$s1_1677" = load %String, %String* %s1, align 8 + store %String %"$s1_1677", %String* %"$_literal_cost_s1_1676", align 8 + %"$$_literal_cost_s1_1676_1678" = bitcast %String* %"$_literal_cost_s1_1676" to i8* + %"$_literal_cost_call_1679" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s1_1676_1678") + %"$gasadd_1680" = add i64 %"$_literal_cost_call_1679", 0 + %"$gasrem_1681" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1682" = icmp ugt i64 %"$gasadd_1680", %"$gasrem_1681" + br i1 %"$gascmp_1682", label %"$out_of_gas_1683", label %"$have_gas_1684" + +"$out_of_gas_1683": ; preds = %"$have_gas_1667" + call void @_out_of_gas() + br label %"$have_gas_1684" + +"$have_gas_1684": ; preds = %"$out_of_gas_1683", %"$have_gas_1667" + %"$consume_1685" = sub i64 %"$gasrem_1681", %"$gasadd_1680" + store i64 %"$consume_1685", i64* @_gasrem, align 8 + %"$gasrem_1686" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1687" = icmp ugt i64 1, %"$gasrem_1686" + br i1 %"$gascmp_1687", label %"$out_of_gas_1688", label %"$have_gas_1689" + +"$out_of_gas_1688": ; preds = %"$have_gas_1684" + call void @_out_of_gas() + br label %"$have_gas_1689" + +"$have_gas_1689": ; preds = %"$out_of_gas_1688", %"$have_gas_1684" + %"$consume_1690" = sub i64 %"$gasrem_1686", 1 + store i64 %"$consume_1690", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_1691" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1692" = icmp ugt i64 1, %"$gasrem_1691" + br i1 %"$gascmp_1692", label %"$out_of_gas_1693", label %"$have_gas_1694" + +"$out_of_gas_1693": ; preds = %"$have_gas_1689" + call void @_out_of_gas() + br label %"$have_gas_1694" + +"$have_gas_1694": ; preds = %"$out_of_gas_1693", %"$have_gas_1689" + %"$consume_1695" = sub i64 %"$gasrem_1691", 1 + store i64 %"$consume_1695", i64* @_gasrem, align 8 + %"$msgobj_1696_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1696_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1696_salloc_load", i64 165) + %"$msgobj_1696_salloc" = bitcast i8* %"$msgobj_1696_salloc_salloc" to [165 x i8]* + %"$msgobj_1696" = bitcast [165 x i8]* %"$msgobj_1696_salloc" to i8* + store i8 4, i8* %"$msgobj_1696", align 1 + %"$msgobj_fname_1698" = getelementptr i8, i8* %"$msgobj_1696", i32 1 + %"$msgobj_fname_1699" = bitcast i8* %"$msgobj_fname_1698" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1697", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1699", align 8 + %"$msgobj_td_1700" = getelementptr i8, i8* %"$msgobj_1696", i32 17 + %"$msgobj_td_1701" = bitcast i8* %"$msgobj_td_1700" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1701", align 8 + %"$support_contract_1702" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_1703" = getelementptr i8, i8* %"$msgobj_1696", i32 25 + %"$msgobj_v_1704" = bitcast i8* %"$msgobj_v_1703" to [20 x i8]* + store [20 x i8] %"$support_contract_1702", [20 x i8]* %"$msgobj_v_1704", align 1 + %"$msgobj_fname_1706" = getelementptr i8, i8* %"$msgobj_1696", i32 45 + %"$msgobj_fname_1707" = bitcast i8* %"$msgobj_fname_1706" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1705", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1707", align 8 + %"$msgobj_td_1708" = getelementptr i8, i8* %"$msgobj_1696", i32 61 + %"$msgobj_td_1709" = bitcast i8* %"$msgobj_td_1708" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1709", align 8 + %"$msgobj_v_1711" = getelementptr i8, i8* %"$msgobj_1696", i32 69 + %"$msgobj_v_1712" = bitcast i8* %"$msgobj_v_1711" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_1710", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_1712", align 8 + %"$msgobj_fname_1714" = getelementptr i8, i8* %"$msgobj_1696", i32 85 + %"$msgobj_fname_1715" = bitcast i8* %"$msgobj_fname_1714" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1713", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1715", align 8 + %"$msgobj_td_1716" = getelementptr i8, i8* %"$msgobj_1696", i32 101 + %"$msgobj_td_1717" = bitcast i8* %"$msgobj_td_1716" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1717", align 8 + %"$msgobj_v_1718" = getelementptr i8, i8* %"$msgobj_1696", i32 109 + %"$msgobj_v_1719" = bitcast i8* %"$msgobj_v_1718" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1719", align 8 + %"$msgobj_fname_1721" = getelementptr i8, i8* %"$msgobj_1696", i32 125 + %"$msgobj_fname_1722" = bitcast i8* %"$msgobj_fname_1721" to %String* + store %String { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$stringlit_1720", i32 0, i32 0), i32 1 }, %String* %"$msgobj_fname_1722", align 8 + %"$msgobj_td_1723" = getelementptr i8, i8* %"$msgobj_1696", i32 141 + %"$msgobj_td_1724" = bitcast i8* %"$msgobj_td_1723" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1724", align 8 + %"$s1_1725" = load %String, %String* %s1, align 8 + %"$msgobj_v_1726" = getelementptr i8, i8* %"$msgobj_1696", i32 149 + %"$msgobj_v_1727" = bitcast i8* %"$msgobj_v_1726" to %String* + store %String %"$s1_1725", %String* %"$msgobj_v_1727", align 8 + store i8* %"$msgobj_1696", i8** %msg1, align 8 + %s2 = alloca %String, align 8 + %"$execptr_load_1730" = load i8*, i8** @_execptr, align 8 + %"$s2_call_1731" = call i8* @_fetch_field(i8* %"$execptr_load_1730", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_2_1729", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1) + %"$s2_1732" = bitcast i8* %"$s2_call_1731" to %String* + %"$s2_1733" = load %String, %String* %"$s2_1732", align 8 + store %String %"$s2_1733", %String* %s2, align 8 + %"$_literal_cost_s2_1734" = alloca %String, align 8 + %"$s2_1735" = load %String, %String* %s2, align 8 + store %String %"$s2_1735", %String* %"$_literal_cost_s2_1734", align 8 + %"$$_literal_cost_s2_1734_1736" = bitcast %String* %"$_literal_cost_s2_1734" to i8* + %"$_literal_cost_call_1737" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s2_1734_1736") + %"$gasadd_1738" = add i64 %"$_literal_cost_call_1737", 0 + %"$gasrem_1739" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1740" = icmp ugt i64 %"$gasadd_1738", %"$gasrem_1739" + br i1 %"$gascmp_1740", label %"$out_of_gas_1741", label %"$have_gas_1742" + +"$out_of_gas_1741": ; preds = %"$have_gas_1694" + call void @_out_of_gas() + br label %"$have_gas_1742" + +"$have_gas_1742": ; preds = %"$out_of_gas_1741", %"$have_gas_1694" + %"$consume_1743" = sub i64 %"$gasrem_1739", %"$gasadd_1738" + store i64 %"$consume_1743", i64* @_gasrem, align 8 + %"$gasrem_1744" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1745" = icmp ugt i64 1, %"$gasrem_1744" + br i1 %"$gascmp_1745", label %"$out_of_gas_1746", label %"$have_gas_1747" + +"$out_of_gas_1746": ; preds = %"$have_gas_1742" + call void @_out_of_gas() + br label %"$have_gas_1747" + +"$have_gas_1747": ; preds = %"$out_of_gas_1746", %"$have_gas_1742" + %"$consume_1748" = sub i64 %"$gasrem_1744", 1 + store i64 %"$consume_1748", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_1749" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1750" = icmp ugt i64 1, %"$gasrem_1749" + br i1 %"$gascmp_1750", label %"$out_of_gas_1751", label %"$have_gas_1752" + +"$out_of_gas_1751": ; preds = %"$have_gas_1747" + call void @_out_of_gas() + br label %"$have_gas_1752" + +"$have_gas_1752": ; preds = %"$out_of_gas_1751", %"$have_gas_1747" + %"$consume_1753" = sub i64 %"$gasrem_1749", 1 + store i64 %"$consume_1753", i64* @_gasrem, align 8 + %"$msgobj_1754_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1754_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1754_salloc_load", i64 165) + %"$msgobj_1754_salloc" = bitcast i8* %"$msgobj_1754_salloc_salloc" to [165 x i8]* + %"$msgobj_1754" = bitcast [165 x i8]* %"$msgobj_1754_salloc" to i8* + store i8 4, i8* %"$msgobj_1754", align 1 + %"$msgobj_fname_1756" = getelementptr i8, i8* %"$msgobj_1754", i32 1 + %"$msgobj_fname_1757" = bitcast i8* %"$msgobj_fname_1756" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1755", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1757", align 8 + %"$msgobj_td_1758" = getelementptr i8, i8* %"$msgobj_1754", i32 17 + %"$msgobj_td_1759" = bitcast i8* %"$msgobj_td_1758" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1759", align 8 + %"$support_contract_1760" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_1761" = getelementptr i8, i8* %"$msgobj_1754", i32 25 + %"$msgobj_v_1762" = bitcast i8* %"$msgobj_v_1761" to [20 x i8]* + store [20 x i8] %"$support_contract_1760", [20 x i8]* %"$msgobj_v_1762", align 1 + %"$msgobj_fname_1764" = getelementptr i8, i8* %"$msgobj_1754", i32 45 + %"$msgobj_fname_1765" = bitcast i8* %"$msgobj_fname_1764" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1763", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1765", align 8 + %"$msgobj_td_1766" = getelementptr i8, i8* %"$msgobj_1754", i32 61 + %"$msgobj_td_1767" = bitcast i8* %"$msgobj_td_1766" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1767", align 8 + %"$msgobj_v_1769" = getelementptr i8, i8* %"$msgobj_1754", i32 69 + %"$msgobj_v_1770" = bitcast i8* %"$msgobj_v_1769" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_1768", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_1770", align 8 + %"$msgobj_fname_1772" = getelementptr i8, i8* %"$msgobj_1754", i32 85 + %"$msgobj_fname_1773" = bitcast i8* %"$msgobj_fname_1772" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1771", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1773", align 8 + %"$msgobj_td_1774" = getelementptr i8, i8* %"$msgobj_1754", i32 101 + %"$msgobj_td_1775" = bitcast i8* %"$msgobj_td_1774" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1775", align 8 + %"$msgobj_v_1776" = getelementptr i8, i8* %"$msgobj_1754", i32 109 + %"$msgobj_v_1777" = bitcast i8* %"$msgobj_v_1776" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1777", align 8 + %"$msgobj_fname_1779" = getelementptr i8, i8* %"$msgobj_1754", i32 125 + %"$msgobj_fname_1780" = bitcast i8* %"$msgobj_fname_1779" to %String* + store %String { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$stringlit_1778", i32 0, i32 0), i32 1 }, %String* %"$msgobj_fname_1780", align 8 + %"$msgobj_td_1781" = getelementptr i8, i8* %"$msgobj_1754", i32 141 + %"$msgobj_td_1782" = bitcast i8* %"$msgobj_td_1781" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1782", align 8 + %"$s2_1783" = load %String, %String* %s2, align 8 + %"$msgobj_v_1784" = getelementptr i8, i8* %"$msgobj_1754", i32 149 + %"$msgobj_v_1785" = bitcast i8* %"$msgobj_v_1784" to %String* + store %String %"$s2_1783", %String* %"$msgobj_v_1785", align 8 + store i8* %"$msgobj_1754", i8** %msg2, align 8 + %"$gasrem_1787" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1788" = icmp ugt i64 1, %"$gasrem_1787" + br i1 %"$gascmp_1788", label %"$out_of_gas_1789", label %"$have_gas_1790" + +"$out_of_gas_1789": ; preds = %"$have_gas_1752" + call void @_out_of_gas() + br label %"$have_gas_1790" + +"$have_gas_1790": ; preds = %"$out_of_gas_1789", %"$have_gas_1752" + %"$consume_1791" = sub i64 %"$gasrem_1787", 1 + store i64 %"$consume_1791", i64* @_gasrem, align 8 + %msgs_tmp = alloca %TName_List_Message*, align 8 + %"$gasrem_1792" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1793" = icmp ugt i64 1, %"$gasrem_1792" + br i1 %"$gascmp_1793", label %"$out_of_gas_1794", label %"$have_gas_1795" + +"$out_of_gas_1794": ; preds = %"$have_gas_1790" + call void @_out_of_gas() + br label %"$have_gas_1795" + +"$have_gas_1795": ; preds = %"$out_of_gas_1794", %"$have_gas_1790" + %"$consume_1796" = sub i64 %"$gasrem_1792", 1 + store i64 %"$consume_1796", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_24" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1797" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1798" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1797", 0 + %"$accounting_tests.one_msg_envptr_1799" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1797", 1 + %"$msg2_1800" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_1801" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1798"(i8* %"$accounting_tests.one_msg_envptr_1799", i8* %"$msg2_1800") + store %TName_List_Message* %"$accounting_tests.one_msg_call_1801", %TName_List_Message** %"$accounting_tests.one_msg_24", align 8 + %"$$accounting_tests.one_msg_24_1802" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_24", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_24_1802", %TName_List_Message** %msgs_tmp, align 8 + %"$gasrem_1803" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1804" = icmp ugt i64 1, %"$gasrem_1803" + br i1 %"$gascmp_1804", label %"$out_of_gas_1805", label %"$have_gas_1806" + +"$out_of_gas_1805": ; preds = %"$have_gas_1795" + call void @_out_of_gas() + br label %"$have_gas_1806" + +"$have_gas_1806": ; preds = %"$out_of_gas_1805", %"$have_gas_1795" + %"$consume_1807" = sub i64 %"$gasrem_1803", 1 + store i64 %"$consume_1807", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_1808" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1809" = icmp ugt i64 1, %"$gasrem_1808" + br i1 %"$gascmp_1809", label %"$out_of_gas_1810", label %"$have_gas_1811" + +"$out_of_gas_1810": ; preds = %"$have_gas_1806" + call void @_out_of_gas() + br label %"$have_gas_1811" + +"$have_gas_1811": ; preds = %"$out_of_gas_1810", %"$have_gas_1806" + %"$consume_1812" = sub i64 %"$gasrem_1808", 1 + store i64 %"$consume_1812", i64* @_gasrem, align 8 + %"$msg1_1813" = load i8*, i8** %msg1, align 8 + %"$msgs_tmp_1814" = load %TName_List_Message*, %TName_List_Message** %msgs_tmp, align 8 + %"$adtval_1815_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_1815_salloc" = call i8* @_salloc(i8* %"$adtval_1815_load", i64 17) + %"$adtval_1815" = bitcast i8* %"$adtval_1815_salloc" to %CName_Cons_Message* + %"$adtgep_1816" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_1815", i32 0, i32 0 + store i8 0, i8* %"$adtgep_1816", align 1 + %"$adtgep_1817" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_1815", i32 0, i32 1 + store i8* %"$msg1_1813", i8** %"$adtgep_1817", align 8 + %"$adtgep_1818" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_1815", i32 0, i32 2 + store %TName_List_Message* %"$msgs_tmp_1814", %TName_List_Message** %"$adtgep_1818", align 8 + %"$adtptr_1819" = bitcast %CName_Cons_Message* %"$adtval_1815" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_1819", %TName_List_Message** %msgs, align 8 + %"$msgs_1820" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_1820_1821" = bitcast %TName_List_Message* %"$msgs_1820" to i8* + %"$_literal_cost_call_1822" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_1820_1821") + %"$gasrem_1823" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1824" = icmp ugt i64 %"$_literal_cost_call_1822", %"$gasrem_1823" + br i1 %"$gascmp_1824", label %"$out_of_gas_1825", label %"$have_gas_1826" + +"$out_of_gas_1825": ; preds = %"$have_gas_1811" + call void @_out_of_gas() + br label %"$have_gas_1826" + +"$have_gas_1826": ; preds = %"$out_of_gas_1825", %"$have_gas_1811" + %"$consume_1827" = sub i64 %"$gasrem_1823", %"$_literal_cost_call_1822" + store i64 %"$consume_1827", i64* @_gasrem, align 8 + %"$execptr_load_1828" = load i8*, i8** @_execptr, align 8 + %"$msgs_1829" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_1828", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_1829") + %"$gasrem_1830" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1831" = icmp ugt i64 1, %"$gasrem_1830" + br i1 %"$gascmp_1831", label %"$out_of_gas_1832", label %"$have_gas_1833" + +"$out_of_gas_1832": ; preds = %"$have_gas_1826" + call void @_out_of_gas() + br label %"$have_gas_1833" + +"$have_gas_1833": ; preds = %"$out_of_gas_1832", %"$have_gas_1826" + %"$consume_1834" = sub i64 %"$gasrem_1830", 1 + store i64 %"$consume_1834", i64* @_gasrem, align 8 + %msg_final = alloca i8*, align 8 + %"$gasrem_1835" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1836" = icmp ugt i64 1, %"$gasrem_1835" + br i1 %"$gascmp_1836", label %"$out_of_gas_1837", label %"$have_gas_1838" + +"$out_of_gas_1837": ; preds = %"$have_gas_1833" + call void @_out_of_gas() + br label %"$have_gas_1838" + +"$have_gas_1838": ; preds = %"$out_of_gas_1837", %"$have_gas_1833" + %"$consume_1839" = sub i64 %"$gasrem_1835", 1 + store i64 %"$consume_1839", i64* @_gasrem, align 8 + %"$msgobj_1840_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1840_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1840_salloc_load", i64 125) + %"$msgobj_1840_salloc" = bitcast i8* %"$msgobj_1840_salloc_salloc" to [125 x i8]* + %"$msgobj_1840" = bitcast [125 x i8]* %"$msgobj_1840_salloc" to i8* + store i8 3, i8* %"$msgobj_1840", align 1 + %"$msgobj_fname_1842" = getelementptr i8, i8* %"$msgobj_1840", i32 1 + %"$msgobj_fname_1843" = bitcast i8* %"$msgobj_fname_1842" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1841", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1843", align 8 + %"$msgobj_td_1844" = getelementptr i8, i8* %"$msgobj_1840", i32 17 + %"$msgobj_td_1845" = bitcast i8* %"$msgobj_td_1844" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1845", align 8 + %"$_this_address_1846" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_1847" = getelementptr i8, i8* %"$msgobj_1840", i32 25 + %"$msgobj_v_1848" = bitcast i8* %"$msgobj_v_1847" to [20 x i8]* + store [20 x i8] %"$_this_address_1846", [20 x i8]* %"$msgobj_v_1848", align 1 + %"$msgobj_fname_1850" = getelementptr i8, i8* %"$msgobj_1840", i32 45 + %"$msgobj_fname_1851" = bitcast i8* %"$msgobj_fname_1850" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1849", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1851", align 8 + %"$msgobj_td_1852" = getelementptr i8, i8* %"$msgobj_1840", i32 61 + %"$msgobj_td_1853" = bitcast i8* %"$msgobj_td_1852" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1853", align 8 + %"$msgobj_v_1855" = getelementptr i8, i8* %"$msgobj_1840", i32 69 + %"$msgobj_v_1856" = bitcast i8* %"$msgobj_v_1855" to %String* + store %String { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$stringlit_1854", i32 0, i32 0), i32 20 }, %String* %"$msgobj_v_1856", align 8 + %"$msgobj_fname_1858" = getelementptr i8, i8* %"$msgobj_1840", i32 85 + %"$msgobj_fname_1859" = bitcast i8* %"$msgobj_fname_1858" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1857", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1859", align 8 + %"$msgobj_td_1860" = getelementptr i8, i8* %"$msgobj_1840", i32 101 + %"$msgobj_td_1861" = bitcast i8* %"$msgobj_td_1860" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1861", align 8 + %"$msgobj_v_1862" = getelementptr i8, i8* %"$msgobj_1840", i32 109 + %"$msgobj_v_1863" = bitcast i8* %"$msgobj_v_1862" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1863", align 8 + store i8* %"$msgobj_1840", i8** %msg_final, align 8 + %"$gasrem_1865" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1866" = icmp ugt i64 1, %"$gasrem_1865" + br i1 %"$gascmp_1866", label %"$out_of_gas_1867", label %"$have_gas_1868" + +"$out_of_gas_1867": ; preds = %"$have_gas_1838" + call void @_out_of_gas() + br label %"$have_gas_1868" + +"$have_gas_1868": ; preds = %"$out_of_gas_1867", %"$have_gas_1838" + %"$consume_1869" = sub i64 %"$gasrem_1865", 1 + store i64 %"$consume_1869", i64* @_gasrem, align 8 + %msgs_final = alloca %TName_List_Message*, align 8 + %"$gasrem_1870" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1871" = icmp ugt i64 1, %"$gasrem_1870" + br i1 %"$gascmp_1871", label %"$out_of_gas_1872", label %"$have_gas_1873" + +"$out_of_gas_1872": ; preds = %"$have_gas_1868" + call void @_out_of_gas() + br label %"$have_gas_1873" + +"$have_gas_1873": ; preds = %"$out_of_gas_1872", %"$have_gas_1868" + %"$consume_1874" = sub i64 %"$gasrem_1870", 1 + store i64 %"$consume_1874", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_23" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1875" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1876" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1875", 0 + %"$accounting_tests.one_msg_envptr_1877" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1875", 1 + %"$msg_final_1878" = load i8*, i8** %msg_final, align 8 + %"$accounting_tests.one_msg_call_1879" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1876"(i8* %"$accounting_tests.one_msg_envptr_1877", i8* %"$msg_final_1878") + store %TName_List_Message* %"$accounting_tests.one_msg_call_1879", %TName_List_Message** %"$accounting_tests.one_msg_23", align 8 + %"$$accounting_tests.one_msg_23_1880" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_23", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_23_1880", %TName_List_Message** %msgs_final, align 8 + %"$msgs_final_1881" = load %TName_List_Message*, %TName_List_Message** %msgs_final, align 8 + %"$$msgs_final_1881_1882" = bitcast %TName_List_Message* %"$msgs_final_1881" to i8* + %"$_literal_cost_call_1883" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_final_1881_1882") + %"$gasrem_1884" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1885" = icmp ugt i64 %"$_literal_cost_call_1883", %"$gasrem_1884" + br i1 %"$gascmp_1885", label %"$out_of_gas_1886", label %"$have_gas_1887" + +"$out_of_gas_1886": ; preds = %"$have_gas_1873" + call void @_out_of_gas() + br label %"$have_gas_1887" + +"$have_gas_1887": ; preds = %"$out_of_gas_1886", %"$have_gas_1873" + %"$consume_1888" = sub i64 %"$gasrem_1884", %"$_literal_cost_call_1883" + store i64 %"$consume_1888", i64* @_gasrem, align 8 + %"$execptr_load_1889" = load i8*, i8** @_execptr, align 8 + %"$msgs_final_1890" = load %TName_List_Message*, %TName_List_Message** %msgs_final, align 8 + call void @_send(i8* %"$execptr_load_1889", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_final_1890") + ret void +} + +define void @Test_Send_2(i8* %0) { +entry: + %"$_amount_1892" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1893" = bitcast i8* %"$_amount_1892" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1893", align 8 + %"$_origin_1894" = getelementptr i8, i8* %0, i32 16 + %"$_origin_1895" = bitcast i8* %"$_origin_1894" to [20 x i8]* + %"$_sender_1896" = getelementptr i8, i8* %0, i32 36 + %"$_sender_1897" = bitcast i8* %"$_sender_1896" to [20 x i8]* + call void @"$Test_Send_2_1661"(%Uint128 %_amount, [20 x i8]* %"$_origin_1895", [20 x i8]* %"$_sender_1897") + ret void +} + +define internal void @"$Finalize_Test_Send_2_1898"(%Uint128 %_amount, [20 x i8]* %"$_origin_1899", [20 x i8]* %"$_sender_1900") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1899", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1900", align 1 + %"$gasrem_1901" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1902" = icmp ugt i64 1, %"$gasrem_1901" + br i1 %"$gascmp_1902", label %"$out_of_gas_1903", label %"$have_gas_1904" + +"$out_of_gas_1903": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1904" + +"$have_gas_1904": ; preds = %"$out_of_gas_1903", %entry + %"$consume_1905" = sub i64 %"$gasrem_1901", 1 + store i64 %"$consume_1905", i64* @_gasrem, align 8 + %x = alloca %Uint128, align 8 + %"$gasrem_1906" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1907" = icmp ugt i64 1, %"$gasrem_1906" + br i1 %"$gascmp_1907", label %"$out_of_gas_1908", label %"$have_gas_1909" + +"$out_of_gas_1908": ; preds = %"$have_gas_1904" + call void @_out_of_gas() + br label %"$have_gas_1909" + +"$have_gas_1909": ; preds = %"$out_of_gas_1908", %"$have_gas_1904" + %"$consume_1910" = sub i64 %"$gasrem_1906", 1 + store i64 %"$consume_1910", i64* @_gasrem, align 8 + store %Uint128 { i128 2 }, %Uint128* %x, align 8 + %"$gasrem_1911" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1912" = icmp ugt i64 1, %"$gasrem_1911" + br i1 %"$gascmp_1912", label %"$out_of_gas_1913", label %"$have_gas_1914" + +"$out_of_gas_1913": ; preds = %"$have_gas_1909" + call void @_out_of_gas() + br label %"$have_gas_1914" + +"$have_gas_1914": ; preds = %"$out_of_gas_1913", %"$have_gas_1909" + %"$consume_1915" = sub i64 %"$gasrem_1911", 1 + store i64 %"$consume_1915", i64* @_gasrem, align 8 + %"$Finalize_Test_Send_Helper_2_Msgs__origin_1916" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__origin_1916", align 1 + %"$Finalize_Test_Send_Helper_2_Msgs__sender_1917" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__sender_1917", align 1 + %"$x_1918" = load %Uint128, %Uint128* %x, align 8 + call void @"$Finalize_Test_Send_Helper_2_Msgs_1450"(%Uint128 %_amount, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__origin_1916", [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__sender_1917", %Uint128 %"$x_1918") + ret void +} + +define void @Finalize_Test_Send_2(i8* %0) { +entry: + %"$_amount_1920" = getelementptr i8, i8* %0, i32 0 + %"$_amount_1921" = bitcast i8* %"$_amount_1920" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_1921", align 8 + %"$_origin_1922" = getelementptr i8, i8* %0, i32 16 + %"$_origin_1923" = bitcast i8* %"$_origin_1922" to [20 x i8]* + %"$_sender_1924" = getelementptr i8, i8* %0, i32 36 + %"$_sender_1925" = bitcast i8* %"$_sender_1924" to [20 x i8]* + call void @"$Finalize_Test_Send_2_1898"(%Uint128 %_amount, [20 x i8]* %"$_origin_1923", [20 x i8]* %"$_sender_1925") + ret void +} + +define internal void @"$Test_Send_3_1926"(%Uint128 %_amount, [20 x i8]* %"$_origin_1927", [20 x i8]* %"$_sender_1928") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_1927", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_1928", align 1 + %"$gasrem_1929" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1930" = icmp ugt i64 1, %"$gasrem_1929" + br i1 %"$gascmp_1930", label %"$out_of_gas_1931", label %"$have_gas_1932" + +"$out_of_gas_1931": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_1932" + +"$have_gas_1932": ; preds = %"$out_of_gas_1931", %entry + %"$consume_1933" = sub i64 %"$gasrem_1929", 1 + store i64 %"$consume_1933", i64* @_gasrem, align 8 + %"$AssertReset__origin_1934" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_1934", align 1 + %"$AssertReset__sender_1935" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_1935", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_1934", [20 x i8]* %"$AssertReset__sender_1935") + %"$gasrem_1937" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1938" = icmp ugt i64 0, %"$gasrem_1937" + br i1 %"$gascmp_1938", label %"$out_of_gas_1939", label %"$have_gas_1940" + +"$out_of_gas_1939": ; preds = %"$have_gas_1932" + call void @_out_of_gas() + br label %"$have_gas_1940" + +"$have_gas_1940": ; preds = %"$out_of_gas_1939", %"$have_gas_1932" + %"$consume_1941" = sub i64 %"$gasrem_1937", 0 + store i64 %"$consume_1941", i64* @_gasrem, align 8 + %"$gasrem_1942" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1943" = icmp ugt i64 1, %"$gasrem_1942" + br i1 %"$gascmp_1943", label %"$out_of_gas_1944", label %"$have_gas_1945" + +"$out_of_gas_1944": ; preds = %"$have_gas_1940" + call void @_out_of_gas() + br label %"$have_gas_1945" + +"$have_gas_1945": ; preds = %"$out_of_gas_1944", %"$have_gas_1940" + %"$consume_1946" = sub i64 %"$gasrem_1942", 1 + store i64 %"$consume_1946", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_1947" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1948" = icmp ugt i64 1, %"$gasrem_1947" + br i1 %"$gascmp_1948", label %"$out_of_gas_1949", label %"$have_gas_1950" + +"$out_of_gas_1949": ; preds = %"$have_gas_1945" + call void @_out_of_gas() + br label %"$have_gas_1950" + +"$have_gas_1950": ; preds = %"$out_of_gas_1949", %"$have_gas_1945" + %"$consume_1951" = sub i64 %"$gasrem_1947", 1 + store i64 %"$consume_1951", i64* @_gasrem, align 8 + %"$msgobj_1952_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_1952_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_1952_salloc_load", i64 125) + %"$msgobj_1952_salloc" = bitcast i8* %"$msgobj_1952_salloc_salloc" to [125 x i8]* + %"$msgobj_1952" = bitcast [125 x i8]* %"$msgobj_1952_salloc" to i8* + store i8 3, i8* %"$msgobj_1952", align 1 + %"$msgobj_fname_1954" = getelementptr i8, i8* %"$msgobj_1952", i32 1 + %"$msgobj_fname_1955" = bitcast i8* %"$msgobj_fname_1954" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_1953", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_1955", align 8 + %"$msgobj_td_1956" = getelementptr i8, i8* %"$msgobj_1952", i32 17 + %"$msgobj_td_1957" = bitcast i8* %"$msgobj_td_1956" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_1957", align 8 + %"$_this_address_1958" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_1959" = getelementptr i8, i8* %"$msgobj_1952", i32 25 + %"$msgobj_v_1960" = bitcast i8* %"$msgobj_v_1959" to [20 x i8]* + store [20 x i8] %"$_this_address_1958", [20 x i8]* %"$msgobj_v_1960", align 1 + %"$msgobj_fname_1962" = getelementptr i8, i8* %"$msgobj_1952", i32 45 + %"$msgobj_fname_1963" = bitcast i8* %"$msgobj_fname_1962" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_1961", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_1963", align 8 + %"$msgobj_td_1964" = getelementptr i8, i8* %"$msgobj_1952", i32 61 + %"$msgobj_td_1965" = bitcast i8* %"$msgobj_td_1964" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_1965", align 8 + %"$msgobj_v_1967" = getelementptr i8, i8* %"$msgobj_1952", i32 69 + %"$msgobj_v_1968" = bitcast i8* %"$msgobj_v_1967" to %String* + store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_1966", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_1968", align 8 + %"$msgobj_fname_1970" = getelementptr i8, i8* %"$msgobj_1952", i32 85 + %"$msgobj_fname_1971" = bitcast i8* %"$msgobj_fname_1970" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_1969", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_1971", align 8 + %"$msgobj_td_1972" = getelementptr i8, i8* %"$msgobj_1952", i32 101 + %"$msgobj_td_1973" = bitcast i8* %"$msgobj_td_1972" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_1973", align 8 + %"$msgobj_v_1974" = getelementptr i8, i8* %"$msgobj_1952", i32 109 + %"$msgobj_v_1975" = bitcast i8* %"$msgobj_v_1974" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_1975", align 8 + store i8* %"$msgobj_1952", i8** %msg1, align 8 + %"$gasrem_1977" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1978" = icmp ugt i64 1, %"$gasrem_1977" + br i1 %"$gascmp_1978", label %"$out_of_gas_1979", label %"$have_gas_1980" + +"$out_of_gas_1979": ; preds = %"$have_gas_1950" + call void @_out_of_gas() + br label %"$have_gas_1980" + +"$have_gas_1980": ; preds = %"$out_of_gas_1979", %"$have_gas_1950" + %"$consume_1981" = sub i64 %"$gasrem_1977", 1 + store i64 %"$consume_1981", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_1982" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1983" = icmp ugt i64 1, %"$gasrem_1982" + br i1 %"$gascmp_1983", label %"$out_of_gas_1984", label %"$have_gas_1985" + +"$out_of_gas_1984": ; preds = %"$have_gas_1980" + call void @_out_of_gas() + br label %"$have_gas_1985" + +"$have_gas_1985": ; preds = %"$out_of_gas_1984", %"$have_gas_1980" + %"$consume_1986" = sub i64 %"$gasrem_1982", 1 + store i64 %"$consume_1986", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_27" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_1987" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_1988" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1987", 0 + %"$accounting_tests.one_msg_envptr_1989" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_1987", 1 + %"$msg1_1990" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_1991" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_1988"(i8* %"$accounting_tests.one_msg_envptr_1989", i8* %"$msg1_1990") + store %TName_List_Message* %"$accounting_tests.one_msg_call_1991", %TName_List_Message** %"$accounting_tests.one_msg_27", align 8 + %"$$accounting_tests.one_msg_27_1992" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_27", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_27_1992", %TName_List_Message** %msgs1, align 8 + %"$msgs1_1993" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_1993_1994" = bitcast %TName_List_Message* %"$msgs1_1993" to i8* + %"$_literal_cost_call_1995" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_1993_1994") + %"$gasrem_1996" = load i64, i64* @_gasrem, align 8 + %"$gascmp_1997" = icmp ugt i64 %"$_literal_cost_call_1995", %"$gasrem_1996" + br i1 %"$gascmp_1997", label %"$out_of_gas_1998", label %"$have_gas_1999" + +"$out_of_gas_1998": ; preds = %"$have_gas_1985" + call void @_out_of_gas() + br label %"$have_gas_1999" + +"$have_gas_1999": ; preds = %"$out_of_gas_1998", %"$have_gas_1985" + %"$consume_2000" = sub i64 %"$gasrem_1996", %"$_literal_cost_call_1995" + store i64 %"$consume_2000", i64* @_gasrem, align 8 + %"$execptr_load_2001" = load i8*, i8** @_execptr, align 8 + %"$msgs1_2002" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_2001", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_2002") + %s2 = alloca %String, align 8 + %"$execptr_load_2004" = load i8*, i8** @_execptr, align 8 + %"$s2_call_2005" = call i8* @_fetch_field(i8* %"$execptr_load_2004", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_2_2003", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1) + %"$s2_2006" = bitcast i8* %"$s2_call_2005" to %String* + %"$s2_2007" = load %String, %String* %"$s2_2006", align 8 + store %String %"$s2_2007", %String* %s2, align 8 + %"$_literal_cost_s2_2008" = alloca %String, align 8 + %"$s2_2009" = load %String, %String* %s2, align 8 + store %String %"$s2_2009", %String* %"$_literal_cost_s2_2008", align 8 + %"$$_literal_cost_s2_2008_2010" = bitcast %String* %"$_literal_cost_s2_2008" to i8* + %"$_literal_cost_call_2011" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s2_2008_2010") + %"$gasadd_2012" = add i64 %"$_literal_cost_call_2011", 0 + %"$gasrem_2013" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2014" = icmp ugt i64 %"$gasadd_2012", %"$gasrem_2013" + br i1 %"$gascmp_2014", label %"$out_of_gas_2015", label %"$have_gas_2016" + +"$out_of_gas_2015": ; preds = %"$have_gas_1999" + call void @_out_of_gas() + br label %"$have_gas_2016" + +"$have_gas_2016": ; preds = %"$out_of_gas_2015", %"$have_gas_1999" + %"$consume_2017" = sub i64 %"$gasrem_2013", %"$gasadd_2012" + store i64 %"$consume_2017", i64* @_gasrem, align 8 + %"$gasrem_2018" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2019" = icmp ugt i64 1, %"$gasrem_2018" + br i1 %"$gascmp_2019", label %"$out_of_gas_2020", label %"$have_gas_2021" + +"$out_of_gas_2020": ; preds = %"$have_gas_2016" + call void @_out_of_gas() + br label %"$have_gas_2021" + +"$have_gas_2021": ; preds = %"$out_of_gas_2020", %"$have_gas_2016" + %"$consume_2022" = sub i64 %"$gasrem_2018", 1 + store i64 %"$consume_2022", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_2023" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2024" = icmp ugt i64 1, %"$gasrem_2023" + br i1 %"$gascmp_2024", label %"$out_of_gas_2025", label %"$have_gas_2026" + +"$out_of_gas_2025": ; preds = %"$have_gas_2021" + call void @_out_of_gas() + br label %"$have_gas_2026" + +"$have_gas_2026": ; preds = %"$out_of_gas_2025", %"$have_gas_2021" + %"$consume_2027" = sub i64 %"$gasrem_2023", 1 + store i64 %"$consume_2027", i64* @_gasrem, align 8 + %"$msgobj_2028_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2028_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2028_salloc_load", i64 165) + %"$msgobj_2028_salloc" = bitcast i8* %"$msgobj_2028_salloc_salloc" to [165 x i8]* + %"$msgobj_2028" = bitcast [165 x i8]* %"$msgobj_2028_salloc" to i8* + store i8 4, i8* %"$msgobj_2028", align 1 + %"$msgobj_fname_2030" = getelementptr i8, i8* %"$msgobj_2028", i32 1 + %"$msgobj_fname_2031" = bitcast i8* %"$msgobj_fname_2030" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2029", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2031", align 8 + %"$msgobj_td_2032" = getelementptr i8, i8* %"$msgobj_2028", i32 17 + %"$msgobj_td_2033" = bitcast i8* %"$msgobj_td_2032" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2033", align 8 + %"$support_contract_2034" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2035" = getelementptr i8, i8* %"$msgobj_2028", i32 25 + %"$msgobj_v_2036" = bitcast i8* %"$msgobj_v_2035" to [20 x i8]* + store [20 x i8] %"$support_contract_2034", [20 x i8]* %"$msgobj_v_2036", align 1 + %"$msgobj_fname_2038" = getelementptr i8, i8* %"$msgobj_2028", i32 45 + %"$msgobj_fname_2039" = bitcast i8* %"$msgobj_fname_2038" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2037", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2039", align 8 + %"$msgobj_td_2040" = getelementptr i8, i8* %"$msgobj_2028", i32 61 + %"$msgobj_td_2041" = bitcast i8* %"$msgobj_td_2040" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2041", align 8 + %"$msgobj_v_2043" = getelementptr i8, i8* %"$msgobj_2028", i32 69 + %"$msgobj_v_2044" = bitcast i8* %"$msgobj_v_2043" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_2042", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_2044", align 8 + %"$msgobj_fname_2046" = getelementptr i8, i8* %"$msgobj_2028", i32 85 + %"$msgobj_fname_2047" = bitcast i8* %"$msgobj_fname_2046" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2045", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2047", align 8 + %"$msgobj_td_2048" = getelementptr i8, i8* %"$msgobj_2028", i32 101 + %"$msgobj_td_2049" = bitcast i8* %"$msgobj_td_2048" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2049", align 8 + %"$msgobj_v_2050" = getelementptr i8, i8* %"$msgobj_2028", i32 109 + %"$msgobj_v_2051" = bitcast i8* %"$msgobj_v_2050" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_2051", align 8 + %"$msgobj_fname_2053" = getelementptr i8, i8* %"$msgobj_2028", i32 125 + %"$msgobj_fname_2054" = bitcast i8* %"$msgobj_fname_2053" to %String* + store %String { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$stringlit_2052", i32 0, i32 0), i32 1 }, %String* %"$msgobj_fname_2054", align 8 + %"$msgobj_td_2055" = getelementptr i8, i8* %"$msgobj_2028", i32 141 + %"$msgobj_td_2056" = bitcast i8* %"$msgobj_td_2055" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2056", align 8 + %"$s2_2057" = load %String, %String* %s2, align 8 + %"$msgobj_v_2058" = getelementptr i8, i8* %"$msgobj_2028", i32 149 + %"$msgobj_v_2059" = bitcast i8* %"$msgobj_v_2058" to %String* + store %String %"$s2_2057", %String* %"$msgobj_v_2059", align 8 + store i8* %"$msgobj_2028", i8** %msg2, align 8 + %"$gasrem_2061" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2062" = icmp ugt i64 1, %"$gasrem_2061" + br i1 %"$gascmp_2062", label %"$out_of_gas_2063", label %"$have_gas_2064" + +"$out_of_gas_2063": ; preds = %"$have_gas_2026" + call void @_out_of_gas() + br label %"$have_gas_2064" + +"$have_gas_2064": ; preds = %"$out_of_gas_2063", %"$have_gas_2026" + %"$consume_2065" = sub i64 %"$gasrem_2061", 1 + store i64 %"$consume_2065", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_2066" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2067" = icmp ugt i64 1, %"$gasrem_2066" + br i1 %"$gascmp_2067", label %"$out_of_gas_2068", label %"$have_gas_2069" + +"$out_of_gas_2068": ; preds = %"$have_gas_2064" + call void @_out_of_gas() + br label %"$have_gas_2069" + +"$have_gas_2069": ; preds = %"$out_of_gas_2068", %"$have_gas_2064" + %"$consume_2070" = sub i64 %"$gasrem_2066", 1 + store i64 %"$consume_2070", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_26" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2071" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2072" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2071", 0 + %"$accounting_tests.one_msg_envptr_2073" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2071", 1 + %"$msg2_2074" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_2075" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2072"(i8* %"$accounting_tests.one_msg_envptr_2073", i8* %"$msg2_2074") + store %TName_List_Message* %"$accounting_tests.one_msg_call_2075", %TName_List_Message** %"$accounting_tests.one_msg_26", align 8 + %"$$accounting_tests.one_msg_26_2076" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_26", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_26_2076", %TName_List_Message** %msgs2, align 8 + %"$msgs2_2077" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_2077_2078" = bitcast %TName_List_Message* %"$msgs2_2077" to i8* + %"$_literal_cost_call_2079" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_2077_2078") + %"$gasrem_2080" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2081" = icmp ugt i64 %"$_literal_cost_call_2079", %"$gasrem_2080" + br i1 %"$gascmp_2081", label %"$out_of_gas_2082", label %"$have_gas_2083" + +"$out_of_gas_2082": ; preds = %"$have_gas_2069" + call void @_out_of_gas() + br label %"$have_gas_2083" + +"$have_gas_2083": ; preds = %"$out_of_gas_2082", %"$have_gas_2069" + %"$consume_2084" = sub i64 %"$gasrem_2080", %"$_literal_cost_call_2079" + store i64 %"$consume_2084", i64* @_gasrem, align 8 + %"$execptr_load_2085" = load i8*, i8** @_execptr, align 8 + %"$msgs2_2086" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_2085", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_2086") + %"$gasrem_2087" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2088" = icmp ugt i64 1, %"$gasrem_2087" + br i1 %"$gascmp_2088", label %"$out_of_gas_2089", label %"$have_gas_2090" + +"$out_of_gas_2089": ; preds = %"$have_gas_2083" + call void @_out_of_gas() + br label %"$have_gas_2090" + +"$have_gas_2090": ; preds = %"$out_of_gas_2089", %"$have_gas_2083" + %"$consume_2091" = sub i64 %"$gasrem_2087", 1 + store i64 %"$consume_2091", i64* @_gasrem, align 8 + %msg_final = alloca i8*, align 8 + %"$gasrem_2092" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2093" = icmp ugt i64 1, %"$gasrem_2092" + br i1 %"$gascmp_2093", label %"$out_of_gas_2094", label %"$have_gas_2095" + +"$out_of_gas_2094": ; preds = %"$have_gas_2090" + call void @_out_of_gas() + br label %"$have_gas_2095" + +"$have_gas_2095": ; preds = %"$out_of_gas_2094", %"$have_gas_2090" + %"$consume_2096" = sub i64 %"$gasrem_2092", 1 + store i64 %"$consume_2096", i64* @_gasrem, align 8 + %"$msgobj_2097_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2097_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2097_salloc_load", i64 125) + %"$msgobj_2097_salloc" = bitcast i8* %"$msgobj_2097_salloc_salloc" to [125 x i8]* + %"$msgobj_2097" = bitcast [125 x i8]* %"$msgobj_2097_salloc" to i8* + store i8 3, i8* %"$msgobj_2097", align 1 + %"$msgobj_fname_2099" = getelementptr i8, i8* %"$msgobj_2097", i32 1 + %"$msgobj_fname_2100" = bitcast i8* %"$msgobj_fname_2099" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2098", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2100", align 8 + %"$msgobj_td_2101" = getelementptr i8, i8* %"$msgobj_2097", i32 17 + %"$msgobj_td_2102" = bitcast i8* %"$msgobj_td_2101" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2102", align 8 + %"$_this_address_2103" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_2104" = getelementptr i8, i8* %"$msgobj_2097", i32 25 + %"$msgobj_v_2105" = bitcast i8* %"$msgobj_v_2104" to [20 x i8]* + store [20 x i8] %"$_this_address_2103", [20 x i8]* %"$msgobj_v_2105", align 1 + %"$msgobj_fname_2107" = getelementptr i8, i8* %"$msgobj_2097", i32 45 + %"$msgobj_fname_2108" = bitcast i8* %"$msgobj_fname_2107" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2106", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2108", align 8 + %"$msgobj_td_2109" = getelementptr i8, i8* %"$msgobj_2097", i32 61 + %"$msgobj_td_2110" = bitcast i8* %"$msgobj_td_2109" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2110", align 8 + %"$msgobj_v_2112" = getelementptr i8, i8* %"$msgobj_2097", i32 69 + %"$msgobj_v_2113" = bitcast i8* %"$msgobj_v_2112" to %String* + store %String { i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$stringlit_2111", i32 0, i32 0), i32 20 }, %String* %"$msgobj_v_2113", align 8 + %"$msgobj_fname_2115" = getelementptr i8, i8* %"$msgobj_2097", i32 85 + %"$msgobj_fname_2116" = bitcast i8* %"$msgobj_fname_2115" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2114", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2116", align 8 + %"$msgobj_td_2117" = getelementptr i8, i8* %"$msgobj_2097", i32 101 + %"$msgobj_td_2118" = bitcast i8* %"$msgobj_td_2117" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2118", align 8 + %"$msgobj_v_2119" = getelementptr i8, i8* %"$msgobj_2097", i32 109 + %"$msgobj_v_2120" = bitcast i8* %"$msgobj_v_2119" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_2120", align 8 + store i8* %"$msgobj_2097", i8** %msg_final, align 8 + %"$gasrem_2122" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2123" = icmp ugt i64 1, %"$gasrem_2122" + br i1 %"$gascmp_2123", label %"$out_of_gas_2124", label %"$have_gas_2125" + +"$out_of_gas_2124": ; preds = %"$have_gas_2095" + call void @_out_of_gas() + br label %"$have_gas_2125" + +"$have_gas_2125": ; preds = %"$out_of_gas_2124", %"$have_gas_2095" + %"$consume_2126" = sub i64 %"$gasrem_2122", 1 + store i64 %"$consume_2126", i64* @_gasrem, align 8 + %msgs_final = alloca %TName_List_Message*, align 8 + %"$gasrem_2127" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2128" = icmp ugt i64 1, %"$gasrem_2127" + br i1 %"$gascmp_2128", label %"$out_of_gas_2129", label %"$have_gas_2130" + +"$out_of_gas_2129": ; preds = %"$have_gas_2125" + call void @_out_of_gas() + br label %"$have_gas_2130" + +"$have_gas_2130": ; preds = %"$out_of_gas_2129", %"$have_gas_2125" + %"$consume_2131" = sub i64 %"$gasrem_2127", 1 + store i64 %"$consume_2131", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_25" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2132" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2133" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2132", 0 + %"$accounting_tests.one_msg_envptr_2134" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2132", 1 + %"$msg_final_2135" = load i8*, i8** %msg_final, align 8 + %"$accounting_tests.one_msg_call_2136" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2133"(i8* %"$accounting_tests.one_msg_envptr_2134", i8* %"$msg_final_2135") + store %TName_List_Message* %"$accounting_tests.one_msg_call_2136", %TName_List_Message** %"$accounting_tests.one_msg_25", align 8 + %"$$accounting_tests.one_msg_25_2137" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_25", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_25_2137", %TName_List_Message** %msgs_final, align 8 + %"$msgs_final_2138" = load %TName_List_Message*, %TName_List_Message** %msgs_final, align 8 + %"$$msgs_final_2138_2139" = bitcast %TName_List_Message* %"$msgs_final_2138" to i8* + %"$_literal_cost_call_2140" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_final_2138_2139") + %"$gasrem_2141" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2142" = icmp ugt i64 %"$_literal_cost_call_2140", %"$gasrem_2141" + br i1 %"$gascmp_2142", label %"$out_of_gas_2143", label %"$have_gas_2144" + +"$out_of_gas_2143": ; preds = %"$have_gas_2130" + call void @_out_of_gas() + br label %"$have_gas_2144" + +"$have_gas_2144": ; preds = %"$out_of_gas_2143", %"$have_gas_2130" + %"$consume_2145" = sub i64 %"$gasrem_2141", %"$_literal_cost_call_2140" + store i64 %"$consume_2145", i64* @_gasrem, align 8 + %"$execptr_load_2146" = load i8*, i8** @_execptr, align 8 + %"$msgs_final_2147" = load %TName_List_Message*, %TName_List_Message** %msgs_final, align 8 + call void @_send(i8* %"$execptr_load_2146", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_final_2147") + ret void +} + +define void @Test_Send_3(i8* %0) { +entry: + %"$_amount_2149" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2150" = bitcast i8* %"$_amount_2149" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2150", align 8 + %"$_origin_2151" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2152" = bitcast i8* %"$_origin_2151" to [20 x i8]* + %"$_sender_2153" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2154" = bitcast i8* %"$_sender_2153" to [20 x i8]* + call void @"$Test_Send_3_1926"(%Uint128 %_amount, [20 x i8]* %"$_origin_2152", [20 x i8]* %"$_sender_2154") + ret void +} + +define internal void @"$Test_Send_3_Helper_2155"(%Uint128 %_amount, [20 x i8]* %"$_origin_2156", [20 x i8]* %"$_sender_2157") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2156", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2157", align 1 + %s1 = alloca %String, align 8 + %"$execptr_load_2159" = load i8*, i8** @_execptr, align 8 + %"$s1_call_2160" = call i8* @_fetch_field(i8* %"$execptr_load_2159", i8* getelementptr inbounds ([14 x i8], [14 x i8]* @"$test_string_1_2158", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_String_105", i32 0, i8* null, i32 1) + %"$s1_2161" = bitcast i8* %"$s1_call_2160" to %String* + %"$s1_2162" = load %String, %String* %"$s1_2161", align 8 + store %String %"$s1_2162", %String* %s1, align 8 + %"$_literal_cost_s1_2163" = alloca %String, align 8 + %"$s1_2164" = load %String, %String* %s1, align 8 + store %String %"$s1_2164", %String* %"$_literal_cost_s1_2163", align 8 + %"$$_literal_cost_s1_2163_2165" = bitcast %String* %"$_literal_cost_s1_2163" to i8* + %"$_literal_cost_call_2166" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_String_105", i8* %"$$_literal_cost_s1_2163_2165") + %"$gasadd_2167" = add i64 %"$_literal_cost_call_2166", 0 + %"$gasrem_2168" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2169" = icmp ugt i64 %"$gasadd_2167", %"$gasrem_2168" + br i1 %"$gascmp_2169", label %"$out_of_gas_2170", label %"$have_gas_2171" + +"$out_of_gas_2170": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2171" + +"$have_gas_2171": ; preds = %"$out_of_gas_2170", %entry + %"$consume_2172" = sub i64 %"$gasrem_2168", %"$gasadd_2167" + store i64 %"$consume_2172", i64* @_gasrem, align 8 + %"$gasrem_2173" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2174" = icmp ugt i64 1, %"$gasrem_2173" + br i1 %"$gascmp_2174", label %"$out_of_gas_2175", label %"$have_gas_2176" + +"$out_of_gas_2175": ; preds = %"$have_gas_2171" + call void @_out_of_gas() + br label %"$have_gas_2176" + +"$have_gas_2176": ; preds = %"$out_of_gas_2175", %"$have_gas_2171" + %"$consume_2177" = sub i64 %"$gasrem_2173", 1 + store i64 %"$consume_2177", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_2178" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2179" = icmp ugt i64 1, %"$gasrem_2178" + br i1 %"$gascmp_2179", label %"$out_of_gas_2180", label %"$have_gas_2181" + +"$out_of_gas_2180": ; preds = %"$have_gas_2176" + call void @_out_of_gas() + br label %"$have_gas_2181" + +"$have_gas_2181": ; preds = %"$out_of_gas_2180", %"$have_gas_2176" + %"$consume_2182" = sub i64 %"$gasrem_2178", 1 + store i64 %"$consume_2182", i64* @_gasrem, align 8 + %"$msgobj_2183_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2183_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2183_salloc_load", i64 165) + %"$msgobj_2183_salloc" = bitcast i8* %"$msgobj_2183_salloc_salloc" to [165 x i8]* + %"$msgobj_2183" = bitcast [165 x i8]* %"$msgobj_2183_salloc" to i8* + store i8 4, i8* %"$msgobj_2183", align 1 + %"$msgobj_fname_2185" = getelementptr i8, i8* %"$msgobj_2183", i32 1 + %"$msgobj_fname_2186" = bitcast i8* %"$msgobj_fname_2185" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2184", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2186", align 8 + %"$msgobj_td_2187" = getelementptr i8, i8* %"$msgobj_2183", i32 17 + %"$msgobj_td_2188" = bitcast i8* %"$msgobj_td_2187" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2188", align 8 + %"$support_contract_2189" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2190" = getelementptr i8, i8* %"$msgobj_2183", i32 25 + %"$msgobj_v_2191" = bitcast i8* %"$msgobj_v_2190" to [20 x i8]* + store [20 x i8] %"$support_contract_2189", [20 x i8]* %"$msgobj_v_2191", align 1 + %"$msgobj_fname_2193" = getelementptr i8, i8* %"$msgobj_2183", i32 45 + %"$msgobj_fname_2194" = bitcast i8* %"$msgobj_fname_2193" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2192", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2194", align 8 + %"$msgobj_td_2195" = getelementptr i8, i8* %"$msgobj_2183", i32 61 + %"$msgobj_td_2196" = bitcast i8* %"$msgobj_td_2195" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2196", align 8 + %"$msgobj_v_2198" = getelementptr i8, i8* %"$msgobj_2183", i32 69 + %"$msgobj_v_2199" = bitcast i8* %"$msgobj_v_2198" to %String* + store %String { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$stringlit_2197", i32 0, i32 0), i32 11 }, %String* %"$msgobj_v_2199", align 8 + %"$msgobj_fname_2201" = getelementptr i8, i8* %"$msgobj_2183", i32 85 + %"$msgobj_fname_2202" = bitcast i8* %"$msgobj_fname_2201" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2200", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2202", align 8 + %"$msgobj_td_2203" = getelementptr i8, i8* %"$msgobj_2183", i32 101 + %"$msgobj_td_2204" = bitcast i8* %"$msgobj_td_2203" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2204", align 8 + %"$msgobj_v_2205" = getelementptr i8, i8* %"$msgobj_2183", i32 109 + %"$msgobj_v_2206" = bitcast i8* %"$msgobj_v_2205" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_2206", align 8 + %"$msgobj_fname_2208" = getelementptr i8, i8* %"$msgobj_2183", i32 125 + %"$msgobj_fname_2209" = bitcast i8* %"$msgobj_fname_2208" to %String* + store %String { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$stringlit_2207", i32 0, i32 0), i32 1 }, %String* %"$msgobj_fname_2209", align 8 + %"$msgobj_td_2210" = getelementptr i8, i8* %"$msgobj_2183", i32 141 + %"$msgobj_td_2211" = bitcast i8* %"$msgobj_td_2210" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2211", align 8 + %"$s1_2212" = load %String, %String* %s1, align 8 + %"$msgobj_v_2213" = getelementptr i8, i8* %"$msgobj_2183", i32 149 + %"$msgobj_v_2214" = bitcast i8* %"$msgobj_v_2213" to %String* + store %String %"$s1_2212", %String* %"$msgobj_v_2214", align 8 + store i8* %"$msgobj_2183", i8** %msg1, align 8 + %"$gasrem_2216" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2217" = icmp ugt i64 1, %"$gasrem_2216" + br i1 %"$gascmp_2217", label %"$out_of_gas_2218", label %"$have_gas_2219" + +"$out_of_gas_2218": ; preds = %"$have_gas_2181" + call void @_out_of_gas() + br label %"$have_gas_2219" + +"$have_gas_2219": ; preds = %"$out_of_gas_2218", %"$have_gas_2181" + %"$consume_2220" = sub i64 %"$gasrem_2216", 1 + store i64 %"$consume_2220", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_2221" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2222" = icmp ugt i64 1, %"$gasrem_2221" + br i1 %"$gascmp_2222", label %"$out_of_gas_2223", label %"$have_gas_2224" + +"$out_of_gas_2223": ; preds = %"$have_gas_2219" + call void @_out_of_gas() + br label %"$have_gas_2224" + +"$have_gas_2224": ; preds = %"$out_of_gas_2223", %"$have_gas_2219" + %"$consume_2225" = sub i64 %"$gasrem_2221", 1 + store i64 %"$consume_2225", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_28" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2226" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2227" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2226", 0 + %"$accounting_tests.one_msg_envptr_2228" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2226", 1 + %"$msg1_2229" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_2230" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2227"(i8* %"$accounting_tests.one_msg_envptr_2228", i8* %"$msg1_2229") + store %TName_List_Message* %"$accounting_tests.one_msg_call_2230", %TName_List_Message** %"$accounting_tests.one_msg_28", align 8 + %"$$accounting_tests.one_msg_28_2231" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_28", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_28_2231", %TName_List_Message** %msgs1, align 8 + %"$msgs1_2232" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_2232_2233" = bitcast %TName_List_Message* %"$msgs1_2232" to i8* + %"$_literal_cost_call_2234" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_2232_2233") + %"$gasrem_2235" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2236" = icmp ugt i64 %"$_literal_cost_call_2234", %"$gasrem_2235" + br i1 %"$gascmp_2236", label %"$out_of_gas_2237", label %"$have_gas_2238" + +"$out_of_gas_2237": ; preds = %"$have_gas_2224" + call void @_out_of_gas() + br label %"$have_gas_2238" + +"$have_gas_2238": ; preds = %"$out_of_gas_2237", %"$have_gas_2224" + %"$consume_2239" = sub i64 %"$gasrem_2235", %"$_literal_cost_call_2234" + store i64 %"$consume_2239", i64* @_gasrem, align 8 + %"$execptr_load_2240" = load i8*, i8** @_execptr, align 8 + %"$msgs1_2241" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_2240", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_2241") + ret void +} + +define void @Test_Send_3_Helper(i8* %0) { +entry: + %"$_amount_2243" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2244" = bitcast i8* %"$_amount_2243" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2244", align 8 + %"$_origin_2245" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2246" = bitcast i8* %"$_origin_2245" to [20 x i8]* + %"$_sender_2247" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2248" = bitcast i8* %"$_sender_2247" to [20 x i8]* + call void @"$Test_Send_3_Helper_2155"(%Uint128 %_amount, [20 x i8]* %"$_origin_2246", [20 x i8]* %"$_sender_2248") + ret void +} + +define internal void @"$Finalize_Test_Send_3_2249"(%Uint128 %_amount, [20 x i8]* %"$_origin_2250", [20 x i8]* %"$_sender_2251") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2250", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2251", align 1 + %"$gasrem_2252" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2253" = icmp ugt i64 1, %"$gasrem_2252" + br i1 %"$gascmp_2253", label %"$out_of_gas_2254", label %"$have_gas_2255" + +"$out_of_gas_2254": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2255" + +"$have_gas_2255": ; preds = %"$out_of_gas_2254", %entry + %"$consume_2256" = sub i64 %"$gasrem_2252", 1 + store i64 %"$consume_2256", i64* @_gasrem, align 8 + %x = alloca %Uint128, align 8 + %"$gasrem_2257" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2258" = icmp ugt i64 1, %"$gasrem_2257" + br i1 %"$gascmp_2258", label %"$out_of_gas_2259", label %"$have_gas_2260" + +"$out_of_gas_2259": ; preds = %"$have_gas_2255" + call void @_out_of_gas() + br label %"$have_gas_2260" + +"$have_gas_2260": ; preds = %"$out_of_gas_2259", %"$have_gas_2255" + %"$consume_2261" = sub i64 %"$gasrem_2257", 1 + store i64 %"$consume_2261", i64* @_gasrem, align 8 + store %Uint128 { i128 3 }, %Uint128* %x, align 8 + %"$gasrem_2262" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2263" = icmp ugt i64 1, %"$gasrem_2262" + br i1 %"$gascmp_2263", label %"$out_of_gas_2264", label %"$have_gas_2265" + +"$out_of_gas_2264": ; preds = %"$have_gas_2260" + call void @_out_of_gas() + br label %"$have_gas_2265" + +"$have_gas_2265": ; preds = %"$out_of_gas_2264", %"$have_gas_2260" + %"$consume_2266" = sub i64 %"$gasrem_2262", 1 + store i64 %"$consume_2266", i64* @_gasrem, align 8 + %"$Finalize_Test_Send_Helper_2_Msgs__origin_2267" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__origin_2267", align 1 + %"$Finalize_Test_Send_Helper_2_Msgs__sender_2268" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__sender_2268", align 1 + %"$x_2269" = load %Uint128, %Uint128* %x, align 8 + call void @"$Finalize_Test_Send_Helper_2_Msgs_1450"(%Uint128 %_amount, [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__origin_2267", [20 x i8]* %"$Finalize_Test_Send_Helper_2_Msgs__sender_2268", %Uint128 %"$x_2269") + ret void +} + +define void @Finalize_Test_Send_3(i8* %0) { +entry: + %"$_amount_2271" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2272" = bitcast i8* %"$_amount_2271" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2272", align 8 + %"$_origin_2273" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2274" = bitcast i8* %"$_origin_2273" to [20 x i8]* + %"$_sender_2275" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2276" = bitcast i8* %"$_sender_2275" to [20 x i8]* + call void @"$Finalize_Test_Send_3_2249"(%Uint128 %_amount, [20 x i8]* %"$_origin_2274", [20 x i8]* %"$_sender_2276") + ret void +} + +define internal void @"$CheckBalance_2277"(%Uint128 %_amount, [20 x i8]* %"$_origin_2278", [20 x i8]* %"$_sender_2279", %Uint128 %expected_balance) { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2278", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2279", align 1 + %cur_balance = alloca %Uint128, align 8 + %"$execptr_load_2281" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_call_2282" = call i8* @_fetch_field(i8* %"$execptr_load_2281", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_2280", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$cur_balance_2283" = bitcast i8* %"$cur_balance_call_2282" to %Uint128* + %"$cur_balance_2284" = load %Uint128, %Uint128* %"$cur_balance_2283", align 8 + store %Uint128 %"$cur_balance_2284", %Uint128* %cur_balance, align 8 + %"$_literal_cost_cur_balance_2285" = alloca %Uint128, align 8 + %"$cur_balance_2286" = load %Uint128, %Uint128* %cur_balance, align 8 + store %Uint128 %"$cur_balance_2286", %Uint128* %"$_literal_cost_cur_balance_2285", align 8 + %"$$_literal_cost_cur_balance_2285_2287" = bitcast %Uint128* %"$_literal_cost_cur_balance_2285" to i8* + %"$_literal_cost_call_2288" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_cur_balance_2285_2287") + %"$gasadd_2289" = add i64 %"$_literal_cost_call_2288", 0 + %"$gasrem_2290" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2291" = icmp ugt i64 %"$gasadd_2289", %"$gasrem_2290" + br i1 %"$gascmp_2291", label %"$out_of_gas_2292", label %"$have_gas_2293" + +"$out_of_gas_2292": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2293" + +"$have_gas_2293": ; preds = %"$out_of_gas_2292", %entry + %"$consume_2294" = sub i64 %"$gasrem_2290", %"$gasadd_2289" + store i64 %"$consume_2294", i64* @_gasrem, align 8 + %"$gasrem_2295" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2296" = icmp ugt i64 1, %"$gasrem_2295" + br i1 %"$gascmp_2296", label %"$out_of_gas_2297", label %"$have_gas_2298" + +"$out_of_gas_2297": ; preds = %"$have_gas_2293" + call void @_out_of_gas() + br label %"$have_gas_2298" + +"$have_gas_2298": ; preds = %"$out_of_gas_2297", %"$have_gas_2293" + %"$consume_2299" = sub i64 %"$gasrem_2295", 1 + store i64 %"$consume_2299", i64* @_gasrem, align 8 + %is_expected = alloca %TName_Bool*, align 8 + %"$execptr_load_2300" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_2301" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$eq_call_2302" = call %TName_Bool* @_eq_Uint128(i8* %"$execptr_load_2300", %Uint128 %expected_balance, %Uint128 %"$cur_balance_2301") + store %TName_Bool* %"$eq_call_2302", %TName_Bool** %is_expected, align 8 + %"$gasrem_2304" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2305" = icmp ugt i64 2, %"$gasrem_2304" + br i1 %"$gascmp_2305", label %"$out_of_gas_2306", label %"$have_gas_2307" + +"$out_of_gas_2306": ; preds = %"$have_gas_2298" + call void @_out_of_gas() + br label %"$have_gas_2307" + +"$have_gas_2307": ; preds = %"$out_of_gas_2306", %"$have_gas_2298" + %"$consume_2308" = sub i64 %"$gasrem_2304", 2 + store i64 %"$consume_2308", i64* @_gasrem, align 8 + %"$is_expected_2310" = load %TName_Bool*, %TName_Bool** %is_expected, align 8 + %"$is_expected_tag_2311" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_expected_2310", i32 0, i32 0 + %"$is_expected_tag_2312" = load i8, i8* %"$is_expected_tag_2311", align 1 + switch i8 %"$is_expected_tag_2312", label %"$empty_default_2313" [ + i8 0, label %"$True_2314" + i8 1, label %"$False_2316" + ] + +"$True_2314": ; preds = %"$have_gas_2307" + %"$is_expected_2315" = bitcast %TName_Bool* %"$is_expected_2310" to %CName_True* + br label %"$matchsucc_2309" + +"$False_2316": ; preds = %"$have_gas_2307" + %"$is_expected_2317" = bitcast %TName_Bool* %"$is_expected_2310" to %CName_False* + %"$gasrem_2318" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2319" = icmp ugt i64 1, %"$gasrem_2318" + br i1 %"$gascmp_2319", label %"$out_of_gas_2320", label %"$have_gas_2321" + +"$out_of_gas_2320": ; preds = %"$False_2316" + call void @_out_of_gas() + br label %"$have_gas_2321" + +"$have_gas_2321": ; preds = %"$out_of_gas_2320", %"$False_2316" + %"$consume_2322" = sub i64 %"$gasrem_2318", 1 + store i64 %"$consume_2322", i64* @_gasrem, align 8 + %e = alloca i8*, align 8 + %"$gasrem_2323" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2324" = icmp ugt i64 1, %"$gasrem_2323" + br i1 %"$gascmp_2324", label %"$out_of_gas_2325", label %"$have_gas_2326" + +"$out_of_gas_2325": ; preds = %"$have_gas_2321" + call void @_out_of_gas() + br label %"$have_gas_2326" + +"$have_gas_2326": ; preds = %"$out_of_gas_2325", %"$have_gas_2321" + %"$consume_2327" = sub i64 %"$gasrem_2323", 1 + store i64 %"$consume_2327", i64* @_gasrem, align 8 + %"$msgobj_2328_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2328_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2328_salloc_load", i64 121) + %"$msgobj_2328_salloc" = bitcast i8* %"$msgobj_2328_salloc_salloc" to [121 x i8]* + %"$msgobj_2328" = bitcast [121 x i8]* %"$msgobj_2328_salloc" to i8* + store i8 3, i8* %"$msgobj_2328", align 1 + %"$msgobj_fname_2330" = getelementptr i8, i8* %"$msgobj_2328", i32 1 + %"$msgobj_fname_2331" = bitcast i8* %"$msgobj_fname_2330" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2329", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2331", align 8 + %"$msgobj_td_2332" = getelementptr i8, i8* %"$msgobj_2328", i32 17 + %"$msgobj_td_2333" = bitcast i8* %"$msgobj_td_2332" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2333", align 8 + %"$msgobj_v_2335" = getelementptr i8, i8* %"$msgobj_2328", i32 25 + %"$msgobj_v_2336" = bitcast i8* %"$msgobj_v_2335" to %String* + store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_2334", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_2336", align 8 + %"$msgobj_fname_2338" = getelementptr i8, i8* %"$msgobj_2328", i32 41 + %"$msgobj_fname_2339" = bitcast i8* %"$msgobj_fname_2338" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_2337", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_2339", align 8 + %"$msgobj_td_2340" = getelementptr i8, i8* %"$msgobj_2328", i32 57 + %"$msgobj_td_2341" = bitcast i8* %"$msgobj_td_2340" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2341", align 8 + %"$msgobj_v_2342" = getelementptr i8, i8* %"$msgobj_2328", i32 65 + %"$msgobj_v_2343" = bitcast i8* %"$msgobj_v_2342" to %Uint128* + store %Uint128 %expected_balance, %Uint128* %"$msgobj_v_2343", align 8 + %"$msgobj_fname_2345" = getelementptr i8, i8* %"$msgobj_2328", i32 81 + %"$msgobj_fname_2346" = bitcast i8* %"$msgobj_fname_2345" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_2344", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_2346", align 8 + %"$msgobj_td_2347" = getelementptr i8, i8* %"$msgobj_2328", i32 97 + %"$msgobj_td_2348" = bitcast i8* %"$msgobj_td_2347" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2348", align 8 + %"$cur_balance_2349" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$msgobj_v_2350" = getelementptr i8, i8* %"$msgobj_2328", i32 105 + %"$msgobj_v_2351" = bitcast i8* %"$msgobj_v_2350" to %Uint128* + store %Uint128 %"$cur_balance_2349", %Uint128* %"$msgobj_v_2351", align 8 + store i8* %"$msgobj_2328", i8** %e, align 8 + %"$e_2353" = load i8*, i8** %e, align 8 + %"$_literal_cost_call_2355" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_2353") + %"$gasrem_2356" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2357" = icmp ugt i64 %"$_literal_cost_call_2355", %"$gasrem_2356" + br i1 %"$gascmp_2357", label %"$out_of_gas_2358", label %"$have_gas_2359" + +"$out_of_gas_2358": ; preds = %"$have_gas_2326" + call void @_out_of_gas() + br label %"$have_gas_2359" + +"$have_gas_2359": ; preds = %"$out_of_gas_2358", %"$have_gas_2326" + %"$consume_2360" = sub i64 %"$gasrem_2356", %"$_literal_cost_call_2355" + store i64 %"$consume_2360", i64* @_gasrem, align 8 + %"$execptr_load_2361" = load i8*, i8** @_execptr, align 8 + %"$e_2362" = load i8*, i8** %e, align 8 + call void @_throw(i8* %"$execptr_load_2361", %_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_2362") + br label %"$matchsucc_2309" + +"$empty_default_2313": ; preds = %"$have_gas_2307" + br label %"$matchsucc_2309" + +"$matchsucc_2309": ; preds = %"$have_gas_2359", %"$True_2314", %"$empty_default_2313" + ret void +} + +declare %TName_Bool* @_eq_Uint128(i8*, %Uint128, %Uint128) + +define internal void @"$CheckSenderBalance_2363"(%Uint128 %_amount, [20 x i8]* %"$_origin_2364", [20 x i8]* %"$_sender_2365", %Uint128 %expected_balance) { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2364", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2365", align 1 + %"$gasrem_2366" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2367" = icmp ugt i64 1, %"$gasrem_2366" + br i1 %"$gascmp_2367", label %"$out_of_gas_2368", label %"$have_gas_2369" + +"$out_of_gas_2368": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2369" + +"$have_gas_2369": ; preds = %"$out_of_gas_2368", %entry + %"$consume_2370" = sub i64 %"$gasrem_2366", 1 + store i64 %"$consume_2370", i64* @_gasrem, align 8 + %"$CheckBalance__origin_2371" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_2371", align 1 + %"$CheckBalance__sender_2372" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_2372", align 1 + call void @"$CheckBalance_2277"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_2371", [20 x i8]* %"$CheckBalance__sender_2372", %Uint128 %expected_balance) + ret void +} + +define void @CheckSenderBalance(i8* %0) { +entry: + %"$_amount_2374" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2375" = bitcast i8* %"$_amount_2374" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2375", align 8 + %"$_origin_2376" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2377" = bitcast i8* %"$_origin_2376" to [20 x i8]* + %"$_sender_2378" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2379" = bitcast i8* %"$_sender_2378" to [20 x i8]* + %"$expected_balance_2380" = getelementptr i8, i8* %0, i32 56 + %"$expected_balance_2381" = bitcast i8* %"$expected_balance_2380" to %Uint128* + %expected_balance = load %Uint128, %Uint128* %"$expected_balance_2381", align 8 + call void @"$CheckSenderBalance_2363"(%Uint128 %_amount, [20 x i8]* %"$_origin_2377", [20 x i8]* %"$_sender_2379", %Uint128 %expected_balance) + ret void +} + +define internal void @"$CheckSupportBalance_2382"(%Uint128 %_amount, [20 x i8]* %"$_origin_2383", [20 x i8]* %"$_sender_2384", %Uint128 %expected_balance) { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2383", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2384", align 1 + %cur_balance = alloca %Uint128, align 8 + %"$execptr_load_2386" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_support_contract_2387" = alloca [20 x i8], align 1 + %"$support_contract_2388" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + store [20 x i8] %"$support_contract_2388", [20 x i8]* %"$cur_balance_support_contract_2387", align 1 + %"$cur_balance_call_2389" = call i8* @_fetch_remote_field(i8* %"$execptr_load_2386", [20 x i8]* %"$cur_balance_support_contract_2387", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_2385", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$cur_balance_2390" = bitcast i8* %"$cur_balance_call_2389" to %Uint128* + %"$cur_balance_2391" = load %Uint128, %Uint128* %"$cur_balance_2390", align 8 + store %Uint128 %"$cur_balance_2391", %Uint128* %cur_balance, align 8 + %"$_literal_cost_cur_balance_2392" = alloca %Uint128, align 8 + %"$cur_balance_2393" = load %Uint128, %Uint128* %cur_balance, align 8 + store %Uint128 %"$cur_balance_2393", %Uint128* %"$_literal_cost_cur_balance_2392", align 8 + %"$$_literal_cost_cur_balance_2392_2394" = bitcast %Uint128* %"$_literal_cost_cur_balance_2392" to i8* + %"$_literal_cost_call_2395" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_cur_balance_2392_2394") + %"$gasadd_2396" = add i64 %"$_literal_cost_call_2395", 0 + %"$gasrem_2397" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2398" = icmp ugt i64 %"$gasadd_2396", %"$gasrem_2397" + br i1 %"$gascmp_2398", label %"$out_of_gas_2399", label %"$have_gas_2400" + +"$out_of_gas_2399": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2400" + +"$have_gas_2400": ; preds = %"$out_of_gas_2399", %entry + %"$consume_2401" = sub i64 %"$gasrem_2397", %"$gasadd_2396" + store i64 %"$consume_2401", i64* @_gasrem, align 8 + %"$gasrem_2402" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2403" = icmp ugt i64 1, %"$gasrem_2402" + br i1 %"$gascmp_2403", label %"$out_of_gas_2404", label %"$have_gas_2405" + +"$out_of_gas_2404": ; preds = %"$have_gas_2400" + call void @_out_of_gas() + br label %"$have_gas_2405" + +"$have_gas_2405": ; preds = %"$out_of_gas_2404", %"$have_gas_2400" + %"$consume_2406" = sub i64 %"$gasrem_2402", 1 + store i64 %"$consume_2406", i64* @_gasrem, align 8 + %is_expected = alloca %TName_Bool*, align 8 + %"$execptr_load_2407" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_2408" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$eq_call_2409" = call %TName_Bool* @_eq_Uint128(i8* %"$execptr_load_2407", %Uint128 %expected_balance, %Uint128 %"$cur_balance_2408") + store %TName_Bool* %"$eq_call_2409", %TName_Bool** %is_expected, align 8 + %"$gasrem_2411" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2412" = icmp ugt i64 2, %"$gasrem_2411" + br i1 %"$gascmp_2412", label %"$out_of_gas_2413", label %"$have_gas_2414" + +"$out_of_gas_2413": ; preds = %"$have_gas_2405" + call void @_out_of_gas() + br label %"$have_gas_2414" + +"$have_gas_2414": ; preds = %"$out_of_gas_2413", %"$have_gas_2405" + %"$consume_2415" = sub i64 %"$gasrem_2411", 2 + store i64 %"$consume_2415", i64* @_gasrem, align 8 + %"$is_expected_2417" = load %TName_Bool*, %TName_Bool** %is_expected, align 8 + %"$is_expected_tag_2418" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_expected_2417", i32 0, i32 0 + %"$is_expected_tag_2419" = load i8, i8* %"$is_expected_tag_2418", align 1 + switch i8 %"$is_expected_tag_2419", label %"$empty_default_2420" [ + i8 0, label %"$True_2421" + i8 1, label %"$False_2423" + ] + +"$True_2421": ; preds = %"$have_gas_2414" + %"$is_expected_2422" = bitcast %TName_Bool* %"$is_expected_2417" to %CName_True* + br label %"$matchsucc_2416" + +"$False_2423": ; preds = %"$have_gas_2414" + %"$is_expected_2424" = bitcast %TName_Bool* %"$is_expected_2417" to %CName_False* + %"$gasrem_2425" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2426" = icmp ugt i64 1, %"$gasrem_2425" + br i1 %"$gascmp_2426", label %"$out_of_gas_2427", label %"$have_gas_2428" + +"$out_of_gas_2427": ; preds = %"$False_2423" + call void @_out_of_gas() + br label %"$have_gas_2428" + +"$have_gas_2428": ; preds = %"$out_of_gas_2427", %"$False_2423" + %"$consume_2429" = sub i64 %"$gasrem_2425", 1 + store i64 %"$consume_2429", i64* @_gasrem, align 8 + %e = alloca i8*, align 8 + %"$gasrem_2430" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2431" = icmp ugt i64 1, %"$gasrem_2430" + br i1 %"$gascmp_2431", label %"$out_of_gas_2432", label %"$have_gas_2433" + +"$out_of_gas_2432": ; preds = %"$have_gas_2428" + call void @_out_of_gas() + br label %"$have_gas_2433" + +"$have_gas_2433": ; preds = %"$out_of_gas_2432", %"$have_gas_2428" + %"$consume_2434" = sub i64 %"$gasrem_2430", 1 + store i64 %"$consume_2434", i64* @_gasrem, align 8 + %"$msgobj_2435_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2435_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2435_salloc_load", i64 121) + %"$msgobj_2435_salloc" = bitcast i8* %"$msgobj_2435_salloc_salloc" to [121 x i8]* + %"$msgobj_2435" = bitcast [121 x i8]* %"$msgobj_2435_salloc" to i8* + store i8 3, i8* %"$msgobj_2435", align 1 + %"$msgobj_fname_2437" = getelementptr i8, i8* %"$msgobj_2435", i32 1 + %"$msgobj_fname_2438" = bitcast i8* %"$msgobj_fname_2437" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2436", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2438", align 8 + %"$msgobj_td_2439" = getelementptr i8, i8* %"$msgobj_2435", i32 17 + %"$msgobj_td_2440" = bitcast i8* %"$msgobj_td_2439" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2440", align 8 + %"$msgobj_v_2442" = getelementptr i8, i8* %"$msgobj_2435", i32 25 + %"$msgobj_v_2443" = bitcast i8* %"$msgobj_v_2442" to %String* + store %String { i8* getelementptr inbounds ([54 x i8], [54 x i8]* @"$stringlit_2441", i32 0, i32 0), i32 54 }, %String* %"$msgobj_v_2443", align 8 + %"$msgobj_fname_2445" = getelementptr i8, i8* %"$msgobj_2435", i32 41 + %"$msgobj_fname_2446" = bitcast i8* %"$msgobj_fname_2445" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_2444", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_2446", align 8 + %"$msgobj_td_2447" = getelementptr i8, i8* %"$msgobj_2435", i32 57 + %"$msgobj_td_2448" = bitcast i8* %"$msgobj_td_2447" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2448", align 8 + %"$msgobj_v_2449" = getelementptr i8, i8* %"$msgobj_2435", i32 65 + %"$msgobj_v_2450" = bitcast i8* %"$msgobj_v_2449" to %Uint128* + store %Uint128 %expected_balance, %Uint128* %"$msgobj_v_2450", align 8 + %"$msgobj_fname_2452" = getelementptr i8, i8* %"$msgobj_2435", i32 81 + %"$msgobj_fname_2453" = bitcast i8* %"$msgobj_fname_2452" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_2451", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_2453", align 8 + %"$msgobj_td_2454" = getelementptr i8, i8* %"$msgobj_2435", i32 97 + %"$msgobj_td_2455" = bitcast i8* %"$msgobj_td_2454" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2455", align 8 + %"$cur_balance_2456" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$msgobj_v_2457" = getelementptr i8, i8* %"$msgobj_2435", i32 105 + %"$msgobj_v_2458" = bitcast i8* %"$msgobj_v_2457" to %Uint128* + store %Uint128 %"$cur_balance_2456", %Uint128* %"$msgobj_v_2458", align 8 + store i8* %"$msgobj_2435", i8** %e, align 8 + %"$e_2460" = load i8*, i8** %e, align 8 + %"$_literal_cost_call_2462" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_2460") + %"$gasrem_2463" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2464" = icmp ugt i64 %"$_literal_cost_call_2462", %"$gasrem_2463" + br i1 %"$gascmp_2464", label %"$out_of_gas_2465", label %"$have_gas_2466" + +"$out_of_gas_2465": ; preds = %"$have_gas_2433" + call void @_out_of_gas() + br label %"$have_gas_2466" + +"$have_gas_2466": ; preds = %"$out_of_gas_2465", %"$have_gas_2433" + %"$consume_2467" = sub i64 %"$gasrem_2463", %"$_literal_cost_call_2462" + store i64 %"$consume_2467", i64* @_gasrem, align 8 + %"$execptr_load_2468" = load i8*, i8** @_execptr, align 8 + %"$e_2469" = load i8*, i8** %e, align 8 + call void @_throw(i8* %"$execptr_load_2468", %_TyDescrTy_Typ* @"$TyDescr_Exception_113", i8* %"$e_2469") + br label %"$matchsucc_2416" + +"$empty_default_2420": ; preds = %"$have_gas_2414" + br label %"$matchsucc_2416" + +"$matchsucc_2416": ; preds = %"$have_gas_2466", %"$True_2421", %"$empty_default_2420" + ret void +} + +define internal void @"$CheckRecipientBalance_2470"(%Uint128 %_amount, [20 x i8]* %"$_origin_2471", [20 x i8]* %"$_sender_2472", %Uint128 %expected_balance) { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2471", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2472", align 1 + %"$gasrem_2473" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2474" = icmp ugt i64 1, %"$gasrem_2473" + br i1 %"$gascmp_2474", label %"$out_of_gas_2475", label %"$have_gas_2476" + +"$out_of_gas_2475": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2476" + +"$have_gas_2476": ; preds = %"$out_of_gas_2475", %entry + %"$consume_2477" = sub i64 %"$gasrem_2473", 1 + store i64 %"$consume_2477", i64* @_gasrem, align 8 + %"$CheckSupportBalance__origin_2478" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckSupportBalance__origin_2478", align 1 + %"$CheckSupportBalance__sender_2479" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckSupportBalance__sender_2479", align 1 + call void @"$CheckSupportBalance_2382"(%Uint128 %_amount, [20 x i8]* %"$CheckSupportBalance__origin_2478", [20 x i8]* %"$CheckSupportBalance__sender_2479", %Uint128 %expected_balance) + ret void +} + +define void @CheckRecipientBalance(i8* %0) { +entry: + %"$_amount_2481" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2482" = bitcast i8* %"$_amount_2481" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2482", align 8 + %"$_origin_2483" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2484" = bitcast i8* %"$_origin_2483" to [20 x i8]* + %"$_sender_2485" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2486" = bitcast i8* %"$_sender_2485" to [20 x i8]* + %"$expected_balance_2487" = getelementptr i8, i8* %0, i32 56 + %"$expected_balance_2488" = bitcast i8* %"$expected_balance_2487" to %Uint128* + %expected_balance = load %Uint128, %Uint128* %"$expected_balance_2488", align 8 + call void @"$CheckRecipientBalance_2470"(%Uint128 %_amount, [20 x i8]* %"$_origin_2484", [20 x i8]* %"$_sender_2486", %Uint128 %expected_balance) + ret void +} + +define internal void @"$Test_Send_4_2489"(%Uint128 %_amount, [20 x i8]* %"$_origin_2490", [20 x i8]* %"$_sender_2491") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2490", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2491", align 1 + %"$gasrem_2492" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2493" = icmp ugt i64 1, %"$gasrem_2492" + br i1 %"$gascmp_2493", label %"$out_of_gas_2494", label %"$have_gas_2495" + +"$out_of_gas_2494": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2495" + +"$have_gas_2495": ; preds = %"$out_of_gas_2494", %entry + %"$consume_2496" = sub i64 %"$gasrem_2492", 1 + store i64 %"$consume_2496", i64* @_gasrem, align 8 + %"$AssertReset__origin_2497" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_2497", align 1 + %"$AssertReset__sender_2498" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_2498", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_2497", [20 x i8]* %"$AssertReset__sender_2498") + %amount = alloca %Uint128, align 8 + %"$execptr_load_2500" = load i8*, i8** @_execptr, align 8 + %"$amount_call_2501" = call i8* @_fetch_field(i8* %"$execptr_load_2500", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_2499", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$amount_2502" = bitcast i8* %"$amount_call_2501" to %Uint128* + %"$amount_2503" = load %Uint128, %Uint128* %"$amount_2502", align 8 + store %Uint128 %"$amount_2503", %Uint128* %amount, align 8 + %"$_literal_cost_amount_2504" = alloca %Uint128, align 8 + %"$amount_2505" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_2505", %Uint128* %"$_literal_cost_amount_2504", align 8 + %"$$_literal_cost_amount_2504_2506" = bitcast %Uint128* %"$_literal_cost_amount_2504" to i8* + %"$_literal_cost_call_2507" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_2504_2506") + %"$gasadd_2508" = add i64 %"$_literal_cost_call_2507", 0 + %"$gasrem_2509" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2510" = icmp ugt i64 %"$gasadd_2508", %"$gasrem_2509" + br i1 %"$gascmp_2510", label %"$out_of_gas_2511", label %"$have_gas_2512" + +"$out_of_gas_2511": ; preds = %"$have_gas_2495" + call void @_out_of_gas() + br label %"$have_gas_2512" + +"$have_gas_2512": ; preds = %"$out_of_gas_2511", %"$have_gas_2495" + %"$consume_2513" = sub i64 %"$gasrem_2509", %"$gasadd_2508" + store i64 %"$consume_2513", i64* @_gasrem, align 8 + %init_bal = alloca %Uint128, align 8 + %"$execptr_load_2515" = load i8*, i8** @_execptr, align 8 + %"$init_bal_call_2516" = call i8* @_fetch_field(i8* %"$execptr_load_2515", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_2514", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$init_bal_2517" = bitcast i8* %"$init_bal_call_2516" to %Uint128* + %"$init_bal_2518" = load %Uint128, %Uint128* %"$init_bal_2517", align 8 + store %Uint128 %"$init_bal_2518", %Uint128* %init_bal, align 8 + %"$_literal_cost_init_bal_2519" = alloca %Uint128, align 8 + %"$init_bal_2520" = load %Uint128, %Uint128* %init_bal, align 8 + store %Uint128 %"$init_bal_2520", %Uint128* %"$_literal_cost_init_bal_2519", align 8 + %"$$_literal_cost_init_bal_2519_2521" = bitcast %Uint128* %"$_literal_cost_init_bal_2519" to i8* + %"$_literal_cost_call_2522" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_init_bal_2519_2521") + %"$gasadd_2523" = add i64 %"$_literal_cost_call_2522", 0 + %"$gasrem_2524" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2525" = icmp ugt i64 %"$gasadd_2523", %"$gasrem_2524" + br i1 %"$gascmp_2525", label %"$out_of_gas_2526", label %"$have_gas_2527" + +"$out_of_gas_2526": ; preds = %"$have_gas_2512" + call void @_out_of_gas() + br label %"$have_gas_2527" + +"$have_gas_2527": ; preds = %"$out_of_gas_2526", %"$have_gas_2512" + %"$consume_2528" = sub i64 %"$gasrem_2524", %"$gasadd_2523" + store i64 %"$consume_2528", i64* @_gasrem, align 8 + %"$gasrem_2529" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2530" = icmp ugt i64 1, %"$gasrem_2529" + br i1 %"$gascmp_2530", label %"$out_of_gas_2531", label %"$have_gas_2532" + +"$out_of_gas_2531": ; preds = %"$have_gas_2527" + call void @_out_of_gas() + br label %"$have_gas_2532" + +"$have_gas_2532": ; preds = %"$out_of_gas_2531", %"$have_gas_2527" + %"$consume_2533" = sub i64 %"$gasrem_2529", 1 + store i64 %"$consume_2533", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_2534" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2535" = icmp ugt i64 1, %"$gasrem_2534" + br i1 %"$gascmp_2535", label %"$out_of_gas_2536", label %"$have_gas_2537" + +"$out_of_gas_2536": ; preds = %"$have_gas_2532" + call void @_out_of_gas() + br label %"$have_gas_2537" + +"$have_gas_2537": ; preds = %"$out_of_gas_2536", %"$have_gas_2532" + %"$consume_2538" = sub i64 %"$gasrem_2534", 1 + store i64 %"$consume_2538", i64* @_gasrem, align 8 + %"$msgobj_2539_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2539_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2539_salloc_load", i64 125) + %"$msgobj_2539_salloc" = bitcast i8* %"$msgobj_2539_salloc_salloc" to [125 x i8]* + %"$msgobj_2539" = bitcast [125 x i8]* %"$msgobj_2539_salloc" to i8* + store i8 3, i8* %"$msgobj_2539", align 1 + %"$msgobj_fname_2541" = getelementptr i8, i8* %"$msgobj_2539", i32 1 + %"$msgobj_fname_2542" = bitcast i8* %"$msgobj_fname_2541" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2540", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2542", align 8 + %"$msgobj_td_2543" = getelementptr i8, i8* %"$msgobj_2539", i32 17 + %"$msgobj_td_2544" = bitcast i8* %"$msgobj_td_2543" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2544", align 8 + %"$support_contract_2545" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2546" = getelementptr i8, i8* %"$msgobj_2539", i32 25 + %"$msgobj_v_2547" = bitcast i8* %"$msgobj_v_2546" to [20 x i8]* + store [20 x i8] %"$support_contract_2545", [20 x i8]* %"$msgobj_v_2547", align 1 + %"$msgobj_fname_2549" = getelementptr i8, i8* %"$msgobj_2539", i32 45 + %"$msgobj_fname_2550" = bitcast i8* %"$msgobj_fname_2549" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2548", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2550", align 8 + %"$msgobj_td_2551" = getelementptr i8, i8* %"$msgobj_2539", i32 61 + %"$msgobj_td_2552" = bitcast i8* %"$msgobj_td_2551" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2552", align 8 + %"$msgobj_v_2554" = getelementptr i8, i8* %"$msgobj_2539", i32 69 + %"$msgobj_v_2555" = bitcast i8* %"$msgobj_v_2554" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_2553", i32 0, i32 0), i32 6 }, %String* %"$msgobj_v_2555", align 8 + %"$msgobj_fname_2557" = getelementptr i8, i8* %"$msgobj_2539", i32 85 + %"$msgobj_fname_2558" = bitcast i8* %"$msgobj_fname_2557" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2556", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2558", align 8 + %"$msgobj_td_2559" = getelementptr i8, i8* %"$msgobj_2539", i32 101 + %"$msgobj_td_2560" = bitcast i8* %"$msgobj_td_2559" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2560", align 8 + %"$amount_2561" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_2562" = getelementptr i8, i8* %"$msgobj_2539", i32 109 + %"$msgobj_v_2563" = bitcast i8* %"$msgobj_v_2562" to %Uint128* + store %Uint128 %"$amount_2561", %Uint128* %"$msgobj_v_2563", align 8 + store i8* %"$msgobj_2539", i8** %msg1, align 8 + %"$gasrem_2565" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2566" = icmp ugt i64 1, %"$gasrem_2565" + br i1 %"$gascmp_2566", label %"$out_of_gas_2567", label %"$have_gas_2568" + +"$out_of_gas_2567": ; preds = %"$have_gas_2537" + call void @_out_of_gas() + br label %"$have_gas_2568" + +"$have_gas_2568": ; preds = %"$out_of_gas_2567", %"$have_gas_2537" + %"$consume_2569" = sub i64 %"$gasrem_2565", 1 + store i64 %"$consume_2569", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_2570" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2571" = icmp ugt i64 1, %"$gasrem_2570" + br i1 %"$gascmp_2571", label %"$out_of_gas_2572", label %"$have_gas_2573" + +"$out_of_gas_2572": ; preds = %"$have_gas_2568" + call void @_out_of_gas() + br label %"$have_gas_2573" + +"$have_gas_2573": ; preds = %"$out_of_gas_2572", %"$have_gas_2568" + %"$consume_2574" = sub i64 %"$gasrem_2570", 1 + store i64 %"$consume_2574", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_30" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2575" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2576" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2575", 0 + %"$accounting_tests.one_msg_envptr_2577" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2575", 1 + %"$msg1_2578" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_2579" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2576"(i8* %"$accounting_tests.one_msg_envptr_2577", i8* %"$msg1_2578") + store %TName_List_Message* %"$accounting_tests.one_msg_call_2579", %TName_List_Message** %"$accounting_tests.one_msg_30", align 8 + %"$$accounting_tests.one_msg_30_2580" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_30", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_30_2580", %TName_List_Message** %msgs1, align 8 + %"$msgs1_2581" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_2581_2582" = bitcast %TName_List_Message* %"$msgs1_2581" to i8* + %"$_literal_cost_call_2583" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_2581_2582") + %"$gasrem_2584" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2585" = icmp ugt i64 %"$_literal_cost_call_2583", %"$gasrem_2584" + br i1 %"$gascmp_2585", label %"$out_of_gas_2586", label %"$have_gas_2587" + +"$out_of_gas_2586": ; preds = %"$have_gas_2573" + call void @_out_of_gas() + br label %"$have_gas_2587" + +"$have_gas_2587": ; preds = %"$out_of_gas_2586", %"$have_gas_2573" + %"$consume_2588" = sub i64 %"$gasrem_2584", %"$_literal_cost_call_2583" + store i64 %"$consume_2588", i64* @_gasrem, align 8 + %"$execptr_load_2589" = load i8*, i8** @_execptr, align 8 + %"$msgs1_2590" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_2589", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_2590") + %"$gasrem_2591" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2592" = icmp ugt i64 1, %"$gasrem_2591" + br i1 %"$gascmp_2592", label %"$out_of_gas_2593", label %"$have_gas_2594" + +"$out_of_gas_2593": ; preds = %"$have_gas_2587" + call void @_out_of_gas() + br label %"$have_gas_2594" + +"$have_gas_2594": ; preds = %"$out_of_gas_2593", %"$have_gas_2587" + %"$consume_2595" = sub i64 %"$gasrem_2591", 1 + store i64 %"$consume_2595", i64* @_gasrem, align 8 + %expected_intermediate_balance = alloca %Uint128, align 8 + %"$init_bal_2596" = load %Uint128, %Uint128* %init_bal, align 8 + %"$amount_2597" = load %Uint128, %Uint128* %amount, align 8 + %"$sub_call_2598" = call %Uint128 @_sub_Uint128(%Uint128 %"$init_bal_2596", %Uint128 %"$amount_2597") + store %Uint128 %"$sub_call_2598", %Uint128* %expected_intermediate_balance, align 8 + %"$gasrem_2599" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2600" = icmp ugt i64 1, %"$gasrem_2599" + br i1 %"$gascmp_2600", label %"$out_of_gas_2601", label %"$have_gas_2602" + +"$out_of_gas_2601": ; preds = %"$have_gas_2594" + call void @_out_of_gas() + br label %"$have_gas_2602" + +"$have_gas_2602": ; preds = %"$out_of_gas_2601", %"$have_gas_2594" + %"$consume_2603" = sub i64 %"$gasrem_2599", 1 + store i64 %"$consume_2603", i64* @_gasrem, align 8 + %"$CheckBalance__origin_2604" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_2604", align 1 + %"$CheckBalance__sender_2605" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_2605", align 1 + %"$expected_intermediate_balance_2606" = load %Uint128, %Uint128* %expected_intermediate_balance, align 8 + call void @"$CheckBalance_2277"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_2604", [20 x i8]* %"$CheckBalance__sender_2605", %Uint128 %"$expected_intermediate_balance_2606") + %"$gasrem_2607" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2608" = icmp ugt i64 1, %"$gasrem_2607" + br i1 %"$gascmp_2608", label %"$out_of_gas_2609", label %"$have_gas_2610" + +"$out_of_gas_2609": ; preds = %"$have_gas_2602" + call void @_out_of_gas() + br label %"$have_gas_2610" + +"$have_gas_2610": ; preds = %"$out_of_gas_2609", %"$have_gas_2602" + %"$consume_2611" = sub i64 %"$gasrem_2607", 1 + store i64 %"$consume_2611", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_2612" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2613" = icmp ugt i64 1, %"$gasrem_2612" + br i1 %"$gascmp_2613", label %"$out_of_gas_2614", label %"$have_gas_2615" + +"$out_of_gas_2614": ; preds = %"$have_gas_2610" + call void @_out_of_gas() + br label %"$have_gas_2615" + +"$have_gas_2615": ; preds = %"$out_of_gas_2614", %"$have_gas_2610" + %"$consume_2616" = sub i64 %"$gasrem_2612", 1 + store i64 %"$consume_2616", i64* @_gasrem, align 8 + %"$msgobj_2617_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2617_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2617_salloc_load", i64 125) + %"$msgobj_2617_salloc" = bitcast i8* %"$msgobj_2617_salloc_salloc" to [125 x i8]* + %"$msgobj_2617" = bitcast [125 x i8]* %"$msgobj_2617_salloc" to i8* + store i8 3, i8* %"$msgobj_2617", align 1 + %"$msgobj_fname_2619" = getelementptr i8, i8* %"$msgobj_2617", i32 1 + %"$msgobj_fname_2620" = bitcast i8* %"$msgobj_fname_2619" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2618", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2620", align 8 + %"$msgobj_td_2621" = getelementptr i8, i8* %"$msgobj_2617", i32 17 + %"$msgobj_td_2622" = bitcast i8* %"$msgobj_td_2621" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2622", align 8 + %"$support_contract_2623" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2624" = getelementptr i8, i8* %"$msgobj_2617", i32 25 + %"$msgobj_v_2625" = bitcast i8* %"$msgobj_v_2624" to [20 x i8]* + store [20 x i8] %"$support_contract_2623", [20 x i8]* %"$msgobj_v_2625", align 1 + %"$msgobj_fname_2627" = getelementptr i8, i8* %"$msgobj_2617", i32 45 + %"$msgobj_fname_2628" = bitcast i8* %"$msgobj_fname_2627" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2626", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2628", align 8 + %"$msgobj_td_2629" = getelementptr i8, i8* %"$msgobj_2617", i32 61 + %"$msgobj_td_2630" = bitcast i8* %"$msgobj_td_2629" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2630", align 8 + %"$msgobj_v_2632" = getelementptr i8, i8* %"$msgobj_2617", i32 69 + %"$msgobj_v_2633" = bitcast i8* %"$msgobj_v_2632" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_2631", i32 0, i32 0), i32 9 }, %String* %"$msgobj_v_2633", align 8 + %"$msgobj_fname_2635" = getelementptr i8, i8* %"$msgobj_2617", i32 85 + %"$msgobj_fname_2636" = bitcast i8* %"$msgobj_fname_2635" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2634", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2636", align 8 + %"$msgobj_td_2637" = getelementptr i8, i8* %"$msgobj_2617", i32 101 + %"$msgobj_td_2638" = bitcast i8* %"$msgobj_td_2637" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2638", align 8 + %"$amount_2639" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_2640" = getelementptr i8, i8* %"$msgobj_2617", i32 109 + %"$msgobj_v_2641" = bitcast i8* %"$msgobj_v_2640" to %Uint128* + store %Uint128 %"$amount_2639", %Uint128* %"$msgobj_v_2641", align 8 + store i8* %"$msgobj_2617", i8** %msg2, align 8 + %"$gasrem_2643" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2644" = icmp ugt i64 1, %"$gasrem_2643" + br i1 %"$gascmp_2644", label %"$out_of_gas_2645", label %"$have_gas_2646" + +"$out_of_gas_2645": ; preds = %"$have_gas_2615" + call void @_out_of_gas() + br label %"$have_gas_2646" + +"$have_gas_2646": ; preds = %"$out_of_gas_2645", %"$have_gas_2615" + %"$consume_2647" = sub i64 %"$gasrem_2643", 1 + store i64 %"$consume_2647", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_2648" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2649" = icmp ugt i64 1, %"$gasrem_2648" + br i1 %"$gascmp_2649", label %"$out_of_gas_2650", label %"$have_gas_2651" + +"$out_of_gas_2650": ; preds = %"$have_gas_2646" + call void @_out_of_gas() + br label %"$have_gas_2651" + +"$have_gas_2651": ; preds = %"$out_of_gas_2650", %"$have_gas_2646" + %"$consume_2652" = sub i64 %"$gasrem_2648", 1 + store i64 %"$consume_2652", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_29" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2653" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2654" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2653", 0 + %"$accounting_tests.one_msg_envptr_2655" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2653", 1 + %"$msg2_2656" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_2657" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2654"(i8* %"$accounting_tests.one_msg_envptr_2655", i8* %"$msg2_2656") + store %TName_List_Message* %"$accounting_tests.one_msg_call_2657", %TName_List_Message** %"$accounting_tests.one_msg_29", align 8 + %"$$accounting_tests.one_msg_29_2658" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_29", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_29_2658", %TName_List_Message** %msgs2, align 8 + %"$msgs2_2659" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_2659_2660" = bitcast %TName_List_Message* %"$msgs2_2659" to i8* + %"$_literal_cost_call_2661" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_2659_2660") + %"$gasrem_2662" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2663" = icmp ugt i64 %"$_literal_cost_call_2661", %"$gasrem_2662" + br i1 %"$gascmp_2663", label %"$out_of_gas_2664", label %"$have_gas_2665" + +"$out_of_gas_2664": ; preds = %"$have_gas_2651" + call void @_out_of_gas() + br label %"$have_gas_2665" + +"$have_gas_2665": ; preds = %"$out_of_gas_2664", %"$have_gas_2651" + %"$consume_2666" = sub i64 %"$gasrem_2662", %"$_literal_cost_call_2661" + store i64 %"$consume_2666", i64* @_gasrem, align 8 + %"$execptr_load_2667" = load i8*, i8** @_execptr, align 8 + %"$msgs2_2668" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_2667", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_2668") + %"$gasrem_2669" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2670" = icmp ugt i64 1, %"$gasrem_2669" + br i1 %"$gascmp_2670", label %"$out_of_gas_2671", label %"$have_gas_2672" + +"$out_of_gas_2671": ; preds = %"$have_gas_2665" + call void @_out_of_gas() + br label %"$have_gas_2672" + +"$have_gas_2672": ; preds = %"$out_of_gas_2671", %"$have_gas_2665" + %"$consume_2673" = sub i64 %"$gasrem_2669", 1 + store i64 %"$consume_2673", i64* @_gasrem, align 8 + %expected_final_balance = alloca %Uint128, align 8 + %"$expected_intermediate_balance_2674" = load %Uint128, %Uint128* %expected_intermediate_balance, align 8 + %"$amount_2675" = load %Uint128, %Uint128* %amount, align 8 + %"$sub_call_2676" = call %Uint128 @_sub_Uint128(%Uint128 %"$expected_intermediate_balance_2674", %Uint128 %"$amount_2675") + store %Uint128 %"$sub_call_2676", %Uint128* %expected_final_balance, align 8 + %"$gasrem_2677" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2678" = icmp ugt i64 1, %"$gasrem_2677" + br i1 %"$gascmp_2678", label %"$out_of_gas_2679", label %"$have_gas_2680" + +"$out_of_gas_2679": ; preds = %"$have_gas_2672" + call void @_out_of_gas() + br label %"$have_gas_2680" + +"$have_gas_2680": ; preds = %"$out_of_gas_2679", %"$have_gas_2672" + %"$consume_2681" = sub i64 %"$gasrem_2677", 1 + store i64 %"$consume_2681", i64* @_gasrem, align 8 + %"$CheckBalance__origin_2682" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_2682", align 1 + %"$CheckBalance__sender_2683" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_2683", align 1 + %"$expected_final_balance_2684" = load %Uint128, %Uint128* %expected_final_balance, align 8 + call void @"$CheckBalance_2277"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_2682", [20 x i8]* %"$CheckBalance__sender_2683", %Uint128 %"$expected_final_balance_2684") + ret void +} + +declare %Uint128 @_sub_Uint128(%Uint128, %Uint128) + +define void @Test_Send_4(i8* %0) { +entry: + %"$_amount_2686" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2687" = bitcast i8* %"$_amount_2686" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2687", align 8 + %"$_origin_2688" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2689" = bitcast i8* %"$_origin_2688" to [20 x i8]* + %"$_sender_2690" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2691" = bitcast i8* %"$_sender_2690" to [20 x i8]* + call void @"$Test_Send_4_2489"(%Uint128 %_amount, [20 x i8]* %"$_origin_2689", [20 x i8]* %"$_sender_2691") + ret void +} + +define internal void @"$Test_Send_5_2692"(%Uint128 %_amount, [20 x i8]* %"$_origin_2693", [20 x i8]* %"$_sender_2694") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2693", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2694", align 1 + %"$gasrem_2695" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2696" = icmp ugt i64 1, %"$gasrem_2695" + br i1 %"$gascmp_2696", label %"$out_of_gas_2697", label %"$have_gas_2698" + +"$out_of_gas_2697": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2698" + +"$have_gas_2698": ; preds = %"$out_of_gas_2697", %entry + %"$consume_2699" = sub i64 %"$gasrem_2695", 1 + store i64 %"$consume_2699", i64* @_gasrem, align 8 + %"$AssertReset__origin_2700" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_2700", align 1 + %"$AssertReset__sender_2701" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_2701", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_2700", [20 x i8]* %"$AssertReset__sender_2701") + %amount = alloca %Uint128, align 8 + %"$execptr_load_2703" = load i8*, i8** @_execptr, align 8 + %"$amount_call_2704" = call i8* @_fetch_field(i8* %"$execptr_load_2703", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_2702", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$amount_2705" = bitcast i8* %"$amount_call_2704" to %Uint128* + %"$amount_2706" = load %Uint128, %Uint128* %"$amount_2705", align 8 + store %Uint128 %"$amount_2706", %Uint128* %amount, align 8 + %"$_literal_cost_amount_2707" = alloca %Uint128, align 8 + %"$amount_2708" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_2708", %Uint128* %"$_literal_cost_amount_2707", align 8 + %"$$_literal_cost_amount_2707_2709" = bitcast %Uint128* %"$_literal_cost_amount_2707" to i8* + %"$_literal_cost_call_2710" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_2707_2709") + %"$gasadd_2711" = add i64 %"$_literal_cost_call_2710", 0 + %"$gasrem_2712" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2713" = icmp ugt i64 %"$gasadd_2711", %"$gasrem_2712" + br i1 %"$gascmp_2713", label %"$out_of_gas_2714", label %"$have_gas_2715" + +"$out_of_gas_2714": ; preds = %"$have_gas_2698" + call void @_out_of_gas() + br label %"$have_gas_2715" + +"$have_gas_2715": ; preds = %"$out_of_gas_2714", %"$have_gas_2698" + %"$consume_2716" = sub i64 %"$gasrem_2712", %"$gasadd_2711" + store i64 %"$consume_2716", i64* @_gasrem, align 8 + %init_bal = alloca %Uint128, align 8 + %"$execptr_load_2718" = load i8*, i8** @_execptr, align 8 + %"$init_bal_call_2719" = call i8* @_fetch_field(i8* %"$execptr_load_2718", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_2717", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$init_bal_2720" = bitcast i8* %"$init_bal_call_2719" to %Uint128* + %"$init_bal_2721" = load %Uint128, %Uint128* %"$init_bal_2720", align 8 + store %Uint128 %"$init_bal_2721", %Uint128* %init_bal, align 8 + %"$_literal_cost_init_bal_2722" = alloca %Uint128, align 8 + %"$init_bal_2723" = load %Uint128, %Uint128* %init_bal, align 8 + store %Uint128 %"$init_bal_2723", %Uint128* %"$_literal_cost_init_bal_2722", align 8 + %"$$_literal_cost_init_bal_2722_2724" = bitcast %Uint128* %"$_literal_cost_init_bal_2722" to i8* + %"$_literal_cost_call_2725" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_init_bal_2722_2724") + %"$gasadd_2726" = add i64 %"$_literal_cost_call_2725", 0 + %"$gasrem_2727" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2728" = icmp ugt i64 %"$gasadd_2726", %"$gasrem_2727" + br i1 %"$gascmp_2728", label %"$out_of_gas_2729", label %"$have_gas_2730" + +"$out_of_gas_2729": ; preds = %"$have_gas_2715" + call void @_out_of_gas() + br label %"$have_gas_2730" + +"$have_gas_2730": ; preds = %"$out_of_gas_2729", %"$have_gas_2715" + %"$consume_2731" = sub i64 %"$gasrem_2727", %"$gasadd_2726" + store i64 %"$consume_2731", i64* @_gasrem, align 8 + %"$gasrem_2732" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2733" = icmp ugt i64 1, %"$gasrem_2732" + br i1 %"$gascmp_2733", label %"$out_of_gas_2734", label %"$have_gas_2735" + +"$out_of_gas_2734": ; preds = %"$have_gas_2730" + call void @_out_of_gas() + br label %"$have_gas_2735" + +"$have_gas_2735": ; preds = %"$out_of_gas_2734", %"$have_gas_2730" + %"$consume_2736" = sub i64 %"$gasrem_2732", 1 + store i64 %"$consume_2736", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_2737" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2738" = icmp ugt i64 1, %"$gasrem_2737" + br i1 %"$gascmp_2738", label %"$out_of_gas_2739", label %"$have_gas_2740" + +"$out_of_gas_2739": ; preds = %"$have_gas_2735" + call void @_out_of_gas() + br label %"$have_gas_2740" + +"$have_gas_2740": ; preds = %"$out_of_gas_2739", %"$have_gas_2735" + %"$consume_2741" = sub i64 %"$gasrem_2737", 1 + store i64 %"$consume_2741", i64* @_gasrem, align 8 + %"$msgobj_2742_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2742_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2742_salloc_load", i64 125) + %"$msgobj_2742_salloc" = bitcast i8* %"$msgobj_2742_salloc_salloc" to [125 x i8]* + %"$msgobj_2742" = bitcast [125 x i8]* %"$msgobj_2742_salloc" to i8* + store i8 3, i8* %"$msgobj_2742", align 1 + %"$msgobj_fname_2744" = getelementptr i8, i8* %"$msgobj_2742", i32 1 + %"$msgobj_fname_2745" = bitcast i8* %"$msgobj_fname_2744" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2743", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2745", align 8 + %"$msgobj_td_2746" = getelementptr i8, i8* %"$msgobj_2742", i32 17 + %"$msgobj_td_2747" = bitcast i8* %"$msgobj_td_2746" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2747", align 8 + %"$support_contract_2748" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2749" = getelementptr i8, i8* %"$msgobj_2742", i32 25 + %"$msgobj_v_2750" = bitcast i8* %"$msgobj_v_2749" to [20 x i8]* + store [20 x i8] %"$support_contract_2748", [20 x i8]* %"$msgobj_v_2750", align 1 + %"$msgobj_fname_2752" = getelementptr i8, i8* %"$msgobj_2742", i32 45 + %"$msgobj_fname_2753" = bitcast i8* %"$msgobj_fname_2752" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2751", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2753", align 8 + %"$msgobj_td_2754" = getelementptr i8, i8* %"$msgobj_2742", i32 61 + %"$msgobj_td_2755" = bitcast i8* %"$msgobj_td_2754" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2755", align 8 + %"$msgobj_v_2757" = getelementptr i8, i8* %"$msgobj_2742", i32 69 + %"$msgobj_v_2758" = bitcast i8* %"$msgobj_v_2757" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_2756", i32 0, i32 0), i32 6 }, %String* %"$msgobj_v_2758", align 8 + %"$msgobj_fname_2760" = getelementptr i8, i8* %"$msgobj_2742", i32 85 + %"$msgobj_fname_2761" = bitcast i8* %"$msgobj_fname_2760" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2759", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2761", align 8 + %"$msgobj_td_2762" = getelementptr i8, i8* %"$msgobj_2742", i32 101 + %"$msgobj_td_2763" = bitcast i8* %"$msgobj_td_2762" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2763", align 8 + %"$amount_2764" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_2765" = getelementptr i8, i8* %"$msgobj_2742", i32 109 + %"$msgobj_v_2766" = bitcast i8* %"$msgobj_v_2765" to %Uint128* + store %Uint128 %"$amount_2764", %Uint128* %"$msgobj_v_2766", align 8 + store i8* %"$msgobj_2742", i8** %msg1, align 8 + %"$gasrem_2768" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2769" = icmp ugt i64 1, %"$gasrem_2768" + br i1 %"$gascmp_2769", label %"$out_of_gas_2770", label %"$have_gas_2771" + +"$out_of_gas_2770": ; preds = %"$have_gas_2740" + call void @_out_of_gas() + br label %"$have_gas_2771" + +"$have_gas_2771": ; preds = %"$out_of_gas_2770", %"$have_gas_2740" + %"$consume_2772" = sub i64 %"$gasrem_2768", 1 + store i64 %"$consume_2772", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_2773" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2774" = icmp ugt i64 1, %"$gasrem_2773" + br i1 %"$gascmp_2774", label %"$out_of_gas_2775", label %"$have_gas_2776" + +"$out_of_gas_2775": ; preds = %"$have_gas_2771" + call void @_out_of_gas() + br label %"$have_gas_2776" + +"$have_gas_2776": ; preds = %"$out_of_gas_2775", %"$have_gas_2771" + %"$consume_2777" = sub i64 %"$gasrem_2773", 1 + store i64 %"$consume_2777", i64* @_gasrem, align 8 + %"$msgobj_2778_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2778_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2778_salloc_load", i64 125) + %"$msgobj_2778_salloc" = bitcast i8* %"$msgobj_2778_salloc_salloc" to [125 x i8]* + %"$msgobj_2778" = bitcast [125 x i8]* %"$msgobj_2778_salloc" to i8* + store i8 3, i8* %"$msgobj_2778", align 1 + %"$msgobj_fname_2780" = getelementptr i8, i8* %"$msgobj_2778", i32 1 + %"$msgobj_fname_2781" = bitcast i8* %"$msgobj_fname_2780" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2779", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2781", align 8 + %"$msgobj_td_2782" = getelementptr i8, i8* %"$msgobj_2778", i32 17 + %"$msgobj_td_2783" = bitcast i8* %"$msgobj_td_2782" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2783", align 8 + %"$support_contract_2784" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2785" = getelementptr i8, i8* %"$msgobj_2778", i32 25 + %"$msgobj_v_2786" = bitcast i8* %"$msgobj_v_2785" to [20 x i8]* + store [20 x i8] %"$support_contract_2784", [20 x i8]* %"$msgobj_v_2786", align 1 + %"$msgobj_fname_2788" = getelementptr i8, i8* %"$msgobj_2778", i32 45 + %"$msgobj_fname_2789" = bitcast i8* %"$msgobj_fname_2788" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2787", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2789", align 8 + %"$msgobj_td_2790" = getelementptr i8, i8* %"$msgobj_2778", i32 61 + %"$msgobj_td_2791" = bitcast i8* %"$msgobj_td_2790" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2791", align 8 + %"$msgobj_v_2793" = getelementptr i8, i8* %"$msgobj_2778", i32 69 + %"$msgobj_v_2794" = bitcast i8* %"$msgobj_v_2793" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_2792", i32 0, i32 0), i32 9 }, %String* %"$msgobj_v_2794", align 8 + %"$msgobj_fname_2796" = getelementptr i8, i8* %"$msgobj_2778", i32 85 + %"$msgobj_fname_2797" = bitcast i8* %"$msgobj_fname_2796" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2795", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2797", align 8 + %"$msgobj_td_2798" = getelementptr i8, i8* %"$msgobj_2778", i32 101 + %"$msgobj_td_2799" = bitcast i8* %"$msgobj_td_2798" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2799", align 8 + %"$amount_2800" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_2801" = getelementptr i8, i8* %"$msgobj_2778", i32 109 + %"$msgobj_v_2802" = bitcast i8* %"$msgobj_v_2801" to %Uint128* + store %Uint128 %"$amount_2800", %Uint128* %"$msgobj_v_2802", align 8 + store i8* %"$msgobj_2778", i8** %msg2, align 8 + %"$gasrem_2804" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2805" = icmp ugt i64 1, %"$gasrem_2804" + br i1 %"$gascmp_2805", label %"$out_of_gas_2806", label %"$have_gas_2807" + +"$out_of_gas_2806": ; preds = %"$have_gas_2776" + call void @_out_of_gas() + br label %"$have_gas_2807" + +"$have_gas_2807": ; preds = %"$out_of_gas_2806", %"$have_gas_2776" + %"$consume_2808" = sub i64 %"$gasrem_2804", 1 + store i64 %"$consume_2808", i64* @_gasrem, align 8 + %msgs_tmp = alloca %TName_List_Message*, align 8 + %"$gasrem_2809" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2810" = icmp ugt i64 1, %"$gasrem_2809" + br i1 %"$gascmp_2810", label %"$out_of_gas_2811", label %"$have_gas_2812" + +"$out_of_gas_2811": ; preds = %"$have_gas_2807" + call void @_out_of_gas() + br label %"$have_gas_2812" + +"$have_gas_2812": ; preds = %"$out_of_gas_2811", %"$have_gas_2807" + %"$consume_2813" = sub i64 %"$gasrem_2809", 1 + store i64 %"$consume_2813", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_31" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2814" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2815" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2814", 0 + %"$accounting_tests.one_msg_envptr_2816" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2814", 1 + %"$msg2_2817" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_2818" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2815"(i8* %"$accounting_tests.one_msg_envptr_2816", i8* %"$msg2_2817") + store %TName_List_Message* %"$accounting_tests.one_msg_call_2818", %TName_List_Message** %"$accounting_tests.one_msg_31", align 8 + %"$$accounting_tests.one_msg_31_2819" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_31", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_31_2819", %TName_List_Message** %msgs_tmp, align 8 + %"$gasrem_2820" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2821" = icmp ugt i64 1, %"$gasrem_2820" + br i1 %"$gascmp_2821", label %"$out_of_gas_2822", label %"$have_gas_2823" + +"$out_of_gas_2822": ; preds = %"$have_gas_2812" + call void @_out_of_gas() + br label %"$have_gas_2823" + +"$have_gas_2823": ; preds = %"$out_of_gas_2822", %"$have_gas_2812" + %"$consume_2824" = sub i64 %"$gasrem_2820", 1 + store i64 %"$consume_2824", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_2825" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2826" = icmp ugt i64 1, %"$gasrem_2825" + br i1 %"$gascmp_2826", label %"$out_of_gas_2827", label %"$have_gas_2828" + +"$out_of_gas_2827": ; preds = %"$have_gas_2823" + call void @_out_of_gas() + br label %"$have_gas_2828" + +"$have_gas_2828": ; preds = %"$out_of_gas_2827", %"$have_gas_2823" + %"$consume_2829" = sub i64 %"$gasrem_2825", 1 + store i64 %"$consume_2829", i64* @_gasrem, align 8 + %"$msg1_2830" = load i8*, i8** %msg1, align 8 + %"$msgs_tmp_2831" = load %TName_List_Message*, %TName_List_Message** %msgs_tmp, align 8 + %"$adtval_2832_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_2832_salloc" = call i8* @_salloc(i8* %"$adtval_2832_load", i64 17) + %"$adtval_2832" = bitcast i8* %"$adtval_2832_salloc" to %CName_Cons_Message* + %"$adtgep_2833" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_2832", i32 0, i32 0 + store i8 0, i8* %"$adtgep_2833", align 1 + %"$adtgep_2834" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_2832", i32 0, i32 1 + store i8* %"$msg1_2830", i8** %"$adtgep_2834", align 8 + %"$adtgep_2835" = getelementptr inbounds %CName_Cons_Message, %CName_Cons_Message* %"$adtval_2832", i32 0, i32 2 + store %TName_List_Message* %"$msgs_tmp_2831", %TName_List_Message** %"$adtgep_2835", align 8 + %"$adtptr_2836" = bitcast %CName_Cons_Message* %"$adtval_2832" to %TName_List_Message* + store %TName_List_Message* %"$adtptr_2836", %TName_List_Message** %msgs, align 8 + %"$msgs_2837" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_2837_2838" = bitcast %TName_List_Message* %"$msgs_2837" to i8* + %"$_literal_cost_call_2839" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_2837_2838") + %"$gasrem_2840" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2841" = icmp ugt i64 %"$_literal_cost_call_2839", %"$gasrem_2840" + br i1 %"$gascmp_2841", label %"$out_of_gas_2842", label %"$have_gas_2843" + +"$out_of_gas_2842": ; preds = %"$have_gas_2828" + call void @_out_of_gas() + br label %"$have_gas_2843" + +"$have_gas_2843": ; preds = %"$out_of_gas_2842", %"$have_gas_2828" + %"$consume_2844" = sub i64 %"$gasrem_2840", %"$_literal_cost_call_2839" + store i64 %"$consume_2844", i64* @_gasrem, align 8 + %"$execptr_load_2845" = load i8*, i8** @_execptr, align 8 + %"$msgs_2846" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_2845", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_2846") + %"$gasrem_2847" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2848" = icmp ugt i64 1, %"$gasrem_2847" + br i1 %"$gascmp_2848", label %"$out_of_gas_2849", label %"$have_gas_2850" + +"$out_of_gas_2849": ; preds = %"$have_gas_2843" + call void @_out_of_gas() + br label %"$have_gas_2850" + +"$have_gas_2850": ; preds = %"$out_of_gas_2849", %"$have_gas_2843" + %"$consume_2851" = sub i64 %"$gasrem_2847", 1 + store i64 %"$consume_2851", i64* @_gasrem, align 8 + %expected_intermediate_balance = alloca %Uint128, align 8 + %"$init_bal_2852" = load %Uint128, %Uint128* %init_bal, align 8 + %"$amount_2853" = load %Uint128, %Uint128* %amount, align 8 + %"$sub_call_2854" = call %Uint128 @_sub_Uint128(%Uint128 %"$init_bal_2852", %Uint128 %"$amount_2853") + store %Uint128 %"$sub_call_2854", %Uint128* %expected_intermediate_balance, align 8 + %"$gasrem_2855" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2856" = icmp ugt i64 1, %"$gasrem_2855" + br i1 %"$gascmp_2856", label %"$out_of_gas_2857", label %"$have_gas_2858" + +"$out_of_gas_2857": ; preds = %"$have_gas_2850" + call void @_out_of_gas() + br label %"$have_gas_2858" + +"$have_gas_2858": ; preds = %"$out_of_gas_2857", %"$have_gas_2850" + %"$consume_2859" = sub i64 %"$gasrem_2855", 1 + store i64 %"$consume_2859", i64* @_gasrem, align 8 + %expected_final_balance = alloca %Uint128, align 8 + %"$expected_intermediate_balance_2860" = load %Uint128, %Uint128* %expected_intermediate_balance, align 8 + %"$amount_2861" = load %Uint128, %Uint128* %amount, align 8 + %"$sub_call_2862" = call %Uint128 @_sub_Uint128(%Uint128 %"$expected_intermediate_balance_2860", %Uint128 %"$amount_2861") + store %Uint128 %"$sub_call_2862", %Uint128* %expected_final_balance, align 8 + %"$gasrem_2863" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2864" = icmp ugt i64 1, %"$gasrem_2863" + br i1 %"$gascmp_2864", label %"$out_of_gas_2865", label %"$have_gas_2866" + +"$out_of_gas_2865": ; preds = %"$have_gas_2858" + call void @_out_of_gas() + br label %"$have_gas_2866" + +"$have_gas_2866": ; preds = %"$out_of_gas_2865", %"$have_gas_2858" + %"$consume_2867" = sub i64 %"$gasrem_2863", 1 + store i64 %"$consume_2867", i64* @_gasrem, align 8 + %"$CheckBalance__origin_2868" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_2868", align 1 + %"$CheckBalance__sender_2869" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_2869", align 1 + %"$expected_final_balance_2870" = load %Uint128, %Uint128* %expected_final_balance, align 8 + call void @"$CheckBalance_2277"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_2868", [20 x i8]* %"$CheckBalance__sender_2869", %Uint128 %"$expected_final_balance_2870") + ret void +} + +define void @Test_Send_5(i8* %0) { +entry: + %"$_amount_2872" = getelementptr i8, i8* %0, i32 0 + %"$_amount_2873" = bitcast i8* %"$_amount_2872" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_2873", align 8 + %"$_origin_2874" = getelementptr i8, i8* %0, i32 16 + %"$_origin_2875" = bitcast i8* %"$_origin_2874" to [20 x i8]* + %"$_sender_2876" = getelementptr i8, i8* %0, i32 36 + %"$_sender_2877" = bitcast i8* %"$_sender_2876" to [20 x i8]* + call void @"$Test_Send_5_2692"(%Uint128 %_amount, [20 x i8]* %"$_origin_2875", [20 x i8]* %"$_sender_2877") + ret void +} + +define internal void @"$Test_Send_6_2878"(%Uint128 %_amount, [20 x i8]* %"$_origin_2879", [20 x i8]* %"$_sender_2880") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_2879", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_2880", align 1 + %"$gasrem_2881" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2882" = icmp ugt i64 1, %"$gasrem_2881" + br i1 %"$gascmp_2882", label %"$out_of_gas_2883", label %"$have_gas_2884" + +"$out_of_gas_2883": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_2884" + +"$have_gas_2884": ; preds = %"$out_of_gas_2883", %entry + %"$consume_2885" = sub i64 %"$gasrem_2881", 1 + store i64 %"$consume_2885", i64* @_gasrem, align 8 + %"$AssertReset__origin_2886" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_2886", align 1 + %"$AssertReset__sender_2887" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_2887", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_2886", [20 x i8]* %"$AssertReset__sender_2887") + %amount = alloca %Uint128, align 8 + %"$execptr_load_2889" = load i8*, i8** @_execptr, align 8 + %"$amount_call_2890" = call i8* @_fetch_field(i8* %"$execptr_load_2889", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_2888", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$amount_2891" = bitcast i8* %"$amount_call_2890" to %Uint128* + %"$amount_2892" = load %Uint128, %Uint128* %"$amount_2891", align 8 + store %Uint128 %"$amount_2892", %Uint128* %amount, align 8 + %"$_literal_cost_amount_2893" = alloca %Uint128, align 8 + %"$amount_2894" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_2894", %Uint128* %"$_literal_cost_amount_2893", align 8 + %"$$_literal_cost_amount_2893_2895" = bitcast %Uint128* %"$_literal_cost_amount_2893" to i8* + %"$_literal_cost_call_2896" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_2893_2895") + %"$gasadd_2897" = add i64 %"$_literal_cost_call_2896", 0 + %"$gasrem_2898" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2899" = icmp ugt i64 %"$gasadd_2897", %"$gasrem_2898" + br i1 %"$gascmp_2899", label %"$out_of_gas_2900", label %"$have_gas_2901" + +"$out_of_gas_2900": ; preds = %"$have_gas_2884" + call void @_out_of_gas() + br label %"$have_gas_2901" + +"$have_gas_2901": ; preds = %"$out_of_gas_2900", %"$have_gas_2884" + %"$consume_2902" = sub i64 %"$gasrem_2898", %"$gasadd_2897" + store i64 %"$consume_2902", i64* @_gasrem, align 8 + %bal = alloca %Uint128, align 8 + %"$execptr_load_2904" = load i8*, i8** @_execptr, align 8 + %"$bal_call_2905" = call i8* @_fetch_field(i8* %"$execptr_load_2904", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_2903", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$bal_2906" = bitcast i8* %"$bal_call_2905" to %Uint128* + %"$bal_2907" = load %Uint128, %Uint128* %"$bal_2906", align 8 + store %Uint128 %"$bal_2907", %Uint128* %bal, align 8 + %"$_literal_cost_bal_2908" = alloca %Uint128, align 8 + %"$bal_2909" = load %Uint128, %Uint128* %bal, align 8 + store %Uint128 %"$bal_2909", %Uint128* %"$_literal_cost_bal_2908", align 8 + %"$$_literal_cost_bal_2908_2910" = bitcast %Uint128* %"$_literal_cost_bal_2908" to i8* + %"$_literal_cost_call_2911" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_bal_2908_2910") + %"$gasadd_2912" = add i64 %"$_literal_cost_call_2911", 0 + %"$gasrem_2913" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2914" = icmp ugt i64 %"$gasadd_2912", %"$gasrem_2913" + br i1 %"$gascmp_2914", label %"$out_of_gas_2915", label %"$have_gas_2916" + +"$out_of_gas_2915": ; preds = %"$have_gas_2901" + call void @_out_of_gas() + br label %"$have_gas_2916" + +"$have_gas_2916": ; preds = %"$out_of_gas_2915", %"$have_gas_2901" + %"$consume_2917" = sub i64 %"$gasrem_2913", %"$gasadd_2912" + store i64 %"$consume_2917", i64* @_gasrem, align 8 + %"$gasrem_2918" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2919" = icmp ugt i64 1, %"$gasrem_2918" + br i1 %"$gascmp_2919", label %"$out_of_gas_2920", label %"$have_gas_2921" + +"$out_of_gas_2920": ; preds = %"$have_gas_2916" + call void @_out_of_gas() + br label %"$have_gas_2921" + +"$have_gas_2921": ; preds = %"$out_of_gas_2920", %"$have_gas_2916" + %"$consume_2922" = sub i64 %"$gasrem_2918", 1 + store i64 %"$consume_2922", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_2923" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2924" = icmp ugt i64 1, %"$gasrem_2923" + br i1 %"$gascmp_2924", label %"$out_of_gas_2925", label %"$have_gas_2926" + +"$out_of_gas_2925": ; preds = %"$have_gas_2921" + call void @_out_of_gas() + br label %"$have_gas_2926" + +"$have_gas_2926": ; preds = %"$out_of_gas_2925", %"$have_gas_2921" + %"$consume_2927" = sub i64 %"$gasrem_2923", 1 + store i64 %"$consume_2927", i64* @_gasrem, align 8 + %"$msgobj_2928_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2928_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2928_salloc_load", i64 125) + %"$msgobj_2928_salloc" = bitcast i8* %"$msgobj_2928_salloc_salloc" to [125 x i8]* + %"$msgobj_2928" = bitcast [125 x i8]* %"$msgobj_2928_salloc" to i8* + store i8 3, i8* %"$msgobj_2928", align 1 + %"$msgobj_fname_2930" = getelementptr i8, i8* %"$msgobj_2928", i32 1 + %"$msgobj_fname_2931" = bitcast i8* %"$msgobj_fname_2930" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2929", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_2931", align 8 + %"$msgobj_td_2932" = getelementptr i8, i8* %"$msgobj_2928", i32 17 + %"$msgobj_td_2933" = bitcast i8* %"$msgobj_td_2932" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_2933", align 8 + %"$support_contract_2934" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_2935" = getelementptr i8, i8* %"$msgobj_2928", i32 25 + %"$msgobj_v_2936" = bitcast i8* %"$msgobj_v_2935" to [20 x i8]* + store [20 x i8] %"$support_contract_2934", [20 x i8]* %"$msgobj_v_2936", align 1 + %"$msgobj_fname_2938" = getelementptr i8, i8* %"$msgobj_2928", i32 45 + %"$msgobj_fname_2939" = bitcast i8* %"$msgobj_fname_2938" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_2937", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_2939", align 8 + %"$msgobj_td_2940" = getelementptr i8, i8* %"$msgobj_2928", i32 61 + %"$msgobj_td_2941" = bitcast i8* %"$msgobj_td_2940" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_2941", align 8 + %"$msgobj_v_2943" = getelementptr i8, i8* %"$msgobj_2928", i32 69 + %"$msgobj_v_2944" = bitcast i8* %"$msgobj_v_2943" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_2942", i32 0, i32 0), i32 6 }, %String* %"$msgobj_v_2944", align 8 + %"$msgobj_fname_2946" = getelementptr i8, i8* %"$msgobj_2928", i32 85 + %"$msgobj_fname_2947" = bitcast i8* %"$msgobj_fname_2946" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_2945", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_2947", align 8 + %"$msgobj_td_2948" = getelementptr i8, i8* %"$msgobj_2928", i32 101 + %"$msgobj_td_2949" = bitcast i8* %"$msgobj_td_2948" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_2949", align 8 + %"$amount_2950" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_2951" = getelementptr i8, i8* %"$msgobj_2928", i32 109 + %"$msgobj_v_2952" = bitcast i8* %"$msgobj_v_2951" to %Uint128* + store %Uint128 %"$amount_2950", %Uint128* %"$msgobj_v_2952", align 8 + store i8* %"$msgobj_2928", i8** %msg1, align 8 + %"$gasrem_2954" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2955" = icmp ugt i64 1, %"$gasrem_2954" + br i1 %"$gascmp_2955", label %"$out_of_gas_2956", label %"$have_gas_2957" + +"$out_of_gas_2956": ; preds = %"$have_gas_2926" + call void @_out_of_gas() + br label %"$have_gas_2957" + +"$have_gas_2957": ; preds = %"$out_of_gas_2956", %"$have_gas_2926" + %"$consume_2958" = sub i64 %"$gasrem_2954", 1 + store i64 %"$consume_2958", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_2959" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2960" = icmp ugt i64 1, %"$gasrem_2959" + br i1 %"$gascmp_2960", label %"$out_of_gas_2961", label %"$have_gas_2962" + +"$out_of_gas_2961": ; preds = %"$have_gas_2957" + call void @_out_of_gas() + br label %"$have_gas_2962" + +"$have_gas_2962": ; preds = %"$out_of_gas_2961", %"$have_gas_2957" + %"$consume_2963" = sub i64 %"$gasrem_2959", 1 + store i64 %"$consume_2963", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_33" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_2964" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_2965" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2964", 0 + %"$accounting_tests.one_msg_envptr_2966" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_2964", 1 + %"$msg1_2967" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_2968" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_2965"(i8* %"$accounting_tests.one_msg_envptr_2966", i8* %"$msg1_2967") + store %TName_List_Message* %"$accounting_tests.one_msg_call_2968", %TName_List_Message** %"$accounting_tests.one_msg_33", align 8 + %"$$accounting_tests.one_msg_33_2969" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_33", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_33_2969", %TName_List_Message** %msgs1, align 8 + %"$msgs1_2970" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_2970_2971" = bitcast %TName_List_Message* %"$msgs1_2970" to i8* + %"$_literal_cost_call_2972" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_2970_2971") + %"$gasrem_2973" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2974" = icmp ugt i64 %"$_literal_cost_call_2972", %"$gasrem_2973" + br i1 %"$gascmp_2974", label %"$out_of_gas_2975", label %"$have_gas_2976" + +"$out_of_gas_2975": ; preds = %"$have_gas_2962" + call void @_out_of_gas() + br label %"$have_gas_2976" + +"$have_gas_2976": ; preds = %"$out_of_gas_2975", %"$have_gas_2962" + %"$consume_2977" = sub i64 %"$gasrem_2973", %"$_literal_cost_call_2972" + store i64 %"$consume_2977", i64* @_gasrem, align 8 + %"$execptr_load_2978" = load i8*, i8** @_execptr, align 8 + %"$msgs1_2979" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_2978", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_2979") + %"$gasrem_2980" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2981" = icmp ugt i64 1, %"$gasrem_2980" + br i1 %"$gascmp_2981", label %"$out_of_gas_2982", label %"$have_gas_2983" + +"$out_of_gas_2982": ; preds = %"$have_gas_2976" + call void @_out_of_gas() + br label %"$have_gas_2983" + +"$have_gas_2983": ; preds = %"$out_of_gas_2982", %"$have_gas_2976" + %"$consume_2984" = sub i64 %"$gasrem_2980", 1 + store i64 %"$consume_2984", i64* @_gasrem, align 8 + %expected_balance = alloca %Uint128, align 8 + %"$bal_2985" = load %Uint128, %Uint128* %bal, align 8 + %"$amount_2986" = load %Uint128, %Uint128* %amount, align 8 + %"$sub_call_2987" = call %Uint128 @_sub_Uint128(%Uint128 %"$bal_2985", %Uint128 %"$amount_2986") + store %Uint128 %"$sub_call_2987", %Uint128* %expected_balance, align 8 + %"$gasrem_2988" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2989" = icmp ugt i64 1, %"$gasrem_2988" + br i1 %"$gascmp_2989", label %"$out_of_gas_2990", label %"$have_gas_2991" + +"$out_of_gas_2990": ; preds = %"$have_gas_2983" + call void @_out_of_gas() + br label %"$have_gas_2991" + +"$have_gas_2991": ; preds = %"$out_of_gas_2990", %"$have_gas_2983" + %"$consume_2992" = sub i64 %"$gasrem_2988", 1 + store i64 %"$consume_2992", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_2993" = load i64, i64* @_gasrem, align 8 + %"$gascmp_2994" = icmp ugt i64 1, %"$gasrem_2993" + br i1 %"$gascmp_2994", label %"$out_of_gas_2995", label %"$have_gas_2996" + +"$out_of_gas_2995": ; preds = %"$have_gas_2991" + call void @_out_of_gas() + br label %"$have_gas_2996" + +"$have_gas_2996": ; preds = %"$out_of_gas_2995", %"$have_gas_2991" + %"$consume_2997" = sub i64 %"$gasrem_2993", 1 + store i64 %"$consume_2997", i64* @_gasrem, align 8 + %"$msgobj_2998_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_2998_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_2998_salloc_load", i64 165) + %"$msgobj_2998_salloc" = bitcast i8* %"$msgobj_2998_salloc_salloc" to [165 x i8]* + %"$msgobj_2998" = bitcast [165 x i8]* %"$msgobj_2998_salloc" to i8* + store i8 4, i8* %"$msgobj_2998", align 1 + %"$msgobj_fname_3000" = getelementptr i8, i8* %"$msgobj_2998", i32 1 + %"$msgobj_fname_3001" = bitcast i8* %"$msgobj_fname_3000" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_2999", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3001", align 8 + %"$msgobj_td_3002" = getelementptr i8, i8* %"$msgobj_2998", i32 17 + %"$msgobj_td_3003" = bitcast i8* %"$msgobj_td_3002" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3003", align 8 + %"$_this_address_3004" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_3005" = getelementptr i8, i8* %"$msgobj_2998", i32 25 + %"$msgobj_v_3006" = bitcast i8* %"$msgobj_v_3005" to [20 x i8]* + store [20 x i8] %"$_this_address_3004", [20 x i8]* %"$msgobj_v_3006", align 1 + %"$msgobj_fname_3008" = getelementptr i8, i8* %"$msgobj_2998", i32 45 + %"$msgobj_fname_3009" = bitcast i8* %"$msgobj_fname_3008" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3007", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3009", align 8 + %"$msgobj_td_3010" = getelementptr i8, i8* %"$msgobj_2998", i32 61 + %"$msgobj_td_3011" = bitcast i8* %"$msgobj_td_3010" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3011", align 8 + %"$msgobj_v_3013" = getelementptr i8, i8* %"$msgobj_2998", i32 69 + %"$msgobj_v_3014" = bitcast i8* %"$msgobj_v_3013" to %String* + store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_3012", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_3014", align 8 + %"$msgobj_fname_3016" = getelementptr i8, i8* %"$msgobj_2998", i32 85 + %"$msgobj_fname_3017" = bitcast i8* %"$msgobj_fname_3016" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3015", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3017", align 8 + %"$msgobj_td_3018" = getelementptr i8, i8* %"$msgobj_2998", i32 101 + %"$msgobj_td_3019" = bitcast i8* %"$msgobj_td_3018" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3019", align 8 + %"$msgobj_v_3020" = getelementptr i8, i8* %"$msgobj_2998", i32 109 + %"$msgobj_v_3021" = bitcast i8* %"$msgobj_v_3020" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_3021", align 8 + %"$msgobj_fname_3023" = getelementptr i8, i8* %"$msgobj_2998", i32 125 + %"$msgobj_fname_3024" = bitcast i8* %"$msgobj_fname_3023" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_3022", i32 0, i32 0), i32 16 }, %String* %"$msgobj_fname_3024", align 8 + %"$msgobj_td_3025" = getelementptr i8, i8* %"$msgobj_2998", i32 141 + %"$msgobj_td_3026" = bitcast i8* %"$msgobj_td_3025" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3026", align 8 + %"$expected_balance_3027" = load %Uint128, %Uint128* %expected_balance, align 8 + %"$msgobj_v_3028" = getelementptr i8, i8* %"$msgobj_2998", i32 149 + %"$msgobj_v_3029" = bitcast i8* %"$msgobj_v_3028" to %Uint128* + store %Uint128 %"$expected_balance_3027", %Uint128* %"$msgobj_v_3029", align 8 + store i8* %"$msgobj_2998", i8** %msg2, align 8 + %"$gasrem_3031" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3032" = icmp ugt i64 1, %"$gasrem_3031" + br i1 %"$gascmp_3032", label %"$out_of_gas_3033", label %"$have_gas_3034" + +"$out_of_gas_3033": ; preds = %"$have_gas_2996" + call void @_out_of_gas() + br label %"$have_gas_3034" + +"$have_gas_3034": ; preds = %"$out_of_gas_3033", %"$have_gas_2996" + %"$consume_3035" = sub i64 %"$gasrem_3031", 1 + store i64 %"$consume_3035", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_3036" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3037" = icmp ugt i64 1, %"$gasrem_3036" + br i1 %"$gascmp_3037", label %"$out_of_gas_3038", label %"$have_gas_3039" + +"$out_of_gas_3038": ; preds = %"$have_gas_3034" + call void @_out_of_gas() + br label %"$have_gas_3039" + +"$have_gas_3039": ; preds = %"$out_of_gas_3038", %"$have_gas_3034" + %"$consume_3040" = sub i64 %"$gasrem_3036", 1 + store i64 %"$consume_3040", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_32" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3041" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3042" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3041", 0 + %"$accounting_tests.one_msg_envptr_3043" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3041", 1 + %"$msg2_3044" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_3045" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3042"(i8* %"$accounting_tests.one_msg_envptr_3043", i8* %"$msg2_3044") + store %TName_List_Message* %"$accounting_tests.one_msg_call_3045", %TName_List_Message** %"$accounting_tests.one_msg_32", align 8 + %"$$accounting_tests.one_msg_32_3046" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_32", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_32_3046", %TName_List_Message** %msgs2, align 8 + %"$msgs2_3047" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_3047_3048" = bitcast %TName_List_Message* %"$msgs2_3047" to i8* + %"$_literal_cost_call_3049" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_3047_3048") + %"$gasrem_3050" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3051" = icmp ugt i64 %"$_literal_cost_call_3049", %"$gasrem_3050" + br i1 %"$gascmp_3051", label %"$out_of_gas_3052", label %"$have_gas_3053" + +"$out_of_gas_3052": ; preds = %"$have_gas_3039" + call void @_out_of_gas() + br label %"$have_gas_3053" + +"$have_gas_3053": ; preds = %"$out_of_gas_3052", %"$have_gas_3039" + %"$consume_3054" = sub i64 %"$gasrem_3050", %"$_literal_cost_call_3049" + store i64 %"$consume_3054", i64* @_gasrem, align 8 + %"$execptr_load_3055" = load i8*, i8** @_execptr, align 8 + %"$msgs2_3056" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_3055", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_3056") + ret void +} + +define void @Test_Send_6(i8* %0) { +entry: + %"$_amount_3058" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3059" = bitcast i8* %"$_amount_3058" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3059", align 8 + %"$_origin_3060" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3061" = bitcast i8* %"$_origin_3060" to [20 x i8]* + %"$_sender_3062" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3063" = bitcast i8* %"$_sender_3062" to [20 x i8]* + call void @"$Test_Send_6_2878"(%Uint128 %_amount, [20 x i8]* %"$_origin_3061", [20 x i8]* %"$_sender_3063") + ret void +} + +define internal void @"$Test_Send_7_3064"(%Uint128 %_amount, [20 x i8]* %"$_origin_3065", [20 x i8]* %"$_sender_3066") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3065", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3066", align 1 + %"$gasrem_3067" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3068" = icmp ugt i64 1, %"$gasrem_3067" + br i1 %"$gascmp_3068", label %"$out_of_gas_3069", label %"$have_gas_3070" + +"$out_of_gas_3069": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3070" + +"$have_gas_3070": ; preds = %"$out_of_gas_3069", %entry + %"$consume_3071" = sub i64 %"$gasrem_3067", 1 + store i64 %"$consume_3071", i64* @_gasrem, align 8 + %"$AssertReset__origin_3072" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_3072", align 1 + %"$AssertReset__sender_3073" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_3073", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_3072", [20 x i8]* %"$AssertReset__sender_3073") + %amount = alloca %Uint128, align 8 + %"$execptr_load_3075" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3076" = call i8* @_fetch_field(i8* %"$execptr_load_3075", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3074", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$amount_3077" = bitcast i8* %"$amount_call_3076" to %Uint128* + %"$amount_3078" = load %Uint128, %Uint128* %"$amount_3077", align 8 + store %Uint128 %"$amount_3078", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3079" = alloca %Uint128, align 8 + %"$amount_3080" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3080", %Uint128* %"$_literal_cost_amount_3079", align 8 + %"$$_literal_cost_amount_3079_3081" = bitcast %Uint128* %"$_literal_cost_amount_3079" to i8* + %"$_literal_cost_call_3082" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3079_3081") + %"$gasadd_3083" = add i64 %"$_literal_cost_call_3082", 0 + %"$gasrem_3084" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3085" = icmp ugt i64 %"$gasadd_3083", %"$gasrem_3084" + br i1 %"$gascmp_3085", label %"$out_of_gas_3086", label %"$have_gas_3087" + +"$out_of_gas_3086": ; preds = %"$have_gas_3070" + call void @_out_of_gas() + br label %"$have_gas_3087" + +"$have_gas_3087": ; preds = %"$out_of_gas_3086", %"$have_gas_3070" + %"$consume_3088" = sub i64 %"$gasrem_3084", %"$gasadd_3083" + store i64 %"$consume_3088", i64* @_gasrem, align 8 + %bal = alloca %Uint128, align 8 + %"$execptr_load_3090" = load i8*, i8** @_execptr, align 8 + %"$bal_call_3091" = call i8* @_fetch_field(i8* %"$execptr_load_3090", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_3089", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$bal_3092" = bitcast i8* %"$bal_call_3091" to %Uint128* + %"$bal_3093" = load %Uint128, %Uint128* %"$bal_3092", align 8 + store %Uint128 %"$bal_3093", %Uint128* %bal, align 8 + %"$_literal_cost_bal_3094" = alloca %Uint128, align 8 + %"$bal_3095" = load %Uint128, %Uint128* %bal, align 8 + store %Uint128 %"$bal_3095", %Uint128* %"$_literal_cost_bal_3094", align 8 + %"$$_literal_cost_bal_3094_3096" = bitcast %Uint128* %"$_literal_cost_bal_3094" to i8* + %"$_literal_cost_call_3097" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_bal_3094_3096") + %"$gasadd_3098" = add i64 %"$_literal_cost_call_3097", 0 + %"$gasrem_3099" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3100" = icmp ugt i64 %"$gasadd_3098", %"$gasrem_3099" + br i1 %"$gascmp_3100", label %"$out_of_gas_3101", label %"$have_gas_3102" + +"$out_of_gas_3101": ; preds = %"$have_gas_3087" + call void @_out_of_gas() + br label %"$have_gas_3102" + +"$have_gas_3102": ; preds = %"$out_of_gas_3101", %"$have_gas_3087" + %"$consume_3103" = sub i64 %"$gasrem_3099", %"$gasadd_3098" + store i64 %"$consume_3103", i64* @_gasrem, align 8 + %"$gasrem_3104" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3105" = icmp ugt i64 1, %"$gasrem_3104" + br i1 %"$gascmp_3105", label %"$out_of_gas_3106", label %"$have_gas_3107" + +"$out_of_gas_3106": ; preds = %"$have_gas_3102" + call void @_out_of_gas() + br label %"$have_gas_3107" + +"$have_gas_3107": ; preds = %"$out_of_gas_3106", %"$have_gas_3102" + %"$consume_3108" = sub i64 %"$gasrem_3104", 1 + store i64 %"$consume_3108", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_3109" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3110" = icmp ugt i64 1, %"$gasrem_3109" + br i1 %"$gascmp_3110", label %"$out_of_gas_3111", label %"$have_gas_3112" + +"$out_of_gas_3111": ; preds = %"$have_gas_3107" + call void @_out_of_gas() + br label %"$have_gas_3112" + +"$have_gas_3112": ; preds = %"$out_of_gas_3111", %"$have_gas_3107" + %"$consume_3113" = sub i64 %"$gasrem_3109", 1 + store i64 %"$consume_3113", i64* @_gasrem, align 8 + %"$msgobj_3114_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3114_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3114_salloc_load", i64 125) + %"$msgobj_3114_salloc" = bitcast i8* %"$msgobj_3114_salloc_salloc" to [125 x i8]* + %"$msgobj_3114" = bitcast [125 x i8]* %"$msgobj_3114_salloc" to i8* + store i8 3, i8* %"$msgobj_3114", align 1 + %"$msgobj_fname_3116" = getelementptr i8, i8* %"$msgobj_3114", i32 1 + %"$msgobj_fname_3117" = bitcast i8* %"$msgobj_fname_3116" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3115", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3117", align 8 + %"$msgobj_td_3118" = getelementptr i8, i8* %"$msgobj_3114", i32 17 + %"$msgobj_td_3119" = bitcast i8* %"$msgobj_td_3118" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3119", align 8 + %"$support_contract_3120" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_3121" = getelementptr i8, i8* %"$msgobj_3114", i32 25 + %"$msgobj_v_3122" = bitcast i8* %"$msgobj_v_3121" to [20 x i8]* + store [20 x i8] %"$support_contract_3120", [20 x i8]* %"$msgobj_v_3122", align 1 + %"$msgobj_fname_3124" = getelementptr i8, i8* %"$msgobj_3114", i32 45 + %"$msgobj_fname_3125" = bitcast i8* %"$msgobj_fname_3124" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3123", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3125", align 8 + %"$msgobj_td_3126" = getelementptr i8, i8* %"$msgobj_3114", i32 61 + %"$msgobj_td_3127" = bitcast i8* %"$msgobj_td_3126" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3127", align 8 + %"$msgobj_v_3129" = getelementptr i8, i8* %"$msgobj_3114", i32 69 + %"$msgobj_v_3130" = bitcast i8* %"$msgobj_v_3129" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_3128", i32 0, i32 0), i32 9 }, %String* %"$msgobj_v_3130", align 8 + %"$msgobj_fname_3132" = getelementptr i8, i8* %"$msgobj_3114", i32 85 + %"$msgobj_fname_3133" = bitcast i8* %"$msgobj_fname_3132" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3131", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3133", align 8 + %"$msgobj_td_3134" = getelementptr i8, i8* %"$msgobj_3114", i32 101 + %"$msgobj_td_3135" = bitcast i8* %"$msgobj_td_3134" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3135", align 8 + %"$amount_3136" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_3137" = getelementptr i8, i8* %"$msgobj_3114", i32 109 + %"$msgobj_v_3138" = bitcast i8* %"$msgobj_v_3137" to %Uint128* + store %Uint128 %"$amount_3136", %Uint128* %"$msgobj_v_3138", align 8 + store i8* %"$msgobj_3114", i8** %msg1, align 8 + %"$gasrem_3140" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3141" = icmp ugt i64 1, %"$gasrem_3140" + br i1 %"$gascmp_3141", label %"$out_of_gas_3142", label %"$have_gas_3143" + +"$out_of_gas_3142": ; preds = %"$have_gas_3112" + call void @_out_of_gas() + br label %"$have_gas_3143" + +"$have_gas_3143": ; preds = %"$out_of_gas_3142", %"$have_gas_3112" + %"$consume_3144" = sub i64 %"$gasrem_3140", 1 + store i64 %"$consume_3144", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_3145" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3146" = icmp ugt i64 1, %"$gasrem_3145" + br i1 %"$gascmp_3146", label %"$out_of_gas_3147", label %"$have_gas_3148" + +"$out_of_gas_3147": ; preds = %"$have_gas_3143" + call void @_out_of_gas() + br label %"$have_gas_3148" + +"$have_gas_3148": ; preds = %"$out_of_gas_3147", %"$have_gas_3143" + %"$consume_3149" = sub i64 %"$gasrem_3145", 1 + store i64 %"$consume_3149", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_35" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3150" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3151" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3150", 0 + %"$accounting_tests.one_msg_envptr_3152" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3150", 1 + %"$msg1_3153" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_3154" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3151"(i8* %"$accounting_tests.one_msg_envptr_3152", i8* %"$msg1_3153") + store %TName_List_Message* %"$accounting_tests.one_msg_call_3154", %TName_List_Message** %"$accounting_tests.one_msg_35", align 8 + %"$$accounting_tests.one_msg_35_3155" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_35", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_35_3155", %TName_List_Message** %msgs1, align 8 + %"$msgs1_3156" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_3156_3157" = bitcast %TName_List_Message* %"$msgs1_3156" to i8* + %"$_literal_cost_call_3158" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_3156_3157") + %"$gasrem_3159" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3160" = icmp ugt i64 %"$_literal_cost_call_3158", %"$gasrem_3159" + br i1 %"$gascmp_3160", label %"$out_of_gas_3161", label %"$have_gas_3162" + +"$out_of_gas_3161": ; preds = %"$have_gas_3148" + call void @_out_of_gas() + br label %"$have_gas_3162" + +"$have_gas_3162": ; preds = %"$out_of_gas_3161", %"$have_gas_3148" + %"$consume_3163" = sub i64 %"$gasrem_3159", %"$_literal_cost_call_3158" + store i64 %"$consume_3163", i64* @_gasrem, align 8 + %"$execptr_load_3164" = load i8*, i8** @_execptr, align 8 + %"$msgs1_3165" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_3164", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_3165") + %"$gasrem_3166" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3167" = icmp ugt i64 1, %"$gasrem_3166" + br i1 %"$gascmp_3167", label %"$out_of_gas_3168", label %"$have_gas_3169" + +"$out_of_gas_3168": ; preds = %"$have_gas_3162" + call void @_out_of_gas() + br label %"$have_gas_3169" + +"$have_gas_3169": ; preds = %"$out_of_gas_3168", %"$have_gas_3162" + %"$consume_3170" = sub i64 %"$gasrem_3166", 1 + store i64 %"$consume_3170", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_3171" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3172" = icmp ugt i64 1, %"$gasrem_3171" + br i1 %"$gascmp_3172", label %"$out_of_gas_3173", label %"$have_gas_3174" + +"$out_of_gas_3173": ; preds = %"$have_gas_3169" + call void @_out_of_gas() + br label %"$have_gas_3174" + +"$have_gas_3174": ; preds = %"$out_of_gas_3173", %"$have_gas_3169" + %"$consume_3175" = sub i64 %"$gasrem_3171", 1 + store i64 %"$consume_3175", i64* @_gasrem, align 8 + %"$msgobj_3176_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3176_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3176_salloc_load", i64 165) + %"$msgobj_3176_salloc" = bitcast i8* %"$msgobj_3176_salloc_salloc" to [165 x i8]* + %"$msgobj_3176" = bitcast [165 x i8]* %"$msgobj_3176_salloc" to i8* + store i8 4, i8* %"$msgobj_3176", align 1 + %"$msgobj_fname_3178" = getelementptr i8, i8* %"$msgobj_3176", i32 1 + %"$msgobj_fname_3179" = bitcast i8* %"$msgobj_fname_3178" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3177", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3179", align 8 + %"$msgobj_td_3180" = getelementptr i8, i8* %"$msgobj_3176", i32 17 + %"$msgobj_td_3181" = bitcast i8* %"$msgobj_td_3180" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3181", align 8 + %"$_this_address_3182" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_3183" = getelementptr i8, i8* %"$msgobj_3176", i32 25 + %"$msgobj_v_3184" = bitcast i8* %"$msgobj_v_3183" to [20 x i8]* + store [20 x i8] %"$_this_address_3182", [20 x i8]* %"$msgobj_v_3184", align 1 + %"$msgobj_fname_3186" = getelementptr i8, i8* %"$msgobj_3176", i32 45 + %"$msgobj_fname_3187" = bitcast i8* %"$msgobj_fname_3186" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3185", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3187", align 8 + %"$msgobj_td_3188" = getelementptr i8, i8* %"$msgobj_3176", i32 61 + %"$msgobj_td_3189" = bitcast i8* %"$msgobj_td_3188" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3189", align 8 + %"$msgobj_v_3191" = getelementptr i8, i8* %"$msgobj_3176", i32 69 + %"$msgobj_v_3192" = bitcast i8* %"$msgobj_v_3191" to %String* + store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_3190", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_3192", align 8 + %"$msgobj_fname_3194" = getelementptr i8, i8* %"$msgobj_3176", i32 85 + %"$msgobj_fname_3195" = bitcast i8* %"$msgobj_fname_3194" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3193", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3195", align 8 + %"$msgobj_td_3196" = getelementptr i8, i8* %"$msgobj_3176", i32 101 + %"$msgobj_td_3197" = bitcast i8* %"$msgobj_td_3196" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3197", align 8 + %"$msgobj_v_3198" = getelementptr i8, i8* %"$msgobj_3176", i32 109 + %"$msgobj_v_3199" = bitcast i8* %"$msgobj_v_3198" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_3199", align 8 + %"$msgobj_fname_3201" = getelementptr i8, i8* %"$msgobj_3176", i32 125 + %"$msgobj_fname_3202" = bitcast i8* %"$msgobj_fname_3201" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_3200", i32 0, i32 0), i32 16 }, %String* %"$msgobj_fname_3202", align 8 + %"$msgobj_td_3203" = getelementptr i8, i8* %"$msgobj_3176", i32 141 + %"$msgobj_td_3204" = bitcast i8* %"$msgobj_td_3203" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3204", align 8 + %"$bal_3205" = load %Uint128, %Uint128* %bal, align 8 + %"$msgobj_v_3206" = getelementptr i8, i8* %"$msgobj_3176", i32 149 + %"$msgobj_v_3207" = bitcast i8* %"$msgobj_v_3206" to %Uint128* + store %Uint128 %"$bal_3205", %Uint128* %"$msgobj_v_3207", align 8 + store i8* %"$msgobj_3176", i8** %msg2, align 8 + %"$gasrem_3209" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3210" = icmp ugt i64 1, %"$gasrem_3209" + br i1 %"$gascmp_3210", label %"$out_of_gas_3211", label %"$have_gas_3212" + +"$out_of_gas_3211": ; preds = %"$have_gas_3174" + call void @_out_of_gas() + br label %"$have_gas_3212" + +"$have_gas_3212": ; preds = %"$out_of_gas_3211", %"$have_gas_3174" + %"$consume_3213" = sub i64 %"$gasrem_3209", 1 + store i64 %"$consume_3213", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_3214" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3215" = icmp ugt i64 1, %"$gasrem_3214" + br i1 %"$gascmp_3215", label %"$out_of_gas_3216", label %"$have_gas_3217" + +"$out_of_gas_3216": ; preds = %"$have_gas_3212" + call void @_out_of_gas() + br label %"$have_gas_3217" + +"$have_gas_3217": ; preds = %"$out_of_gas_3216", %"$have_gas_3212" + %"$consume_3218" = sub i64 %"$gasrem_3214", 1 + store i64 %"$consume_3218", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_34" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3219" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3220" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3219", 0 + %"$accounting_tests.one_msg_envptr_3221" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3219", 1 + %"$msg2_3222" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_3223" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3220"(i8* %"$accounting_tests.one_msg_envptr_3221", i8* %"$msg2_3222") + store %TName_List_Message* %"$accounting_tests.one_msg_call_3223", %TName_List_Message** %"$accounting_tests.one_msg_34", align 8 + %"$$accounting_tests.one_msg_34_3224" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_34", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_34_3224", %TName_List_Message** %msgs2, align 8 + %"$msgs2_3225" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_3225_3226" = bitcast %TName_List_Message* %"$msgs2_3225" to i8* + %"$_literal_cost_call_3227" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_3225_3226") + %"$gasrem_3228" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3229" = icmp ugt i64 %"$_literal_cost_call_3227", %"$gasrem_3228" + br i1 %"$gascmp_3229", label %"$out_of_gas_3230", label %"$have_gas_3231" + +"$out_of_gas_3230": ; preds = %"$have_gas_3217" + call void @_out_of_gas() + br label %"$have_gas_3231" + +"$have_gas_3231": ; preds = %"$out_of_gas_3230", %"$have_gas_3217" + %"$consume_3232" = sub i64 %"$gasrem_3228", %"$_literal_cost_call_3227" + store i64 %"$consume_3232", i64* @_gasrem, align 8 + %"$execptr_load_3233" = load i8*, i8** @_execptr, align 8 + %"$msgs2_3234" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_3233", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_3234") + ret void +} + +define void @Test_Send_7(i8* %0) { +entry: + %"$_amount_3236" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3237" = bitcast i8* %"$_amount_3236" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3237", align 8 + %"$_origin_3238" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3239" = bitcast i8* %"$_origin_3238" to [20 x i8]* + %"$_sender_3240" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3241" = bitcast i8* %"$_sender_3240" to [20 x i8]* + call void @"$Test_Send_7_3064"(%Uint128 %_amount, [20 x i8]* %"$_origin_3239", [20 x i8]* %"$_sender_3241") + ret void +} + +define internal void @"$Test_Send_8_3242"(%Uint128 %_amount, [20 x i8]* %"$_origin_3243", [20 x i8]* %"$_sender_3244") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3243", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3244", align 1 + %"$gasrem_3245" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3246" = icmp ugt i64 1, %"$gasrem_3245" + br i1 %"$gascmp_3246", label %"$out_of_gas_3247", label %"$have_gas_3248" + +"$out_of_gas_3247": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3248" + +"$have_gas_3248": ; preds = %"$out_of_gas_3247", %entry + %"$consume_3249" = sub i64 %"$gasrem_3245", 1 + store i64 %"$consume_3249", i64* @_gasrem, align 8 + %"$AssertReset__origin_3250" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_3250", align 1 + %"$AssertReset__sender_3251" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_3251", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_3250", [20 x i8]* %"$AssertReset__sender_3251") + %amount = alloca %Uint128, align 8 + %"$execptr_load_3253" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3254" = call i8* @_fetch_field(i8* %"$execptr_load_3253", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3252", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$amount_3255" = bitcast i8* %"$amount_call_3254" to %Uint128* + %"$amount_3256" = load %Uint128, %Uint128* %"$amount_3255", align 8 + store %Uint128 %"$amount_3256", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3257" = alloca %Uint128, align 8 + %"$amount_3258" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3258", %Uint128* %"$_literal_cost_amount_3257", align 8 + %"$$_literal_cost_amount_3257_3259" = bitcast %Uint128* %"$_literal_cost_amount_3257" to i8* + %"$_literal_cost_call_3260" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3257_3259") + %"$gasadd_3261" = add i64 %"$_literal_cost_call_3260", 0 + %"$gasrem_3262" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3263" = icmp ugt i64 %"$gasadd_3261", %"$gasrem_3262" + br i1 %"$gascmp_3263", label %"$out_of_gas_3264", label %"$have_gas_3265" + +"$out_of_gas_3264": ; preds = %"$have_gas_3248" + call void @_out_of_gas() + br label %"$have_gas_3265" + +"$have_gas_3265": ; preds = %"$out_of_gas_3264", %"$have_gas_3248" + %"$consume_3266" = sub i64 %"$gasrem_3262", %"$gasadd_3261" + store i64 %"$consume_3266", i64* @_gasrem, align 8 + %"$gasrem_3267" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3268" = icmp ugt i64 1, %"$gasrem_3267" + br i1 %"$gascmp_3268", label %"$out_of_gas_3269", label %"$have_gas_3270" + +"$out_of_gas_3269": ; preds = %"$have_gas_3265" + call void @_out_of_gas() + br label %"$have_gas_3270" + +"$have_gas_3270": ; preds = %"$out_of_gas_3269", %"$have_gas_3265" + %"$consume_3271" = sub i64 %"$gasrem_3267", 1 + store i64 %"$consume_3271", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_3272" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3273" = icmp ugt i64 1, %"$gasrem_3272" + br i1 %"$gascmp_3273", label %"$out_of_gas_3274", label %"$have_gas_3275" + +"$out_of_gas_3274": ; preds = %"$have_gas_3270" + call void @_out_of_gas() + br label %"$have_gas_3275" + +"$have_gas_3275": ; preds = %"$out_of_gas_3274", %"$have_gas_3270" + %"$consume_3276" = sub i64 %"$gasrem_3272", 1 + store i64 %"$consume_3276", i64* @_gasrem, align 8 + %"$msgobj_3277_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3277_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3277_salloc_load", i64 125) + %"$msgobj_3277_salloc" = bitcast i8* %"$msgobj_3277_salloc_salloc" to [125 x i8]* + %"$msgobj_3277" = bitcast [125 x i8]* %"$msgobj_3277_salloc" to i8* + store i8 3, i8* %"$msgobj_3277", align 1 + %"$msgobj_fname_3279" = getelementptr i8, i8* %"$msgobj_3277", i32 1 + %"$msgobj_fname_3280" = bitcast i8* %"$msgobj_fname_3279" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3278", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3280", align 8 + %"$msgobj_td_3281" = getelementptr i8, i8* %"$msgobj_3277", i32 17 + %"$msgobj_td_3282" = bitcast i8* %"$msgobj_td_3281" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3282", align 8 + %"$support_contract_3283" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_3284" = getelementptr i8, i8* %"$msgobj_3277", i32 25 + %"$msgobj_v_3285" = bitcast i8* %"$msgobj_v_3284" to [20 x i8]* + store [20 x i8] %"$support_contract_3283", [20 x i8]* %"$msgobj_v_3285", align 1 + %"$msgobj_fname_3287" = getelementptr i8, i8* %"$msgobj_3277", i32 45 + %"$msgobj_fname_3288" = bitcast i8* %"$msgobj_fname_3287" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3286", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3288", align 8 + %"$msgobj_td_3289" = getelementptr i8, i8* %"$msgobj_3277", i32 61 + %"$msgobj_td_3290" = bitcast i8* %"$msgobj_td_3289" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3290", align 8 + %"$msgobj_v_3292" = getelementptr i8, i8* %"$msgobj_3277", i32 69 + %"$msgobj_v_3293" = bitcast i8* %"$msgobj_v_3292" to %String* + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_3291", i32 0, i32 0), i32 21 }, %String* %"$msgobj_v_3293", align 8 + %"$msgobj_fname_3295" = getelementptr i8, i8* %"$msgobj_3277", i32 85 + %"$msgobj_fname_3296" = bitcast i8* %"$msgobj_fname_3295" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3294", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3296", align 8 + %"$msgobj_td_3297" = getelementptr i8, i8* %"$msgobj_3277", i32 101 + %"$msgobj_td_3298" = bitcast i8* %"$msgobj_td_3297" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3298", align 8 + %"$amount_3299" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_3300" = getelementptr i8, i8* %"$msgobj_3277", i32 109 + %"$msgobj_v_3301" = bitcast i8* %"$msgobj_v_3300" to %Uint128* + store %Uint128 %"$amount_3299", %Uint128* %"$msgobj_v_3301", align 8 + store i8* %"$msgobj_3277", i8** %msg1, align 8 + %"$gasrem_3303" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3304" = icmp ugt i64 1, %"$gasrem_3303" + br i1 %"$gascmp_3304", label %"$out_of_gas_3305", label %"$have_gas_3306" + +"$out_of_gas_3305": ; preds = %"$have_gas_3275" + call void @_out_of_gas() + br label %"$have_gas_3306" + +"$have_gas_3306": ; preds = %"$out_of_gas_3305", %"$have_gas_3275" + %"$consume_3307" = sub i64 %"$gasrem_3303", 1 + store i64 %"$consume_3307", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_3308" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3309" = icmp ugt i64 1, %"$gasrem_3308" + br i1 %"$gascmp_3309", label %"$out_of_gas_3310", label %"$have_gas_3311" + +"$out_of_gas_3310": ; preds = %"$have_gas_3306" + call void @_out_of_gas() + br label %"$have_gas_3311" + +"$have_gas_3311": ; preds = %"$out_of_gas_3310", %"$have_gas_3306" + %"$consume_3312" = sub i64 %"$gasrem_3308", 1 + store i64 %"$consume_3312", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_37" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3313" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3314" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3313", 0 + %"$accounting_tests.one_msg_envptr_3315" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3313", 1 + %"$msg1_3316" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_3317" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3314"(i8* %"$accounting_tests.one_msg_envptr_3315", i8* %"$msg1_3316") + store %TName_List_Message* %"$accounting_tests.one_msg_call_3317", %TName_List_Message** %"$accounting_tests.one_msg_37", align 8 + %"$$accounting_tests.one_msg_37_3318" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_37", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_37_3318", %TName_List_Message** %msgs1, align 8 + %"$msgs1_3319" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_3319_3320" = bitcast %TName_List_Message* %"$msgs1_3319" to i8* + %"$_literal_cost_call_3321" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_3319_3320") + %"$gasrem_3322" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3323" = icmp ugt i64 %"$_literal_cost_call_3321", %"$gasrem_3322" + br i1 %"$gascmp_3323", label %"$out_of_gas_3324", label %"$have_gas_3325" + +"$out_of_gas_3324": ; preds = %"$have_gas_3311" + call void @_out_of_gas() + br label %"$have_gas_3325" + +"$have_gas_3325": ; preds = %"$out_of_gas_3324", %"$have_gas_3311" + %"$consume_3326" = sub i64 %"$gasrem_3322", %"$_literal_cost_call_3321" + store i64 %"$consume_3326", i64* @_gasrem, align 8 + %"$execptr_load_3327" = load i8*, i8** @_execptr, align 8 + %"$msgs1_3328" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_3327", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_3328") + %support_bal = alloca %Uint128, align 8 + %"$execptr_load_3330" = load i8*, i8** @_execptr, align 8 + %"$support_bal_support_contract_3331" = alloca [20 x i8], align 1 + %"$support_contract_3332" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + store [20 x i8] %"$support_contract_3332", [20 x i8]* %"$support_bal_support_contract_3331", align 1 + %"$support_bal_call_3333" = call i8* @_fetch_remote_field(i8* %"$execptr_load_3330", [20 x i8]* %"$support_bal_support_contract_3331", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_3329", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$support_bal_3334" = bitcast i8* %"$support_bal_call_3333" to %Uint128* + %"$support_bal_3335" = load %Uint128, %Uint128* %"$support_bal_3334", align 8 + store %Uint128 %"$support_bal_3335", %Uint128* %support_bal, align 8 + %"$_literal_cost_support_bal_3336" = alloca %Uint128, align 8 + %"$support_bal_3337" = load %Uint128, %Uint128* %support_bal, align 8 + store %Uint128 %"$support_bal_3337", %Uint128* %"$_literal_cost_support_bal_3336", align 8 + %"$$_literal_cost_support_bal_3336_3338" = bitcast %Uint128* %"$_literal_cost_support_bal_3336" to i8* + %"$_literal_cost_call_3339" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_support_bal_3336_3338") + %"$gasadd_3340" = add i64 %"$_literal_cost_call_3339", 0 + %"$gasrem_3341" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3342" = icmp ugt i64 %"$gasadd_3340", %"$gasrem_3341" + br i1 %"$gascmp_3342", label %"$out_of_gas_3343", label %"$have_gas_3344" + +"$out_of_gas_3343": ; preds = %"$have_gas_3325" + call void @_out_of_gas() + br label %"$have_gas_3344" + +"$have_gas_3344": ; preds = %"$out_of_gas_3343", %"$have_gas_3325" + %"$consume_3345" = sub i64 %"$gasrem_3341", %"$gasadd_3340" + store i64 %"$consume_3345", i64* @_gasrem, align 8 + %"$gasrem_3346" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3347" = icmp ugt i64 1, %"$gasrem_3346" + br i1 %"$gascmp_3347", label %"$out_of_gas_3348", label %"$have_gas_3349" + +"$out_of_gas_3348": ; preds = %"$have_gas_3344" + call void @_out_of_gas() + br label %"$have_gas_3349" + +"$have_gas_3349": ; preds = %"$out_of_gas_3348", %"$have_gas_3344" + %"$consume_3350" = sub i64 %"$gasrem_3346", 1 + store i64 %"$consume_3350", i64* @_gasrem, align 8 + %expected_balance = alloca %Uint128, align 8 + %"$support_bal_3351" = load %Uint128, %Uint128* %support_bal, align 8 + %"$amount_3352" = load %Uint128, %Uint128* %amount, align 8 + %"$add_call_3353" = call %Uint128 @_add_Uint128(%Uint128 %"$support_bal_3351", %Uint128 %"$amount_3352") + store %Uint128 %"$add_call_3353", %Uint128* %expected_balance, align 8 + %"$gasrem_3354" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3355" = icmp ugt i64 1, %"$gasrem_3354" + br i1 %"$gascmp_3355", label %"$out_of_gas_3356", label %"$have_gas_3357" + +"$out_of_gas_3356": ; preds = %"$have_gas_3349" + call void @_out_of_gas() + br label %"$have_gas_3357" + +"$have_gas_3357": ; preds = %"$out_of_gas_3356", %"$have_gas_3349" + %"$consume_3358" = sub i64 %"$gasrem_3354", 1 + store i64 %"$consume_3358", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_3359" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3360" = icmp ugt i64 1, %"$gasrem_3359" + br i1 %"$gascmp_3360", label %"$out_of_gas_3361", label %"$have_gas_3362" + +"$out_of_gas_3361": ; preds = %"$have_gas_3357" + call void @_out_of_gas() + br label %"$have_gas_3362" + +"$have_gas_3362": ; preds = %"$out_of_gas_3361", %"$have_gas_3357" + %"$consume_3363" = sub i64 %"$gasrem_3359", 1 + store i64 %"$consume_3363", i64* @_gasrem, align 8 + %"$msgobj_3364_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3364_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3364_salloc_load", i64 165) + %"$msgobj_3364_salloc" = bitcast i8* %"$msgobj_3364_salloc_salloc" to [165 x i8]* + %"$msgobj_3364" = bitcast [165 x i8]* %"$msgobj_3364_salloc" to i8* + store i8 4, i8* %"$msgobj_3364", align 1 + %"$msgobj_fname_3366" = getelementptr i8, i8* %"$msgobj_3364", i32 1 + %"$msgobj_fname_3367" = bitcast i8* %"$msgobj_fname_3366" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3365", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3367", align 8 + %"$msgobj_td_3368" = getelementptr i8, i8* %"$msgobj_3364", i32 17 + %"$msgobj_td_3369" = bitcast i8* %"$msgobj_td_3368" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3369", align 8 + %"$_this_address_3370" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_3371" = getelementptr i8, i8* %"$msgobj_3364", i32 25 + %"$msgobj_v_3372" = bitcast i8* %"$msgobj_v_3371" to [20 x i8]* + store [20 x i8] %"$_this_address_3370", [20 x i8]* %"$msgobj_v_3372", align 1 + %"$msgobj_fname_3374" = getelementptr i8, i8* %"$msgobj_3364", i32 45 + %"$msgobj_fname_3375" = bitcast i8* %"$msgobj_fname_3374" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3373", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3375", align 8 + %"$msgobj_td_3376" = getelementptr i8, i8* %"$msgobj_3364", i32 61 + %"$msgobj_td_3377" = bitcast i8* %"$msgobj_td_3376" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3377", align 8 + %"$msgobj_v_3379" = getelementptr i8, i8* %"$msgobj_3364", i32 69 + %"$msgobj_v_3380" = bitcast i8* %"$msgobj_v_3379" to %String* + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_3378", i32 0, i32 0), i32 21 }, %String* %"$msgobj_v_3380", align 8 + %"$msgobj_fname_3382" = getelementptr i8, i8* %"$msgobj_3364", i32 85 + %"$msgobj_fname_3383" = bitcast i8* %"$msgobj_fname_3382" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3381", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3383", align 8 + %"$msgobj_td_3384" = getelementptr i8, i8* %"$msgobj_3364", i32 101 + %"$msgobj_td_3385" = bitcast i8* %"$msgobj_td_3384" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3385", align 8 + %"$msgobj_v_3386" = getelementptr i8, i8* %"$msgobj_3364", i32 109 + %"$msgobj_v_3387" = bitcast i8* %"$msgobj_v_3386" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_3387", align 8 + %"$msgobj_fname_3389" = getelementptr i8, i8* %"$msgobj_3364", i32 125 + %"$msgobj_fname_3390" = bitcast i8* %"$msgobj_fname_3389" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_3388", i32 0, i32 0), i32 16 }, %String* %"$msgobj_fname_3390", align 8 + %"$msgobj_td_3391" = getelementptr i8, i8* %"$msgobj_3364", i32 141 + %"$msgobj_td_3392" = bitcast i8* %"$msgobj_td_3391" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3392", align 8 + %"$expected_balance_3393" = load %Uint128, %Uint128* %expected_balance, align 8 + %"$msgobj_v_3394" = getelementptr i8, i8* %"$msgobj_3364", i32 149 + %"$msgobj_v_3395" = bitcast i8* %"$msgobj_v_3394" to %Uint128* + store %Uint128 %"$expected_balance_3393", %Uint128* %"$msgobj_v_3395", align 8 + store i8* %"$msgobj_3364", i8** %msg2, align 8 + %"$gasrem_3397" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3398" = icmp ugt i64 1, %"$gasrem_3397" + br i1 %"$gascmp_3398", label %"$out_of_gas_3399", label %"$have_gas_3400" + +"$out_of_gas_3399": ; preds = %"$have_gas_3362" + call void @_out_of_gas() + br label %"$have_gas_3400" + +"$have_gas_3400": ; preds = %"$out_of_gas_3399", %"$have_gas_3362" + %"$consume_3401" = sub i64 %"$gasrem_3397", 1 + store i64 %"$consume_3401", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_3402" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3403" = icmp ugt i64 1, %"$gasrem_3402" + br i1 %"$gascmp_3403", label %"$out_of_gas_3404", label %"$have_gas_3405" + +"$out_of_gas_3404": ; preds = %"$have_gas_3400" + call void @_out_of_gas() + br label %"$have_gas_3405" + +"$have_gas_3405": ; preds = %"$out_of_gas_3404", %"$have_gas_3400" + %"$consume_3406" = sub i64 %"$gasrem_3402", 1 + store i64 %"$consume_3406", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_36" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3407" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3408" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3407", 0 + %"$accounting_tests.one_msg_envptr_3409" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3407", 1 + %"$msg2_3410" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_3411" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3408"(i8* %"$accounting_tests.one_msg_envptr_3409", i8* %"$msg2_3410") + store %TName_List_Message* %"$accounting_tests.one_msg_call_3411", %TName_List_Message** %"$accounting_tests.one_msg_36", align 8 + %"$$accounting_tests.one_msg_36_3412" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_36", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_36_3412", %TName_List_Message** %msgs2, align 8 + %"$msgs2_3413" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_3413_3414" = bitcast %TName_List_Message* %"$msgs2_3413" to i8* + %"$_literal_cost_call_3415" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_3413_3414") + %"$gasrem_3416" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3417" = icmp ugt i64 %"$_literal_cost_call_3415", %"$gasrem_3416" + br i1 %"$gascmp_3417", label %"$out_of_gas_3418", label %"$have_gas_3419" + +"$out_of_gas_3418": ; preds = %"$have_gas_3405" + call void @_out_of_gas() + br label %"$have_gas_3419" + +"$have_gas_3419": ; preds = %"$out_of_gas_3418", %"$have_gas_3405" + %"$consume_3420" = sub i64 %"$gasrem_3416", %"$_literal_cost_call_3415" + store i64 %"$consume_3420", i64* @_gasrem, align 8 + %"$execptr_load_3421" = load i8*, i8** @_execptr, align 8 + %"$msgs2_3422" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_3421", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_3422") + ret void +} + +declare %Uint128 @_add_Uint128(%Uint128, %Uint128) + +define void @Test_Send_8(i8* %0) { +entry: + %"$_amount_3424" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3425" = bitcast i8* %"$_amount_3424" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3425", align 8 + %"$_origin_3426" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3427" = bitcast i8* %"$_origin_3426" to [20 x i8]* + %"$_sender_3428" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3429" = bitcast i8* %"$_sender_3428" to [20 x i8]* + call void @"$Test_Send_8_3242"(%Uint128 %_amount, [20 x i8]* %"$_origin_3427", [20 x i8]* %"$_sender_3429") + ret void +} + +define internal void @"$Test_Send_9_3430"(%Uint128 %_amount, [20 x i8]* %"$_origin_3431", [20 x i8]* %"$_sender_3432") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3431", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3432", align 1 + %"$gasrem_3433" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3434" = icmp ugt i64 1, %"$gasrem_3433" + br i1 %"$gascmp_3434", label %"$out_of_gas_3435", label %"$have_gas_3436" + +"$out_of_gas_3435": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3436" + +"$have_gas_3436": ; preds = %"$out_of_gas_3435", %entry + %"$consume_3437" = sub i64 %"$gasrem_3433", 1 + store i64 %"$consume_3437", i64* @_gasrem, align 8 + %"$AssertReset__origin_3438" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_3438", align 1 + %"$AssertReset__sender_3439" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_3439", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_3438", [20 x i8]* %"$AssertReset__sender_3439") + %amount = alloca %Uint128, align 8 + %"$execptr_load_3441" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3442" = call i8* @_fetch_field(i8* %"$execptr_load_3441", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3440", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$amount_3443" = bitcast i8* %"$amount_call_3442" to %Uint128* + %"$amount_3444" = load %Uint128, %Uint128* %"$amount_3443", align 8 + store %Uint128 %"$amount_3444", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3445" = alloca %Uint128, align 8 + %"$amount_3446" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3446", %Uint128* %"$_literal_cost_amount_3445", align 8 + %"$$_literal_cost_amount_3445_3447" = bitcast %Uint128* %"$_literal_cost_amount_3445" to i8* + %"$_literal_cost_call_3448" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3445_3447") + %"$gasadd_3449" = add i64 %"$_literal_cost_call_3448", 0 + %"$gasrem_3450" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3451" = icmp ugt i64 %"$gasadd_3449", %"$gasrem_3450" + br i1 %"$gascmp_3451", label %"$out_of_gas_3452", label %"$have_gas_3453" + +"$out_of_gas_3452": ; preds = %"$have_gas_3436" + call void @_out_of_gas() + br label %"$have_gas_3453" + +"$have_gas_3453": ; preds = %"$out_of_gas_3452", %"$have_gas_3436" + %"$consume_3454" = sub i64 %"$gasrem_3450", %"$gasadd_3449" + store i64 %"$consume_3454", i64* @_gasrem, align 8 + %"$gasrem_3455" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3456" = icmp ugt i64 1, %"$gasrem_3455" + br i1 %"$gascmp_3456", label %"$out_of_gas_3457", label %"$have_gas_3458" + +"$out_of_gas_3457": ; preds = %"$have_gas_3453" + call void @_out_of_gas() + br label %"$have_gas_3458" + +"$have_gas_3458": ; preds = %"$out_of_gas_3457", %"$have_gas_3453" + %"$consume_3459" = sub i64 %"$gasrem_3455", 1 + store i64 %"$consume_3459", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_3460" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3461" = icmp ugt i64 1, %"$gasrem_3460" + br i1 %"$gascmp_3461", label %"$out_of_gas_3462", label %"$have_gas_3463" + +"$out_of_gas_3462": ; preds = %"$have_gas_3458" + call void @_out_of_gas() + br label %"$have_gas_3463" + +"$have_gas_3463": ; preds = %"$out_of_gas_3462", %"$have_gas_3458" + %"$consume_3464" = sub i64 %"$gasrem_3460", 1 + store i64 %"$consume_3464", i64* @_gasrem, align 8 + %"$msgobj_3465_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3465_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3465_salloc_load", i64 125) + %"$msgobj_3465_salloc" = bitcast i8* %"$msgobj_3465_salloc_salloc" to [125 x i8]* + %"$msgobj_3465" = bitcast [125 x i8]* %"$msgobj_3465_salloc" to i8* + store i8 3, i8* %"$msgobj_3465", align 1 + %"$msgobj_fname_3467" = getelementptr i8, i8* %"$msgobj_3465", i32 1 + %"$msgobj_fname_3468" = bitcast i8* %"$msgobj_fname_3467" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3466", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3468", align 8 + %"$msgobj_td_3469" = getelementptr i8, i8* %"$msgobj_3465", i32 17 + %"$msgobj_td_3470" = bitcast i8* %"$msgobj_td_3469" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3470", align 8 + %"$support_contract_3471" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_3472" = getelementptr i8, i8* %"$msgobj_3465", i32 25 + %"$msgobj_v_3473" = bitcast i8* %"$msgobj_v_3472" to [20 x i8]* + store [20 x i8] %"$support_contract_3471", [20 x i8]* %"$msgobj_v_3473", align 1 + %"$msgobj_fname_3475" = getelementptr i8, i8* %"$msgobj_3465", i32 45 + %"$msgobj_fname_3476" = bitcast i8* %"$msgobj_fname_3475" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3474", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3476", align 8 + %"$msgobj_td_3477" = getelementptr i8, i8* %"$msgobj_3465", i32 61 + %"$msgobj_td_3478" = bitcast i8* %"$msgobj_td_3477" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3478", align 8 + %"$msgobj_v_3480" = getelementptr i8, i8* %"$msgobj_3465", i32 69 + %"$msgobj_v_3481" = bitcast i8* %"$msgobj_v_3480" to %String* + store %String { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$stringlit_3479", i32 0, i32 0), i32 9 }, %String* %"$msgobj_v_3481", align 8 + %"$msgobj_fname_3483" = getelementptr i8, i8* %"$msgobj_3465", i32 85 + %"$msgobj_fname_3484" = bitcast i8* %"$msgobj_fname_3483" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3482", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3484", align 8 + %"$msgobj_td_3485" = getelementptr i8, i8* %"$msgobj_3465", i32 101 + %"$msgobj_td_3486" = bitcast i8* %"$msgobj_td_3485" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3486", align 8 + %"$amount_3487" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_3488" = getelementptr i8, i8* %"$msgobj_3465", i32 109 + %"$msgobj_v_3489" = bitcast i8* %"$msgobj_v_3488" to %Uint128* + store %Uint128 %"$amount_3487", %Uint128* %"$msgobj_v_3489", align 8 + store i8* %"$msgobj_3465", i8** %msg1, align 8 + %"$gasrem_3491" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3492" = icmp ugt i64 1, %"$gasrem_3491" + br i1 %"$gascmp_3492", label %"$out_of_gas_3493", label %"$have_gas_3494" + +"$out_of_gas_3493": ; preds = %"$have_gas_3463" + call void @_out_of_gas() + br label %"$have_gas_3494" + +"$have_gas_3494": ; preds = %"$out_of_gas_3493", %"$have_gas_3463" + %"$consume_3495" = sub i64 %"$gasrem_3491", 1 + store i64 %"$consume_3495", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_3496" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3497" = icmp ugt i64 1, %"$gasrem_3496" + br i1 %"$gascmp_3497", label %"$out_of_gas_3498", label %"$have_gas_3499" + +"$out_of_gas_3498": ; preds = %"$have_gas_3494" + call void @_out_of_gas() + br label %"$have_gas_3499" + +"$have_gas_3499": ; preds = %"$out_of_gas_3498", %"$have_gas_3494" + %"$consume_3500" = sub i64 %"$gasrem_3496", 1 + store i64 %"$consume_3500", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_39" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3501" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3502" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3501", 0 + %"$accounting_tests.one_msg_envptr_3503" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3501", 1 + %"$msg1_3504" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_3505" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3502"(i8* %"$accounting_tests.one_msg_envptr_3503", i8* %"$msg1_3504") + store %TName_List_Message* %"$accounting_tests.one_msg_call_3505", %TName_List_Message** %"$accounting_tests.one_msg_39", align 8 + %"$$accounting_tests.one_msg_39_3506" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_39", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_39_3506", %TName_List_Message** %msgs1, align 8 + %"$msgs1_3507" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_3507_3508" = bitcast %TName_List_Message* %"$msgs1_3507" to i8* + %"$_literal_cost_call_3509" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_3507_3508") + %"$gasrem_3510" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3511" = icmp ugt i64 %"$_literal_cost_call_3509", %"$gasrem_3510" + br i1 %"$gascmp_3511", label %"$out_of_gas_3512", label %"$have_gas_3513" + +"$out_of_gas_3512": ; preds = %"$have_gas_3499" + call void @_out_of_gas() + br label %"$have_gas_3513" + +"$have_gas_3513": ; preds = %"$out_of_gas_3512", %"$have_gas_3499" + %"$consume_3514" = sub i64 %"$gasrem_3510", %"$_literal_cost_call_3509" + store i64 %"$consume_3514", i64* @_gasrem, align 8 + %"$execptr_load_3515" = load i8*, i8** @_execptr, align 8 + %"$msgs1_3516" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_3515", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_3516") + %support_bal = alloca %Uint128, align 8 + %"$execptr_load_3518" = load i8*, i8** @_execptr, align 8 + %"$support_bal_support_contract_3519" = alloca [20 x i8], align 1 + %"$support_contract_3520" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + store [20 x i8] %"$support_contract_3520", [20 x i8]* %"$support_bal_support_contract_3519", align 1 + %"$support_bal_call_3521" = call i8* @_fetch_remote_field(i8* %"$execptr_load_3518", [20 x i8]* %"$support_bal_support_contract_3519", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_3517", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$support_bal_3522" = bitcast i8* %"$support_bal_call_3521" to %Uint128* + %"$support_bal_3523" = load %Uint128, %Uint128* %"$support_bal_3522", align 8 + store %Uint128 %"$support_bal_3523", %Uint128* %support_bal, align 8 + %"$_literal_cost_support_bal_3524" = alloca %Uint128, align 8 + %"$support_bal_3525" = load %Uint128, %Uint128* %support_bal, align 8 + store %Uint128 %"$support_bal_3525", %Uint128* %"$_literal_cost_support_bal_3524", align 8 + %"$$_literal_cost_support_bal_3524_3526" = bitcast %Uint128* %"$_literal_cost_support_bal_3524" to i8* + %"$_literal_cost_call_3527" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_support_bal_3524_3526") + %"$gasadd_3528" = add i64 %"$_literal_cost_call_3527", 0 + %"$gasrem_3529" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3530" = icmp ugt i64 %"$gasadd_3528", %"$gasrem_3529" + br i1 %"$gascmp_3530", label %"$out_of_gas_3531", label %"$have_gas_3532" + +"$out_of_gas_3531": ; preds = %"$have_gas_3513" + call void @_out_of_gas() + br label %"$have_gas_3532" + +"$have_gas_3532": ; preds = %"$out_of_gas_3531", %"$have_gas_3513" + %"$consume_3533" = sub i64 %"$gasrem_3529", %"$gasadd_3528" + store i64 %"$consume_3533", i64* @_gasrem, align 8 + %"$gasrem_3534" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3535" = icmp ugt i64 1, %"$gasrem_3534" + br i1 %"$gascmp_3535", label %"$out_of_gas_3536", label %"$have_gas_3537" + +"$out_of_gas_3536": ; preds = %"$have_gas_3532" + call void @_out_of_gas() + br label %"$have_gas_3537" + +"$have_gas_3537": ; preds = %"$out_of_gas_3536", %"$have_gas_3532" + %"$consume_3538" = sub i64 %"$gasrem_3534", 1 + store i64 %"$consume_3538", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_3539" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3540" = icmp ugt i64 1, %"$gasrem_3539" + br i1 %"$gascmp_3540", label %"$out_of_gas_3541", label %"$have_gas_3542" + +"$out_of_gas_3541": ; preds = %"$have_gas_3537" + call void @_out_of_gas() + br label %"$have_gas_3542" + +"$have_gas_3542": ; preds = %"$out_of_gas_3541", %"$have_gas_3537" + %"$consume_3543" = sub i64 %"$gasrem_3539", 1 + store i64 %"$consume_3543", i64* @_gasrem, align 8 + %"$msgobj_3544_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3544_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3544_salloc_load", i64 165) + %"$msgobj_3544_salloc" = bitcast i8* %"$msgobj_3544_salloc_salloc" to [165 x i8]* + %"$msgobj_3544" = bitcast [165 x i8]* %"$msgobj_3544_salloc" to i8* + store i8 4, i8* %"$msgobj_3544", align 1 + %"$msgobj_fname_3546" = getelementptr i8, i8* %"$msgobj_3544", i32 1 + %"$msgobj_fname_3547" = bitcast i8* %"$msgobj_fname_3546" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3545", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3547", align 8 + %"$msgobj_td_3548" = getelementptr i8, i8* %"$msgobj_3544", i32 17 + %"$msgobj_td_3549" = bitcast i8* %"$msgobj_td_3548" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3549", align 8 + %"$_this_address_3550" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_3551" = getelementptr i8, i8* %"$msgobj_3544", i32 25 + %"$msgobj_v_3552" = bitcast i8* %"$msgobj_v_3551" to [20 x i8]* + store [20 x i8] %"$_this_address_3550", [20 x i8]* %"$msgobj_v_3552", align 1 + %"$msgobj_fname_3554" = getelementptr i8, i8* %"$msgobj_3544", i32 45 + %"$msgobj_fname_3555" = bitcast i8* %"$msgobj_fname_3554" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3553", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3555", align 8 + %"$msgobj_td_3556" = getelementptr i8, i8* %"$msgobj_3544", i32 61 + %"$msgobj_td_3557" = bitcast i8* %"$msgobj_td_3556" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3557", align 8 + %"$msgobj_v_3559" = getelementptr i8, i8* %"$msgobj_3544", i32 69 + %"$msgobj_v_3560" = bitcast i8* %"$msgobj_v_3559" to %String* + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_3558", i32 0, i32 0), i32 21 }, %String* %"$msgobj_v_3560", align 8 + %"$msgobj_fname_3562" = getelementptr i8, i8* %"$msgobj_3544", i32 85 + %"$msgobj_fname_3563" = bitcast i8* %"$msgobj_fname_3562" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3561", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3563", align 8 + %"$msgobj_td_3564" = getelementptr i8, i8* %"$msgobj_3544", i32 101 + %"$msgobj_td_3565" = bitcast i8* %"$msgobj_td_3564" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3565", align 8 + %"$msgobj_v_3566" = getelementptr i8, i8* %"$msgobj_3544", i32 109 + %"$msgobj_v_3567" = bitcast i8* %"$msgobj_v_3566" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_3567", align 8 + %"$msgobj_fname_3569" = getelementptr i8, i8* %"$msgobj_3544", i32 125 + %"$msgobj_fname_3570" = bitcast i8* %"$msgobj_fname_3569" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_3568", i32 0, i32 0), i32 16 }, %String* %"$msgobj_fname_3570", align 8 + %"$msgobj_td_3571" = getelementptr i8, i8* %"$msgobj_3544", i32 141 + %"$msgobj_td_3572" = bitcast i8* %"$msgobj_td_3571" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3572", align 8 + %"$support_bal_3573" = load %Uint128, %Uint128* %support_bal, align 8 + %"$msgobj_v_3574" = getelementptr i8, i8* %"$msgobj_3544", i32 149 + %"$msgobj_v_3575" = bitcast i8* %"$msgobj_v_3574" to %Uint128* + store %Uint128 %"$support_bal_3573", %Uint128* %"$msgobj_v_3575", align 8 + store i8* %"$msgobj_3544", i8** %msg2, align 8 + %"$gasrem_3577" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3578" = icmp ugt i64 1, %"$gasrem_3577" + br i1 %"$gascmp_3578", label %"$out_of_gas_3579", label %"$have_gas_3580" + +"$out_of_gas_3579": ; preds = %"$have_gas_3542" + call void @_out_of_gas() + br label %"$have_gas_3580" + +"$have_gas_3580": ; preds = %"$out_of_gas_3579", %"$have_gas_3542" + %"$consume_3581" = sub i64 %"$gasrem_3577", 1 + store i64 %"$consume_3581", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_3582" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3583" = icmp ugt i64 1, %"$gasrem_3582" + br i1 %"$gascmp_3583", label %"$out_of_gas_3584", label %"$have_gas_3585" + +"$out_of_gas_3584": ; preds = %"$have_gas_3580" + call void @_out_of_gas() + br label %"$have_gas_3585" + +"$have_gas_3585": ; preds = %"$out_of_gas_3584", %"$have_gas_3580" + %"$consume_3586" = sub i64 %"$gasrem_3582", 1 + store i64 %"$consume_3586", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_38" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3587" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3588" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3587", 0 + %"$accounting_tests.one_msg_envptr_3589" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3587", 1 + %"$msg2_3590" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_3591" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3588"(i8* %"$accounting_tests.one_msg_envptr_3589", i8* %"$msg2_3590") + store %TName_List_Message* %"$accounting_tests.one_msg_call_3591", %TName_List_Message** %"$accounting_tests.one_msg_38", align 8 + %"$$accounting_tests.one_msg_38_3592" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_38", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_38_3592", %TName_List_Message** %msgs2, align 8 + %"$msgs2_3593" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_3593_3594" = bitcast %TName_List_Message* %"$msgs2_3593" to i8* + %"$_literal_cost_call_3595" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_3593_3594") + %"$gasrem_3596" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3597" = icmp ugt i64 %"$_literal_cost_call_3595", %"$gasrem_3596" + br i1 %"$gascmp_3597", label %"$out_of_gas_3598", label %"$have_gas_3599" + +"$out_of_gas_3598": ; preds = %"$have_gas_3585" + call void @_out_of_gas() + br label %"$have_gas_3599" + +"$have_gas_3599": ; preds = %"$out_of_gas_3598", %"$have_gas_3585" + %"$consume_3600" = sub i64 %"$gasrem_3596", %"$_literal_cost_call_3595" + store i64 %"$consume_3600", i64* @_gasrem, align 8 + %"$execptr_load_3601" = load i8*, i8** @_execptr, align 8 + %"$msgs2_3602" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_3601", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_3602") + ret void +} + +define void @Test_Send_9(i8* %0) { +entry: + %"$_amount_3604" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3605" = bitcast i8* %"$_amount_3604" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3605", align 8 + %"$_origin_3606" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3607" = bitcast i8* %"$_origin_3606" to [20 x i8]* + %"$_sender_3608" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3609" = bitcast i8* %"$_sender_3608" to [20 x i8]* + call void @"$Test_Send_9_3430"(%Uint128 %_amount, [20 x i8]* %"$_origin_3607", [20 x i8]* %"$_sender_3609") + ret void +} + +define internal void @"$Test_Send_10_3610"(%Uint128 %_amount, [20 x i8]* %"$_origin_3611", [20 x i8]* %"$_sender_3612") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3611", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3612", align 1 + %"$gasrem_3613" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3614" = icmp ugt i64 1, %"$gasrem_3613" + br i1 %"$gascmp_3614", label %"$out_of_gas_3615", label %"$have_gas_3616" + +"$out_of_gas_3615": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3616" + +"$have_gas_3616": ; preds = %"$out_of_gas_3615", %entry + %"$consume_3617" = sub i64 %"$gasrem_3613", 1 + store i64 %"$consume_3617", i64* @_gasrem, align 8 + %"$AssertReset__origin_3618" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_3618", align 1 + %"$AssertReset__sender_3619" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_3619", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_3618", [20 x i8]* %"$AssertReset__sender_3619") + %amount = alloca %Uint128, align 8 + %"$execptr_load_3621" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3622" = call i8* @_fetch_field(i8* %"$execptr_load_3621", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3620", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$amount_3623" = bitcast i8* %"$amount_call_3622" to %Uint128* + %"$amount_3624" = load %Uint128, %Uint128* %"$amount_3623", align 8 + store %Uint128 %"$amount_3624", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3625" = alloca %Uint128, align 8 + %"$amount_3626" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3626", %Uint128* %"$_literal_cost_amount_3625", align 8 + %"$$_literal_cost_amount_3625_3627" = bitcast %Uint128* %"$_literal_cost_amount_3625" to i8* + %"$_literal_cost_call_3628" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3625_3627") + %"$gasadd_3629" = add i64 %"$_literal_cost_call_3628", 0 + %"$gasrem_3630" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3631" = icmp ugt i64 %"$gasadd_3629", %"$gasrem_3630" + br i1 %"$gascmp_3631", label %"$out_of_gas_3632", label %"$have_gas_3633" + +"$out_of_gas_3632": ; preds = %"$have_gas_3616" + call void @_out_of_gas() + br label %"$have_gas_3633" + +"$have_gas_3633": ; preds = %"$out_of_gas_3632", %"$have_gas_3616" + %"$consume_3634" = sub i64 %"$gasrem_3630", %"$gasadd_3629" + store i64 %"$consume_3634", i64* @_gasrem, align 8 + %"$gasrem_3635" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3636" = icmp ugt i64 1, %"$gasrem_3635" + br i1 %"$gascmp_3636", label %"$out_of_gas_3637", label %"$have_gas_3638" + +"$out_of_gas_3637": ; preds = %"$have_gas_3633" + call void @_out_of_gas() + br label %"$have_gas_3638" + +"$have_gas_3638": ; preds = %"$out_of_gas_3637", %"$have_gas_3633" + %"$consume_3639" = sub i64 %"$gasrem_3635", 1 + store i64 %"$consume_3639", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_3640" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3641" = icmp ugt i64 1, %"$gasrem_3640" + br i1 %"$gascmp_3641", label %"$out_of_gas_3642", label %"$have_gas_3643" + +"$out_of_gas_3642": ; preds = %"$have_gas_3638" + call void @_out_of_gas() + br label %"$have_gas_3643" + +"$have_gas_3643": ; preds = %"$out_of_gas_3642", %"$have_gas_3638" + %"$consume_3644" = sub i64 %"$gasrem_3640", 1 + store i64 %"$consume_3644", i64* @_gasrem, align 8 + %"$msgobj_3645_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3645_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3645_salloc_load", i64 125) + %"$msgobj_3645_salloc" = bitcast i8* %"$msgobj_3645_salloc_salloc" to [125 x i8]* + %"$msgobj_3645" = bitcast [125 x i8]* %"$msgobj_3645_salloc" to i8* + store i8 3, i8* %"$msgobj_3645", align 1 + %"$msgobj_fname_3647" = getelementptr i8, i8* %"$msgobj_3645", i32 1 + %"$msgobj_fname_3648" = bitcast i8* %"$msgobj_fname_3647" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3646", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3648", align 8 + %"$msgobj_td_3649" = getelementptr i8, i8* %"$msgobj_3645", i32 17 + %"$msgobj_td_3650" = bitcast i8* %"$msgobj_td_3649" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3650", align 8 + %"$support_contract_3651" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_3652" = getelementptr i8, i8* %"$msgobj_3645", i32 25 + %"$msgobj_v_3653" = bitcast i8* %"$msgobj_v_3652" to [20 x i8]* + store [20 x i8] %"$support_contract_3651", [20 x i8]* %"$msgobj_v_3653", align 1 + %"$msgobj_fname_3655" = getelementptr i8, i8* %"$msgobj_3645", i32 45 + %"$msgobj_fname_3656" = bitcast i8* %"$msgobj_fname_3655" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3654", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3656", align 8 + %"$msgobj_td_3657" = getelementptr i8, i8* %"$msgobj_3645", i32 61 + %"$msgobj_td_3658" = bitcast i8* %"$msgobj_td_3657" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3658", align 8 + %"$msgobj_v_3660" = getelementptr i8, i8* %"$msgobj_3645", i32 69 + %"$msgobj_v_3661" = bitcast i8* %"$msgobj_v_3660" to %String* + store %String { i8* getelementptr inbounds ([27 x i8], [27 x i8]* @"$stringlit_3659", i32 0, i32 0), i32 27 }, %String* %"$msgobj_v_3661", align 8 + %"$msgobj_fname_3663" = getelementptr i8, i8* %"$msgobj_3645", i32 85 + %"$msgobj_fname_3664" = bitcast i8* %"$msgobj_fname_3663" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3662", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3664", align 8 + %"$msgobj_td_3665" = getelementptr i8, i8* %"$msgobj_3645", i32 101 + %"$msgobj_td_3666" = bitcast i8* %"$msgobj_td_3665" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3666", align 8 + %"$amount_3667" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_3668" = getelementptr i8, i8* %"$msgobj_3645", i32 109 + %"$msgobj_v_3669" = bitcast i8* %"$msgobj_v_3668" to %Uint128* + store %Uint128 %"$amount_3667", %Uint128* %"$msgobj_v_3669", align 8 + store i8* %"$msgobj_3645", i8** %msg1, align 8 + %"$gasrem_3671" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3672" = icmp ugt i64 1, %"$gasrem_3671" + br i1 %"$gascmp_3672", label %"$out_of_gas_3673", label %"$have_gas_3674" + +"$out_of_gas_3673": ; preds = %"$have_gas_3643" + call void @_out_of_gas() + br label %"$have_gas_3674" + +"$have_gas_3674": ; preds = %"$out_of_gas_3673", %"$have_gas_3643" + %"$consume_3675" = sub i64 %"$gasrem_3671", 1 + store i64 %"$consume_3675", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_3676" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3677" = icmp ugt i64 1, %"$gasrem_3676" + br i1 %"$gascmp_3677", label %"$out_of_gas_3678", label %"$have_gas_3679" + +"$out_of_gas_3678": ; preds = %"$have_gas_3674" + call void @_out_of_gas() + br label %"$have_gas_3679" + +"$have_gas_3679": ; preds = %"$out_of_gas_3678", %"$have_gas_3674" + %"$consume_3680" = sub i64 %"$gasrem_3676", 1 + store i64 %"$consume_3680", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_40" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3681" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3682" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3681", 0 + %"$accounting_tests.one_msg_envptr_3683" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3681", 1 + %"$msg1_3684" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_3685" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3682"(i8* %"$accounting_tests.one_msg_envptr_3683", i8* %"$msg1_3684") + store %TName_List_Message* %"$accounting_tests.one_msg_call_3685", %TName_List_Message** %"$accounting_tests.one_msg_40", align 8 + %"$$accounting_tests.one_msg_40_3686" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_40", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_40_3686", %TName_List_Message** %msgs, align 8 + %"$msgs_3687" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_3687_3688" = bitcast %TName_List_Message* %"$msgs_3687" to i8* + %"$_literal_cost_call_3689" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_3687_3688") + %"$gasrem_3690" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3691" = icmp ugt i64 %"$_literal_cost_call_3689", %"$gasrem_3690" + br i1 %"$gascmp_3691", label %"$out_of_gas_3692", label %"$have_gas_3693" + +"$out_of_gas_3692": ; preds = %"$have_gas_3679" + call void @_out_of_gas() + br label %"$have_gas_3693" + +"$have_gas_3693": ; preds = %"$out_of_gas_3692", %"$have_gas_3679" + %"$consume_3694" = sub i64 %"$gasrem_3690", %"$_literal_cost_call_3689" + store i64 %"$consume_3694", i64* @_gasrem, align 8 + %"$execptr_load_3695" = load i8*, i8** @_execptr, align 8 + %"$msgs_3696" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_3695", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_3696") + ret void +} + +define void @Test_Send_10(i8* %0) { +entry: + %"$_amount_3698" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3699" = bitcast i8* %"$_amount_3698" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3699", align 8 + %"$_origin_3700" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3701" = bitcast i8* %"$_origin_3700" to [20 x i8]* + %"$_sender_3702" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3703" = bitcast i8* %"$_sender_3702" to [20 x i8]* + call void @"$Test_Send_10_3610"(%Uint128 %_amount, [20 x i8]* %"$_origin_3701", [20 x i8]* %"$_sender_3703") + ret void +} + +define internal void @"$Test_Send_11_3704"(%Uint128 %_amount, [20 x i8]* %"$_origin_3705", [20 x i8]* %"$_sender_3706") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3705", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3706", align 1 + %"$gasrem_3707" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3708" = icmp ugt i64 1, %"$gasrem_3707" + br i1 %"$gascmp_3708", label %"$out_of_gas_3709", label %"$have_gas_3710" + +"$out_of_gas_3709": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3710" + +"$have_gas_3710": ; preds = %"$out_of_gas_3709", %entry + %"$consume_3711" = sub i64 %"$gasrem_3707", 1 + store i64 %"$consume_3711", i64* @_gasrem, align 8 + %"$AssertReset__origin_3712" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_3712", align 1 + %"$AssertReset__sender_3713" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_3713", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_3712", [20 x i8]* %"$AssertReset__sender_3713") + %amount = alloca %Uint128, align 8 + %"$execptr_load_3715" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3716" = call i8* @_fetch_field(i8* %"$execptr_load_3715", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3714", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$amount_3717" = bitcast i8* %"$amount_call_3716" to %Uint128* + %"$amount_3718" = load %Uint128, %Uint128* %"$amount_3717", align 8 + store %Uint128 %"$amount_3718", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3719" = alloca %Uint128, align 8 + %"$amount_3720" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3720", %Uint128* %"$_literal_cost_amount_3719", align 8 + %"$$_literal_cost_amount_3719_3721" = bitcast %Uint128* %"$_literal_cost_amount_3719" to i8* + %"$_literal_cost_call_3722" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3719_3721") + %"$gasadd_3723" = add i64 %"$_literal_cost_call_3722", 0 + %"$gasrem_3724" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3725" = icmp ugt i64 %"$gasadd_3723", %"$gasrem_3724" + br i1 %"$gascmp_3725", label %"$out_of_gas_3726", label %"$have_gas_3727" + +"$out_of_gas_3726": ; preds = %"$have_gas_3710" + call void @_out_of_gas() + br label %"$have_gas_3727" + +"$have_gas_3727": ; preds = %"$out_of_gas_3726", %"$have_gas_3710" + %"$consume_3728" = sub i64 %"$gasrem_3724", %"$gasadd_3723" + store i64 %"$consume_3728", i64* @_gasrem, align 8 + %"$gasrem_3729" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3730" = icmp ugt i64 1, %"$gasrem_3729" + br i1 %"$gascmp_3730", label %"$out_of_gas_3731", label %"$have_gas_3732" + +"$out_of_gas_3731": ; preds = %"$have_gas_3727" + call void @_out_of_gas() + br label %"$have_gas_3732" + +"$have_gas_3732": ; preds = %"$out_of_gas_3731", %"$have_gas_3727" + %"$consume_3733" = sub i64 %"$gasrem_3729", 1 + store i64 %"$consume_3733", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_3734" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3735" = icmp ugt i64 1, %"$gasrem_3734" + br i1 %"$gascmp_3735", label %"$out_of_gas_3736", label %"$have_gas_3737" + +"$out_of_gas_3736": ; preds = %"$have_gas_3732" + call void @_out_of_gas() + br label %"$have_gas_3737" + +"$have_gas_3737": ; preds = %"$out_of_gas_3736", %"$have_gas_3732" + %"$consume_3738" = sub i64 %"$gasrem_3734", 1 + store i64 %"$consume_3738", i64* @_gasrem, align 8 + %"$msgobj_3739_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3739_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3739_salloc_load", i64 125) + %"$msgobj_3739_salloc" = bitcast i8* %"$msgobj_3739_salloc_salloc" to [125 x i8]* + %"$msgobj_3739" = bitcast [125 x i8]* %"$msgobj_3739_salloc" to i8* + store i8 3, i8* %"$msgobj_3739", align 1 + %"$msgobj_fname_3741" = getelementptr i8, i8* %"$msgobj_3739", i32 1 + %"$msgobj_fname_3742" = bitcast i8* %"$msgobj_fname_3741" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3740", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3742", align 8 + %"$msgobj_td_3743" = getelementptr i8, i8* %"$msgobj_3739", i32 17 + %"$msgobj_td_3744" = bitcast i8* %"$msgobj_td_3743" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3744", align 8 + %"$support_contract_3745" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_3746" = getelementptr i8, i8* %"$msgobj_3739", i32 25 + %"$msgobj_v_3747" = bitcast i8* %"$msgobj_v_3746" to [20 x i8]* + store [20 x i8] %"$support_contract_3745", [20 x i8]* %"$msgobj_v_3747", align 1 + %"$msgobj_fname_3749" = getelementptr i8, i8* %"$msgobj_3739", i32 45 + %"$msgobj_fname_3750" = bitcast i8* %"$msgobj_fname_3749" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3748", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3750", align 8 + %"$msgobj_td_3751" = getelementptr i8, i8* %"$msgobj_3739", i32 61 + %"$msgobj_td_3752" = bitcast i8* %"$msgobj_td_3751" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3752", align 8 + %"$msgobj_v_3754" = getelementptr i8, i8* %"$msgobj_3739", i32 69 + %"$msgobj_v_3755" = bitcast i8* %"$msgobj_v_3754" to %String* + store %String { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"$stringlit_3753", i32 0, i32 0), i32 26 }, %String* %"$msgobj_v_3755", align 8 + %"$msgobj_fname_3757" = getelementptr i8, i8* %"$msgobj_3739", i32 85 + %"$msgobj_fname_3758" = bitcast i8* %"$msgobj_fname_3757" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3756", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3758", align 8 + %"$msgobj_td_3759" = getelementptr i8, i8* %"$msgobj_3739", i32 101 + %"$msgobj_td_3760" = bitcast i8* %"$msgobj_td_3759" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3760", align 8 + %"$amount_3761" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_3762" = getelementptr i8, i8* %"$msgobj_3739", i32 109 + %"$msgobj_v_3763" = bitcast i8* %"$msgobj_v_3762" to %Uint128* + store %Uint128 %"$amount_3761", %Uint128* %"$msgobj_v_3763", align 8 + store i8* %"$msgobj_3739", i8** %msg1, align 8 + %"$gasrem_3765" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3766" = icmp ugt i64 1, %"$gasrem_3765" + br i1 %"$gascmp_3766", label %"$out_of_gas_3767", label %"$have_gas_3768" + +"$out_of_gas_3767": ; preds = %"$have_gas_3737" + call void @_out_of_gas() + br label %"$have_gas_3768" + +"$have_gas_3768": ; preds = %"$out_of_gas_3767", %"$have_gas_3737" + %"$consume_3769" = sub i64 %"$gasrem_3765", 1 + store i64 %"$consume_3769", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_3770" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3771" = icmp ugt i64 1, %"$gasrem_3770" + br i1 %"$gascmp_3771", label %"$out_of_gas_3772", label %"$have_gas_3773" + +"$out_of_gas_3772": ; preds = %"$have_gas_3768" + call void @_out_of_gas() + br label %"$have_gas_3773" + +"$have_gas_3773": ; preds = %"$out_of_gas_3772", %"$have_gas_3768" + %"$consume_3774" = sub i64 %"$gasrem_3770", 1 + store i64 %"$consume_3774", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_41" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3775" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3776" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3775", 0 + %"$accounting_tests.one_msg_envptr_3777" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3775", 1 + %"$msg1_3778" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_3779" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3776"(i8* %"$accounting_tests.one_msg_envptr_3777", i8* %"$msg1_3778") + store %TName_List_Message* %"$accounting_tests.one_msg_call_3779", %TName_List_Message** %"$accounting_tests.one_msg_41", align 8 + %"$$accounting_tests.one_msg_41_3780" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_41", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_41_3780", %TName_List_Message** %msgs, align 8 + %"$msgs_3781" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_3781_3782" = bitcast %TName_List_Message* %"$msgs_3781" to i8* + %"$_literal_cost_call_3783" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_3781_3782") + %"$gasrem_3784" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3785" = icmp ugt i64 %"$_literal_cost_call_3783", %"$gasrem_3784" + br i1 %"$gascmp_3785", label %"$out_of_gas_3786", label %"$have_gas_3787" + +"$out_of_gas_3786": ; preds = %"$have_gas_3773" + call void @_out_of_gas() + br label %"$have_gas_3787" + +"$have_gas_3787": ; preds = %"$out_of_gas_3786", %"$have_gas_3773" + %"$consume_3788" = sub i64 %"$gasrem_3784", %"$_literal_cost_call_3783" + store i64 %"$consume_3788", i64* @_gasrem, align 8 + %"$execptr_load_3789" = load i8*, i8** @_execptr, align 8 + %"$msgs_3790" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_3789", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_3790") + ret void +} + +define void @Test_Send_11(i8* %0) { +entry: + %"$_amount_3792" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3793" = bitcast i8* %"$_amount_3792" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3793", align 8 + %"$_origin_3794" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3795" = bitcast i8* %"$_origin_3794" to [20 x i8]* + %"$_sender_3796" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3797" = bitcast i8* %"$_sender_3796" to [20 x i8]* + call void @"$Test_Send_11_3704"(%Uint128 %_amount, [20 x i8]* %"$_origin_3795", [20 x i8]* %"$_sender_3797") + ret void +} + +define internal void @"$Test_Send_12_3798"(%Uint128 %_amount, [20 x i8]* %"$_origin_3799", [20 x i8]* %"$_sender_3800") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3799", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3800", align 1 + %amount = alloca %Uint128, align 8 + %"$execptr_load_3802" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3803" = call i8* @_fetch_field(i8* %"$execptr_load_3802", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3801", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$amount_3804" = bitcast i8* %"$amount_call_3803" to %Uint128* + %"$amount_3805" = load %Uint128, %Uint128* %"$amount_3804", align 8 + store %Uint128 %"$amount_3805", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3806" = alloca %Uint128, align 8 + %"$amount_3807" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3807", %Uint128* %"$_literal_cost_amount_3806", align 8 + %"$$_literal_cost_amount_3806_3808" = bitcast %Uint128* %"$_literal_cost_amount_3806" to i8* + %"$_literal_cost_call_3809" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3806_3808") + %"$gasadd_3810" = add i64 %"$_literal_cost_call_3809", 0 + %"$gasrem_3811" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3812" = icmp ugt i64 %"$gasadd_3810", %"$gasrem_3811" + br i1 %"$gascmp_3812", label %"$out_of_gas_3813", label %"$have_gas_3814" + +"$out_of_gas_3813": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3814" + +"$have_gas_3814": ; preds = %"$out_of_gas_3813", %entry + %"$consume_3815" = sub i64 %"$gasrem_3811", %"$gasadd_3810" + store i64 %"$consume_3815", i64* @_gasrem, align 8 + %bal = alloca %Uint128, align 8 + %"$execptr_load_3817" = load i8*, i8** @_execptr, align 8 + %"$bal_call_3818" = call i8* @_fetch_field(i8* %"$execptr_load_3817", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_3816", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$bal_3819" = bitcast i8* %"$bal_call_3818" to %Uint128* + %"$bal_3820" = load %Uint128, %Uint128* %"$bal_3819", align 8 + store %Uint128 %"$bal_3820", %Uint128* %bal, align 8 + %"$_literal_cost_bal_3821" = alloca %Uint128, align 8 + %"$bal_3822" = load %Uint128, %Uint128* %bal, align 8 + store %Uint128 %"$bal_3822", %Uint128* %"$_literal_cost_bal_3821", align 8 + %"$$_literal_cost_bal_3821_3823" = bitcast %Uint128* %"$_literal_cost_bal_3821" to i8* + %"$_literal_cost_call_3824" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_bal_3821_3823") + %"$gasadd_3825" = add i64 %"$_literal_cost_call_3824", 0 + %"$gasrem_3826" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3827" = icmp ugt i64 %"$gasadd_3825", %"$gasrem_3826" + br i1 %"$gascmp_3827", label %"$out_of_gas_3828", label %"$have_gas_3829" + +"$out_of_gas_3828": ; preds = %"$have_gas_3814" + call void @_out_of_gas() + br label %"$have_gas_3829" + +"$have_gas_3829": ; preds = %"$out_of_gas_3828", %"$have_gas_3814" + %"$consume_3830" = sub i64 %"$gasrem_3826", %"$gasadd_3825" + store i64 %"$consume_3830", i64* @_gasrem, align 8 + %"$gasrem_3831" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3832" = icmp ugt i64 1, %"$gasrem_3831" + br i1 %"$gascmp_3832", label %"$out_of_gas_3833", label %"$have_gas_3834" + +"$out_of_gas_3833": ; preds = %"$have_gas_3829" + call void @_out_of_gas() + br label %"$have_gas_3834" + +"$have_gas_3834": ; preds = %"$out_of_gas_3833", %"$have_gas_3829" + %"$consume_3835" = sub i64 %"$gasrem_3831", 1 + store i64 %"$consume_3835", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_3836" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3837" = icmp ugt i64 1, %"$gasrem_3836" + br i1 %"$gascmp_3837", label %"$out_of_gas_3838", label %"$have_gas_3839" + +"$out_of_gas_3838": ; preds = %"$have_gas_3834" + call void @_out_of_gas() + br label %"$have_gas_3839" + +"$have_gas_3839": ; preds = %"$out_of_gas_3838", %"$have_gas_3834" + %"$consume_3840" = sub i64 %"$gasrem_3836", 1 + store i64 %"$consume_3840", i64* @_gasrem, align 8 + %"$msgobj_3841_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3841_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3841_salloc_load", i64 125) + %"$msgobj_3841_salloc" = bitcast i8* %"$msgobj_3841_salloc_salloc" to [125 x i8]* + %"$msgobj_3841" = bitcast [125 x i8]* %"$msgobj_3841_salloc" to i8* + store i8 3, i8* %"$msgobj_3841", align 1 + %"$msgobj_fname_3843" = getelementptr i8, i8* %"$msgobj_3841", i32 1 + %"$msgobj_fname_3844" = bitcast i8* %"$msgobj_fname_3843" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3842", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3844", align 8 + %"$msgobj_td_3845" = getelementptr i8, i8* %"$msgobj_3841", i32 17 + %"$msgobj_td_3846" = bitcast i8* %"$msgobj_td_3845" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3846", align 8 + %"$support_contract_3847" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_3848" = getelementptr i8, i8* %"$msgobj_3841", i32 25 + %"$msgobj_v_3849" = bitcast i8* %"$msgobj_v_3848" to [20 x i8]* + store [20 x i8] %"$support_contract_3847", [20 x i8]* %"$msgobj_v_3849", align 1 + %"$msgobj_fname_3851" = getelementptr i8, i8* %"$msgobj_3841", i32 45 + %"$msgobj_fname_3852" = bitcast i8* %"$msgobj_fname_3851" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3850", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3852", align 8 + %"$msgobj_td_3853" = getelementptr i8, i8* %"$msgobj_3841", i32 61 + %"$msgobj_td_3854" = bitcast i8* %"$msgobj_td_3853" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3854", align 8 + %"$msgobj_v_3856" = getelementptr i8, i8* %"$msgobj_3841", i32 69 + %"$msgobj_v_3857" = bitcast i8* %"$msgobj_v_3856" to %String* + store %String { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"$stringlit_3855", i32 0, i32 0), i32 26 }, %String* %"$msgobj_v_3857", align 8 + %"$msgobj_fname_3859" = getelementptr i8, i8* %"$msgobj_3841", i32 85 + %"$msgobj_fname_3860" = bitcast i8* %"$msgobj_fname_3859" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3858", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3860", align 8 + %"$msgobj_td_3861" = getelementptr i8, i8* %"$msgobj_3841", i32 101 + %"$msgobj_td_3862" = bitcast i8* %"$msgobj_td_3861" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3862", align 8 + %"$amount_3863" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_3864" = getelementptr i8, i8* %"$msgobj_3841", i32 109 + %"$msgobj_v_3865" = bitcast i8* %"$msgobj_v_3864" to %Uint128* + store %Uint128 %"$amount_3863", %Uint128* %"$msgobj_v_3865", align 8 + store i8* %"$msgobj_3841", i8** %msg1, align 8 + %"$gasrem_3867" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3868" = icmp ugt i64 1, %"$gasrem_3867" + br i1 %"$gascmp_3868", label %"$out_of_gas_3869", label %"$have_gas_3870" + +"$out_of_gas_3869": ; preds = %"$have_gas_3839" + call void @_out_of_gas() + br label %"$have_gas_3870" + +"$have_gas_3870": ; preds = %"$out_of_gas_3869", %"$have_gas_3839" + %"$consume_3871" = sub i64 %"$gasrem_3867", 1 + store i64 %"$consume_3871", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_3872" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3873" = icmp ugt i64 1, %"$gasrem_3872" + br i1 %"$gascmp_3873", label %"$out_of_gas_3874", label %"$have_gas_3875" + +"$out_of_gas_3874": ; preds = %"$have_gas_3870" + call void @_out_of_gas() + br label %"$have_gas_3875" + +"$have_gas_3875": ; preds = %"$out_of_gas_3874", %"$have_gas_3870" + %"$consume_3876" = sub i64 %"$gasrem_3872", 1 + store i64 %"$consume_3876", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_43" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3877" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3878" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3877", 0 + %"$accounting_tests.one_msg_envptr_3879" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3877", 1 + %"$msg1_3880" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_3881" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3878"(i8* %"$accounting_tests.one_msg_envptr_3879", i8* %"$msg1_3880") + store %TName_List_Message* %"$accounting_tests.one_msg_call_3881", %TName_List_Message** %"$accounting_tests.one_msg_43", align 8 + %"$$accounting_tests.one_msg_43_3882" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_43", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_43_3882", %TName_List_Message** %msgs1, align 8 + %"$msgs1_3883" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_3883_3884" = bitcast %TName_List_Message* %"$msgs1_3883" to i8* + %"$_literal_cost_call_3885" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_3883_3884") + %"$gasrem_3886" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3887" = icmp ugt i64 %"$_literal_cost_call_3885", %"$gasrem_3886" + br i1 %"$gascmp_3887", label %"$out_of_gas_3888", label %"$have_gas_3889" + +"$out_of_gas_3888": ; preds = %"$have_gas_3875" + call void @_out_of_gas() + br label %"$have_gas_3889" + +"$have_gas_3889": ; preds = %"$out_of_gas_3888", %"$have_gas_3875" + %"$consume_3890" = sub i64 %"$gasrem_3886", %"$_literal_cost_call_3885" + store i64 %"$consume_3890", i64* @_gasrem, align 8 + %"$execptr_load_3891" = load i8*, i8** @_execptr, align 8 + %"$msgs1_3892" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_3891", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_3892") + %"$gasrem_3893" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3894" = icmp ugt i64 1, %"$gasrem_3893" + br i1 %"$gascmp_3894", label %"$out_of_gas_3895", label %"$have_gas_3896" + +"$out_of_gas_3895": ; preds = %"$have_gas_3889" + call void @_out_of_gas() + br label %"$have_gas_3896" + +"$have_gas_3896": ; preds = %"$out_of_gas_3895", %"$have_gas_3889" + %"$consume_3897" = sub i64 %"$gasrem_3893", 1 + store i64 %"$consume_3897", i64* @_gasrem, align 8 + %expected_balance = alloca %Uint128, align 8 + %"$bal_3898" = load %Uint128, %Uint128* %bal, align 8 + %"$amount_3899" = load %Uint128, %Uint128* %amount, align 8 + %"$sub_call_3900" = call %Uint128 @_sub_Uint128(%Uint128 %"$bal_3898", %Uint128 %"$amount_3899") + store %Uint128 %"$sub_call_3900", %Uint128* %expected_balance, align 8 + %"$gasrem_3901" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3902" = icmp ugt i64 1, %"$gasrem_3901" + br i1 %"$gascmp_3902", label %"$out_of_gas_3903", label %"$have_gas_3904" + +"$out_of_gas_3903": ; preds = %"$have_gas_3896" + call void @_out_of_gas() + br label %"$have_gas_3904" + +"$have_gas_3904": ; preds = %"$out_of_gas_3903", %"$have_gas_3896" + %"$consume_3905" = sub i64 %"$gasrem_3901", 1 + store i64 %"$consume_3905", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_3906" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3907" = icmp ugt i64 1, %"$gasrem_3906" + br i1 %"$gascmp_3907", label %"$out_of_gas_3908", label %"$have_gas_3909" + +"$out_of_gas_3908": ; preds = %"$have_gas_3904" + call void @_out_of_gas() + br label %"$have_gas_3909" + +"$have_gas_3909": ; preds = %"$out_of_gas_3908", %"$have_gas_3904" + %"$consume_3910" = sub i64 %"$gasrem_3906", 1 + store i64 %"$consume_3910", i64* @_gasrem, align 8 + %"$msgobj_3911_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_3911_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_3911_salloc_load", i64 165) + %"$msgobj_3911_salloc" = bitcast i8* %"$msgobj_3911_salloc_salloc" to [165 x i8]* + %"$msgobj_3911" = bitcast [165 x i8]* %"$msgobj_3911_salloc" to i8* + store i8 4, i8* %"$msgobj_3911", align 1 + %"$msgobj_fname_3913" = getelementptr i8, i8* %"$msgobj_3911", i32 1 + %"$msgobj_fname_3914" = bitcast i8* %"$msgobj_fname_3913" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_3912", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_3914", align 8 + %"$msgobj_td_3915" = getelementptr i8, i8* %"$msgobj_3911", i32 17 + %"$msgobj_td_3916" = bitcast i8* %"$msgobj_td_3915" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_3916", align 8 + %"$_this_address_3917" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_3918" = getelementptr i8, i8* %"$msgobj_3911", i32 25 + %"$msgobj_v_3919" = bitcast i8* %"$msgobj_v_3918" to [20 x i8]* + store [20 x i8] %"$_this_address_3917", [20 x i8]* %"$msgobj_v_3919", align 1 + %"$msgobj_fname_3921" = getelementptr i8, i8* %"$msgobj_3911", i32 45 + %"$msgobj_fname_3922" = bitcast i8* %"$msgobj_fname_3921" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_3920", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_3922", align 8 + %"$msgobj_td_3923" = getelementptr i8, i8* %"$msgobj_3911", i32 61 + %"$msgobj_td_3924" = bitcast i8* %"$msgobj_td_3923" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_3924", align 8 + %"$msgobj_v_3926" = getelementptr i8, i8* %"$msgobj_3911", i32 69 + %"$msgobj_v_3927" = bitcast i8* %"$msgobj_v_3926" to %String* + store %String { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$stringlit_3925", i32 0, i32 0), i32 18 }, %String* %"$msgobj_v_3927", align 8 + %"$msgobj_fname_3929" = getelementptr i8, i8* %"$msgobj_3911", i32 85 + %"$msgobj_fname_3930" = bitcast i8* %"$msgobj_fname_3929" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_3928", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_3930", align 8 + %"$msgobj_td_3931" = getelementptr i8, i8* %"$msgobj_3911", i32 101 + %"$msgobj_td_3932" = bitcast i8* %"$msgobj_td_3931" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3932", align 8 + %"$msgobj_v_3933" = getelementptr i8, i8* %"$msgobj_3911", i32 109 + %"$msgobj_v_3934" = bitcast i8* %"$msgobj_v_3933" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_3934", align 8 + %"$msgobj_fname_3936" = getelementptr i8, i8* %"$msgobj_3911", i32 125 + %"$msgobj_fname_3937" = bitcast i8* %"$msgobj_fname_3936" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_3935", i32 0, i32 0), i32 16 }, %String* %"$msgobj_fname_3937", align 8 + %"$msgobj_td_3938" = getelementptr i8, i8* %"$msgobj_3911", i32 141 + %"$msgobj_td_3939" = bitcast i8* %"$msgobj_td_3938" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_3939", align 8 + %"$expected_balance_3940" = load %Uint128, %Uint128* %expected_balance, align 8 + %"$msgobj_v_3941" = getelementptr i8, i8* %"$msgobj_3911", i32 149 + %"$msgobj_v_3942" = bitcast i8* %"$msgobj_v_3941" to %Uint128* + store %Uint128 %"$expected_balance_3940", %Uint128* %"$msgobj_v_3942", align 8 + store i8* %"$msgobj_3911", i8** %msg2, align 8 + %"$gasrem_3944" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3945" = icmp ugt i64 1, %"$gasrem_3944" + br i1 %"$gascmp_3945", label %"$out_of_gas_3946", label %"$have_gas_3947" + +"$out_of_gas_3946": ; preds = %"$have_gas_3909" + call void @_out_of_gas() + br label %"$have_gas_3947" + +"$have_gas_3947": ; preds = %"$out_of_gas_3946", %"$have_gas_3909" + %"$consume_3948" = sub i64 %"$gasrem_3944", 1 + store i64 %"$consume_3948", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_3949" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3950" = icmp ugt i64 1, %"$gasrem_3949" + br i1 %"$gascmp_3950", label %"$out_of_gas_3951", label %"$have_gas_3952" + +"$out_of_gas_3951": ; preds = %"$have_gas_3947" + call void @_out_of_gas() + br label %"$have_gas_3952" + +"$have_gas_3952": ; preds = %"$out_of_gas_3951", %"$have_gas_3947" + %"$consume_3953" = sub i64 %"$gasrem_3949", 1 + store i64 %"$consume_3953", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_42" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_3954" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_3955" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3954", 0 + %"$accounting_tests.one_msg_envptr_3956" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_3954", 1 + %"$msg2_3957" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_3958" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_3955"(i8* %"$accounting_tests.one_msg_envptr_3956", i8* %"$msg2_3957") + store %TName_List_Message* %"$accounting_tests.one_msg_call_3958", %TName_List_Message** %"$accounting_tests.one_msg_42", align 8 + %"$$accounting_tests.one_msg_42_3959" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_42", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_42_3959", %TName_List_Message** %msgs2, align 8 + %"$msgs2_3960" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_3960_3961" = bitcast %TName_List_Message* %"$msgs2_3960" to i8* + %"$_literal_cost_call_3962" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_3960_3961") + %"$gasrem_3963" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3964" = icmp ugt i64 %"$_literal_cost_call_3962", %"$gasrem_3963" + br i1 %"$gascmp_3964", label %"$out_of_gas_3965", label %"$have_gas_3966" + +"$out_of_gas_3965": ; preds = %"$have_gas_3952" + call void @_out_of_gas() + br label %"$have_gas_3966" + +"$have_gas_3966": ; preds = %"$out_of_gas_3965", %"$have_gas_3952" + %"$consume_3967" = sub i64 %"$gasrem_3963", %"$_literal_cost_call_3962" + store i64 %"$consume_3967", i64* @_gasrem, align 8 + %"$execptr_load_3968" = load i8*, i8** @_execptr, align 8 + %"$msgs2_3969" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_3968", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_3969") + ret void +} + +define void @Test_Send_12(i8* %0) { +entry: + %"$_amount_3971" = getelementptr i8, i8* %0, i32 0 + %"$_amount_3972" = bitcast i8* %"$_amount_3971" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_3972", align 8 + %"$_origin_3973" = getelementptr i8, i8* %0, i32 16 + %"$_origin_3974" = bitcast i8* %"$_origin_3973" to [20 x i8]* + %"$_sender_3975" = getelementptr i8, i8* %0, i32 36 + %"$_sender_3976" = bitcast i8* %"$_sender_3975" to [20 x i8]* + call void @"$Test_Send_12_3798"(%Uint128 %_amount, [20 x i8]* %"$_origin_3974", [20 x i8]* %"$_sender_3976") + ret void +} + +define internal void @"$Test_Send_13_3977"(%Uint128 %_amount, [20 x i8]* %"$_origin_3978", [20 x i8]* %"$_sender_3979") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_3978", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_3979", align 1 + %"$gasrem_3980" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3981" = icmp ugt i64 1, %"$gasrem_3980" + br i1 %"$gascmp_3981", label %"$out_of_gas_3982", label %"$have_gas_3983" + +"$out_of_gas_3982": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_3983" + +"$have_gas_3983": ; preds = %"$out_of_gas_3982", %entry + %"$consume_3984" = sub i64 %"$gasrem_3980", 1 + store i64 %"$consume_3984", i64* @_gasrem, align 8 + %"$AssertReset__origin_3985" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_3985", align 1 + %"$AssertReset__sender_3986" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_3986", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_3985", [20 x i8]* %"$AssertReset__sender_3986") + %amount = alloca %Uint128, align 8 + %"$execptr_load_3988" = load i8*, i8** @_execptr, align 8 + %"$amount_call_3989" = call i8* @_fetch_field(i8* %"$execptr_load_3988", i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$outgoing_amount_3987", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$amount_3990" = bitcast i8* %"$amount_call_3989" to %Uint128* + %"$amount_3991" = load %Uint128, %Uint128* %"$amount_3990", align 8 + store %Uint128 %"$amount_3991", %Uint128* %amount, align 8 + %"$_literal_cost_amount_3992" = alloca %Uint128, align 8 + %"$amount_3993" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_3993", %Uint128* %"$_literal_cost_amount_3992", align 8 + %"$$_literal_cost_amount_3992_3994" = bitcast %Uint128* %"$_literal_cost_amount_3992" to i8* + %"$_literal_cost_call_3995" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_3992_3994") + %"$gasadd_3996" = add i64 %"$_literal_cost_call_3995", 0 + %"$gasrem_3997" = load i64, i64* @_gasrem, align 8 + %"$gascmp_3998" = icmp ugt i64 %"$gasadd_3996", %"$gasrem_3997" + br i1 %"$gascmp_3998", label %"$out_of_gas_3999", label %"$have_gas_4000" + +"$out_of_gas_3999": ; preds = %"$have_gas_3983" + call void @_out_of_gas() + br label %"$have_gas_4000" + +"$have_gas_4000": ; preds = %"$out_of_gas_3999", %"$have_gas_3983" + %"$consume_4001" = sub i64 %"$gasrem_3997", %"$gasadd_3996" + store i64 %"$consume_4001", i64* @_gasrem, align 8 + %"$gasrem_4002" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4003" = icmp ugt i64 1, %"$gasrem_4002" + br i1 %"$gascmp_4003", label %"$out_of_gas_4004", label %"$have_gas_4005" + +"$out_of_gas_4004": ; preds = %"$have_gas_4000" + call void @_out_of_gas() + br label %"$have_gas_4005" + +"$have_gas_4005": ; preds = %"$out_of_gas_4004", %"$have_gas_4000" + %"$consume_4006" = sub i64 %"$gasrem_4002", 1 + store i64 %"$consume_4006", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_4007" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4008" = icmp ugt i64 1, %"$gasrem_4007" + br i1 %"$gascmp_4008", label %"$out_of_gas_4009", label %"$have_gas_4010" + +"$out_of_gas_4009": ; preds = %"$have_gas_4005" + call void @_out_of_gas() + br label %"$have_gas_4010" + +"$have_gas_4010": ; preds = %"$out_of_gas_4009", %"$have_gas_4005" + %"$consume_4011" = sub i64 %"$gasrem_4007", 1 + store i64 %"$consume_4011", i64* @_gasrem, align 8 + %"$msgobj_4012_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_4012_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_4012_salloc_load", i64 125) + %"$msgobj_4012_salloc" = bitcast i8* %"$msgobj_4012_salloc_salloc" to [125 x i8]* + %"$msgobj_4012" = bitcast [125 x i8]* %"$msgobj_4012_salloc" to i8* + store i8 3, i8* %"$msgobj_4012", align 1 + %"$msgobj_fname_4014" = getelementptr i8, i8* %"$msgobj_4012", i32 1 + %"$msgobj_fname_4015" = bitcast i8* %"$msgobj_fname_4014" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_4013", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_4015", align 8 + %"$msgobj_td_4016" = getelementptr i8, i8* %"$msgobj_4012", i32 17 + %"$msgobj_td_4017" = bitcast i8* %"$msgobj_td_4016" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_4017", align 8 + %"$support_contract_4018" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_4019" = getelementptr i8, i8* %"$msgobj_4012", i32 25 + %"$msgobj_v_4020" = bitcast i8* %"$msgobj_v_4019" to [20 x i8]* + store [20 x i8] %"$support_contract_4018", [20 x i8]* %"$msgobj_v_4020", align 1 + %"$msgobj_fname_4022" = getelementptr i8, i8* %"$msgobj_4012", i32 45 + %"$msgobj_fname_4023" = bitcast i8* %"$msgobj_fname_4022" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_4021", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_4023", align 8 + %"$msgobj_td_4024" = getelementptr i8, i8* %"$msgobj_4012", i32 61 + %"$msgobj_td_4025" = bitcast i8* %"$msgobj_td_4024" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_4025", align 8 + %"$msgobj_v_4027" = getelementptr i8, i8* %"$msgobj_4012", i32 69 + %"$msgobj_v_4028" = bitcast i8* %"$msgobj_v_4027" to %String* + store %String { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"$stringlit_4026", i32 0, i32 0), i32 26 }, %String* %"$msgobj_v_4028", align 8 + %"$msgobj_fname_4030" = getelementptr i8, i8* %"$msgobj_4012", i32 85 + %"$msgobj_fname_4031" = bitcast i8* %"$msgobj_fname_4030" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_4029", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_4031", align 8 + %"$msgobj_td_4032" = getelementptr i8, i8* %"$msgobj_4012", i32 101 + %"$msgobj_td_4033" = bitcast i8* %"$msgobj_td_4032" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_4033", align 8 + %"$amount_4034" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_4035" = getelementptr i8, i8* %"$msgobj_4012", i32 109 + %"$msgobj_v_4036" = bitcast i8* %"$msgobj_v_4035" to %Uint128* + store %Uint128 %"$amount_4034", %Uint128* %"$msgobj_v_4036", align 8 + store i8* %"$msgobj_4012", i8** %msg1, align 8 + %"$gasrem_4038" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4039" = icmp ugt i64 1, %"$gasrem_4038" + br i1 %"$gascmp_4039", label %"$out_of_gas_4040", label %"$have_gas_4041" + +"$out_of_gas_4040": ; preds = %"$have_gas_4010" + call void @_out_of_gas() + br label %"$have_gas_4041" + +"$have_gas_4041": ; preds = %"$out_of_gas_4040", %"$have_gas_4010" + %"$consume_4042" = sub i64 %"$gasrem_4038", 1 + store i64 %"$consume_4042", i64* @_gasrem, align 8 + %msgs1 = alloca %TName_List_Message*, align 8 + %"$gasrem_4043" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4044" = icmp ugt i64 1, %"$gasrem_4043" + br i1 %"$gascmp_4044", label %"$out_of_gas_4045", label %"$have_gas_4046" + +"$out_of_gas_4045": ; preds = %"$have_gas_4041" + call void @_out_of_gas() + br label %"$have_gas_4046" + +"$have_gas_4046": ; preds = %"$out_of_gas_4045", %"$have_gas_4041" + %"$consume_4047" = sub i64 %"$gasrem_4043", 1 + store i64 %"$consume_4047", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_45" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_4048" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_4049" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_4048", 0 + %"$accounting_tests.one_msg_envptr_4050" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_4048", 1 + %"$msg1_4051" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_4052" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_4049"(i8* %"$accounting_tests.one_msg_envptr_4050", i8* %"$msg1_4051") + store %TName_List_Message* %"$accounting_tests.one_msg_call_4052", %TName_List_Message** %"$accounting_tests.one_msg_45", align 8 + %"$$accounting_tests.one_msg_45_4053" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_45", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_45_4053", %TName_List_Message** %msgs1, align 8 + %"$msgs1_4054" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + %"$$msgs1_4054_4055" = bitcast %TName_List_Message* %"$msgs1_4054" to i8* + %"$_literal_cost_call_4056" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs1_4054_4055") + %"$gasrem_4057" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4058" = icmp ugt i64 %"$_literal_cost_call_4056", %"$gasrem_4057" + br i1 %"$gascmp_4058", label %"$out_of_gas_4059", label %"$have_gas_4060" + +"$out_of_gas_4059": ; preds = %"$have_gas_4046" + call void @_out_of_gas() + br label %"$have_gas_4060" + +"$have_gas_4060": ; preds = %"$out_of_gas_4059", %"$have_gas_4046" + %"$consume_4061" = sub i64 %"$gasrem_4057", %"$_literal_cost_call_4056" + store i64 %"$consume_4061", i64* @_gasrem, align 8 + %"$execptr_load_4062" = load i8*, i8** @_execptr, align 8 + %"$msgs1_4063" = load %TName_List_Message*, %TName_List_Message** %msgs1, align 8 + call void @_send(i8* %"$execptr_load_4062", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs1_4063") + %support_bal = alloca %Uint128, align 8 + %"$execptr_load_4065" = load i8*, i8** @_execptr, align 8 + %"$support_bal_support_contract_4066" = alloca [20 x i8], align 1 + %"$support_contract_4067" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + store [20 x i8] %"$support_contract_4067", [20 x i8]* %"$support_bal_support_contract_4066", align 1 + %"$support_bal_call_4068" = call i8* @_fetch_remote_field(i8* %"$execptr_load_4065", [20 x i8]* %"$support_bal_support_contract_4066", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_4064", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$support_bal_4069" = bitcast i8* %"$support_bal_call_4068" to %Uint128* + %"$support_bal_4070" = load %Uint128, %Uint128* %"$support_bal_4069", align 8 + store %Uint128 %"$support_bal_4070", %Uint128* %support_bal, align 8 + %"$_literal_cost_support_bal_4071" = alloca %Uint128, align 8 + %"$support_bal_4072" = load %Uint128, %Uint128* %support_bal, align 8 + store %Uint128 %"$support_bal_4072", %Uint128* %"$_literal_cost_support_bal_4071", align 8 + %"$$_literal_cost_support_bal_4071_4073" = bitcast %Uint128* %"$_literal_cost_support_bal_4071" to i8* + %"$_literal_cost_call_4074" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_support_bal_4071_4073") + %"$gasadd_4075" = add i64 %"$_literal_cost_call_4074", 0 + %"$gasrem_4076" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4077" = icmp ugt i64 %"$gasadd_4075", %"$gasrem_4076" + br i1 %"$gascmp_4077", label %"$out_of_gas_4078", label %"$have_gas_4079" + +"$out_of_gas_4078": ; preds = %"$have_gas_4060" + call void @_out_of_gas() + br label %"$have_gas_4079" + +"$have_gas_4079": ; preds = %"$out_of_gas_4078", %"$have_gas_4060" + %"$consume_4080" = sub i64 %"$gasrem_4076", %"$gasadd_4075" + store i64 %"$consume_4080", i64* @_gasrem, align 8 + %"$gasrem_4081" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4082" = icmp ugt i64 1, %"$gasrem_4081" + br i1 %"$gascmp_4082", label %"$out_of_gas_4083", label %"$have_gas_4084" + +"$out_of_gas_4083": ; preds = %"$have_gas_4079" + call void @_out_of_gas() + br label %"$have_gas_4084" + +"$have_gas_4084": ; preds = %"$out_of_gas_4083", %"$have_gas_4079" + %"$consume_4085" = sub i64 %"$gasrem_4081", 1 + store i64 %"$consume_4085", i64* @_gasrem, align 8 + %expected_balance = alloca %Uint128, align 8 + %"$support_bal_4086" = load %Uint128, %Uint128* %support_bal, align 8 + %"$amount_4087" = load %Uint128, %Uint128* %amount, align 8 + %"$add_call_4088" = call %Uint128 @_add_Uint128(%Uint128 %"$support_bal_4086", %Uint128 %"$amount_4087") + store %Uint128 %"$add_call_4088", %Uint128* %expected_balance, align 8 + %"$gasrem_4089" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4090" = icmp ugt i64 1, %"$gasrem_4089" + br i1 %"$gascmp_4090", label %"$out_of_gas_4091", label %"$have_gas_4092" + +"$out_of_gas_4091": ; preds = %"$have_gas_4084" + call void @_out_of_gas() + br label %"$have_gas_4092" + +"$have_gas_4092": ; preds = %"$out_of_gas_4091", %"$have_gas_4084" + %"$consume_4093" = sub i64 %"$gasrem_4089", 1 + store i64 %"$consume_4093", i64* @_gasrem, align 8 + %msg2 = alloca i8*, align 8 + %"$gasrem_4094" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4095" = icmp ugt i64 1, %"$gasrem_4094" + br i1 %"$gascmp_4095", label %"$out_of_gas_4096", label %"$have_gas_4097" + +"$out_of_gas_4096": ; preds = %"$have_gas_4092" + call void @_out_of_gas() + br label %"$have_gas_4097" + +"$have_gas_4097": ; preds = %"$out_of_gas_4096", %"$have_gas_4092" + %"$consume_4098" = sub i64 %"$gasrem_4094", 1 + store i64 %"$consume_4098", i64* @_gasrem, align 8 + %"$msgobj_4099_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_4099_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_4099_salloc_load", i64 165) + %"$msgobj_4099_salloc" = bitcast i8* %"$msgobj_4099_salloc_salloc" to [165 x i8]* + %"$msgobj_4099" = bitcast [165 x i8]* %"$msgobj_4099_salloc" to i8* + store i8 4, i8* %"$msgobj_4099", align 1 + %"$msgobj_fname_4101" = getelementptr i8, i8* %"$msgobj_4099", i32 1 + %"$msgobj_fname_4102" = bitcast i8* %"$msgobj_fname_4101" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_4100", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_4102", align 8 + %"$msgobj_td_4103" = getelementptr i8, i8* %"$msgobj_4099", i32 17 + %"$msgobj_td_4104" = bitcast i8* %"$msgobj_td_4103" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_4104", align 8 + %"$_this_address_4105" = load [20 x i8], [20 x i8]* @_cparam__this_address, align 1 + %"$msgobj_v_4106" = getelementptr i8, i8* %"$msgobj_4099", i32 25 + %"$msgobj_v_4107" = bitcast i8* %"$msgobj_v_4106" to [20 x i8]* + store [20 x i8] %"$_this_address_4105", [20 x i8]* %"$msgobj_v_4107", align 1 + %"$msgobj_fname_4109" = getelementptr i8, i8* %"$msgobj_4099", i32 45 + %"$msgobj_fname_4110" = bitcast i8* %"$msgobj_fname_4109" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_4108", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_4110", align 8 + %"$msgobj_td_4111" = getelementptr i8, i8* %"$msgobj_4099", i32 61 + %"$msgobj_td_4112" = bitcast i8* %"$msgobj_td_4111" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_4112", align 8 + %"$msgobj_v_4114" = getelementptr i8, i8* %"$msgobj_4099", i32 69 + %"$msgobj_v_4115" = bitcast i8* %"$msgobj_v_4114" to %String* + store %String { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$stringlit_4113", i32 0, i32 0), i32 21 }, %String* %"$msgobj_v_4115", align 8 + %"$msgobj_fname_4117" = getelementptr i8, i8* %"$msgobj_4099", i32 85 + %"$msgobj_fname_4118" = bitcast i8* %"$msgobj_fname_4117" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_4116", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_4118", align 8 + %"$msgobj_td_4119" = getelementptr i8, i8* %"$msgobj_4099", i32 101 + %"$msgobj_td_4120" = bitcast i8* %"$msgobj_td_4119" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_4120", align 8 + %"$msgobj_v_4121" = getelementptr i8, i8* %"$msgobj_4099", i32 109 + %"$msgobj_v_4122" = bitcast i8* %"$msgobj_v_4121" to %Uint128* + store %Uint128 zeroinitializer, %Uint128* %"$msgobj_v_4122", align 8 + %"$msgobj_fname_4124" = getelementptr i8, i8* %"$msgobj_4099", i32 125 + %"$msgobj_fname_4125" = bitcast i8* %"$msgobj_fname_4124" to %String* + store %String { i8* getelementptr inbounds ([16 x i8], [16 x i8]* @"$stringlit_4123", i32 0, i32 0), i32 16 }, %String* %"$msgobj_fname_4125", align 8 + %"$msgobj_td_4126" = getelementptr i8, i8* %"$msgobj_4099", i32 141 + %"$msgobj_td_4127" = bitcast i8* %"$msgobj_td_4126" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_4127", align 8 + %"$expected_balance_4128" = load %Uint128, %Uint128* %expected_balance, align 8 + %"$msgobj_v_4129" = getelementptr i8, i8* %"$msgobj_4099", i32 149 + %"$msgobj_v_4130" = bitcast i8* %"$msgobj_v_4129" to %Uint128* + store %Uint128 %"$expected_balance_4128", %Uint128* %"$msgobj_v_4130", align 8 + store i8* %"$msgobj_4099", i8** %msg2, align 8 + %"$gasrem_4132" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4133" = icmp ugt i64 1, %"$gasrem_4132" + br i1 %"$gascmp_4133", label %"$out_of_gas_4134", label %"$have_gas_4135" + +"$out_of_gas_4134": ; preds = %"$have_gas_4097" + call void @_out_of_gas() + br label %"$have_gas_4135" + +"$have_gas_4135": ; preds = %"$out_of_gas_4134", %"$have_gas_4097" + %"$consume_4136" = sub i64 %"$gasrem_4132", 1 + store i64 %"$consume_4136", i64* @_gasrem, align 8 + %msgs2 = alloca %TName_List_Message*, align 8 + %"$gasrem_4137" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4138" = icmp ugt i64 1, %"$gasrem_4137" + br i1 %"$gascmp_4138", label %"$out_of_gas_4139", label %"$have_gas_4140" + +"$out_of_gas_4139": ; preds = %"$have_gas_4135" + call void @_out_of_gas() + br label %"$have_gas_4140" + +"$have_gas_4140": ; preds = %"$out_of_gas_4139", %"$have_gas_4135" + %"$consume_4141" = sub i64 %"$gasrem_4137", 1 + store i64 %"$consume_4141", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_44" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_4142" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_4143" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_4142", 0 + %"$accounting_tests.one_msg_envptr_4144" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_4142", 1 + %"$msg2_4145" = load i8*, i8** %msg2, align 8 + %"$accounting_tests.one_msg_call_4146" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_4143"(i8* %"$accounting_tests.one_msg_envptr_4144", i8* %"$msg2_4145") + store %TName_List_Message* %"$accounting_tests.one_msg_call_4146", %TName_List_Message** %"$accounting_tests.one_msg_44", align 8 + %"$$accounting_tests.one_msg_44_4147" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_44", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_44_4147", %TName_List_Message** %msgs2, align 8 + %"$msgs2_4148" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + %"$$msgs2_4148_4149" = bitcast %TName_List_Message* %"$msgs2_4148" to i8* + %"$_literal_cost_call_4150" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs2_4148_4149") + %"$gasrem_4151" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4152" = icmp ugt i64 %"$_literal_cost_call_4150", %"$gasrem_4151" + br i1 %"$gascmp_4152", label %"$out_of_gas_4153", label %"$have_gas_4154" + +"$out_of_gas_4153": ; preds = %"$have_gas_4140" + call void @_out_of_gas() + br label %"$have_gas_4154" + +"$have_gas_4154": ; preds = %"$out_of_gas_4153", %"$have_gas_4140" + %"$consume_4155" = sub i64 %"$gasrem_4151", %"$_literal_cost_call_4150" + store i64 %"$consume_4155", i64* @_gasrem, align 8 + %"$execptr_load_4156" = load i8*, i8** @_execptr, align 8 + %"$msgs2_4157" = load %TName_List_Message*, %TName_List_Message** %msgs2, align 8 + call void @_send(i8* %"$execptr_load_4156", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs2_4157") + ret void +} + +define void @Test_Send_13(i8* %0) { +entry: + %"$_amount_4159" = getelementptr i8, i8* %0, i32 0 + %"$_amount_4160" = bitcast i8* %"$_amount_4159" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_4160", align 8 + %"$_origin_4161" = getelementptr i8, i8* %0, i32 16 + %"$_origin_4162" = bitcast i8* %"$_origin_4161" to [20 x i8]* + %"$_sender_4163" = getelementptr i8, i8* %0, i32 36 + %"$_sender_4164" = bitcast i8* %"$_sender_4163" to [20 x i8]* + call void @"$Test_Send_13_3977"(%Uint128 %_amount, [20 x i8]* %"$_origin_4162", [20 x i8]* %"$_sender_4164") + ret void +} + +define internal void @"$Test_Send_14_4165"(%Uint128 %_amount, [20 x i8]* %"$_origin_4166", [20 x i8]* %"$_sender_4167") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_4166", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_4167", align 1 + %"$gasrem_4168" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4169" = icmp ugt i64 1, %"$gasrem_4168" + br i1 %"$gascmp_4169", label %"$out_of_gas_4170", label %"$have_gas_4171" + +"$out_of_gas_4170": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_4171" + +"$have_gas_4171": ; preds = %"$out_of_gas_4170", %entry + %"$consume_4172" = sub i64 %"$gasrem_4168", 1 + store i64 %"$consume_4172", i64* @_gasrem, align 8 + %"$AssertReset__origin_4173" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$AssertReset__origin_4173", align 1 + %"$AssertReset__sender_4174" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$AssertReset__sender_4174", align 1 + call void @"$AssertReset_930"(%Uint128 %_amount, [20 x i8]* %"$AssertReset__origin_4173", [20 x i8]* %"$AssertReset__sender_4174") + %amount = alloca %Uint128, align 8 + %"$execptr_load_4176" = load i8*, i8** @_execptr, align 8 + %"$amount_call_4177" = call i8* @_fetch_field(i8* %"$execptr_load_4176", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_4175", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i32 0, i8* null, i32 1) + %"$amount_4178" = bitcast i8* %"$amount_call_4177" to %Uint128* + %"$amount_4179" = load %Uint128, %Uint128* %"$amount_4178", align 8 + store %Uint128 %"$amount_4179", %Uint128* %amount, align 8 + %"$_literal_cost_amount_4180" = alloca %Uint128, align 8 + %"$amount_4181" = load %Uint128, %Uint128* %amount, align 8 + store %Uint128 %"$amount_4181", %Uint128* %"$_literal_cost_amount_4180", align 8 + %"$$_literal_cost_amount_4180_4182" = bitcast %Uint128* %"$_literal_cost_amount_4180" to i8* + %"$_literal_cost_call_4183" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_99", i8* %"$$_literal_cost_amount_4180_4182") + %"$gasadd_4184" = add i64 %"$_literal_cost_call_4183", 0 + %"$gasrem_4185" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4186" = icmp ugt i64 %"$gasadd_4184", %"$gasrem_4185" + br i1 %"$gascmp_4186", label %"$out_of_gas_4187", label %"$have_gas_4188" + +"$out_of_gas_4187": ; preds = %"$have_gas_4171" + call void @_out_of_gas() + br label %"$have_gas_4188" + +"$have_gas_4188": ; preds = %"$out_of_gas_4187", %"$have_gas_4171" + %"$consume_4189" = sub i64 %"$gasrem_4185", %"$gasadd_4184" + store i64 %"$consume_4189", i64* @_gasrem, align 8 + %"$gasrem_4190" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4191" = icmp ugt i64 1, %"$gasrem_4190" + br i1 %"$gascmp_4191", label %"$out_of_gas_4192", label %"$have_gas_4193" + +"$out_of_gas_4192": ; preds = %"$have_gas_4188" + call void @_out_of_gas() + br label %"$have_gas_4193" + +"$have_gas_4193": ; preds = %"$out_of_gas_4192", %"$have_gas_4188" + %"$consume_4194" = sub i64 %"$gasrem_4190", 1 + store i64 %"$consume_4194", i64* @_gasrem, align 8 + %msg1 = alloca i8*, align 8 + %"$gasrem_4195" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4196" = icmp ugt i64 1, %"$gasrem_4195" + br i1 %"$gascmp_4196", label %"$out_of_gas_4197", label %"$have_gas_4198" + +"$out_of_gas_4197": ; preds = %"$have_gas_4193" + call void @_out_of_gas() + br label %"$have_gas_4198" + +"$have_gas_4198": ; preds = %"$out_of_gas_4197", %"$have_gas_4193" + %"$consume_4199" = sub i64 %"$gasrem_4195", 1 + store i64 %"$consume_4199", i64* @_gasrem, align 8 + %"$msgobj_4200_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_4200_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_4200_salloc_load", i64 125) + %"$msgobj_4200_salloc" = bitcast i8* %"$msgobj_4200_salloc_salloc" to [125 x i8]* + %"$msgobj_4200" = bitcast [125 x i8]* %"$msgobj_4200_salloc" to i8* + store i8 3, i8* %"$msgobj_4200", align 1 + %"$msgobj_fname_4202" = getelementptr i8, i8* %"$msgobj_4200", i32 1 + %"$msgobj_fname_4203" = bitcast i8* %"$msgobj_fname_4202" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_4201", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_4203", align 8 + %"$msgobj_td_4204" = getelementptr i8, i8* %"$msgobj_4200", i32 17 + %"$msgobj_td_4205" = bitcast i8* %"$msgobj_td_4204" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Bystr20_117", %_TyDescrTy_Typ** %"$msgobj_td_4205", align 8 + %"$support_contract_4206" = load [20 x i8], [20 x i8]* @_cparam_support_contract, align 1 + %"$msgobj_v_4207" = getelementptr i8, i8* %"$msgobj_4200", i32 25 + %"$msgobj_v_4208" = bitcast i8* %"$msgobj_v_4207" to [20 x i8]* + store [20 x i8] %"$support_contract_4206", [20 x i8]* %"$msgobj_v_4208", align 1 + %"$msgobj_fname_4210" = getelementptr i8, i8* %"$msgobj_4200", i32 45 + %"$msgobj_fname_4211" = bitcast i8* %"$msgobj_fname_4210" to %String* + store %String { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$stringlit_4209", i32 0, i32 0), i32 4 }, %String* %"$msgobj_fname_4211", align 8 + %"$msgobj_td_4212" = getelementptr i8, i8* %"$msgobj_4200", i32 61 + %"$msgobj_td_4213" = bitcast i8* %"$msgobj_td_4212" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_105", %_TyDescrTy_Typ** %"$msgobj_td_4213", align 8 + %"$msgobj_v_4215" = getelementptr i8, i8* %"$msgobj_4200", i32 69 + %"$msgobj_v_4216" = bitcast i8* %"$msgobj_v_4215" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_4214", i32 0, i32 0), i32 6 }, %String* %"$msgobj_v_4216", align 8 + %"$msgobj_fname_4218" = getelementptr i8, i8* %"$msgobj_4200", i32 85 + %"$msgobj_fname_4219" = bitcast i8* %"$msgobj_fname_4218" to %String* + store %String { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$stringlit_4217", i32 0, i32 0), i32 7 }, %String* %"$msgobj_fname_4219", align 8 + %"$msgobj_td_4220" = getelementptr i8, i8* %"$msgobj_4200", i32 101 + %"$msgobj_td_4221" = bitcast i8* %"$msgobj_td_4220" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_99", %_TyDescrTy_Typ** %"$msgobj_td_4221", align 8 + %"$amount_4222" = load %Uint128, %Uint128* %amount, align 8 + %"$msgobj_v_4223" = getelementptr i8, i8* %"$msgobj_4200", i32 109 + %"$msgobj_v_4224" = bitcast i8* %"$msgobj_v_4223" to %Uint128* + store %Uint128 %"$amount_4222", %Uint128* %"$msgobj_v_4224", align 8 + store i8* %"$msgobj_4200", i8** %msg1, align 8 + %"$gasrem_4226" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4227" = icmp ugt i64 1, %"$gasrem_4226" + br i1 %"$gascmp_4227", label %"$out_of_gas_4228", label %"$have_gas_4229" + +"$out_of_gas_4228": ; preds = %"$have_gas_4198" + call void @_out_of_gas() + br label %"$have_gas_4229" + +"$have_gas_4229": ; preds = %"$out_of_gas_4228", %"$have_gas_4198" + %"$consume_4230" = sub i64 %"$gasrem_4226", 1 + store i64 %"$consume_4230", i64* @_gasrem, align 8 + %msgs = alloca %TName_List_Message*, align 8 + %"$gasrem_4231" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4232" = icmp ugt i64 1, %"$gasrem_4231" + br i1 %"$gascmp_4232", label %"$out_of_gas_4233", label %"$have_gas_4234" + +"$out_of_gas_4233": ; preds = %"$have_gas_4229" + call void @_out_of_gas() + br label %"$have_gas_4234" + +"$have_gas_4234": ; preds = %"$out_of_gas_4233", %"$have_gas_4229" + %"$consume_4235" = sub i64 %"$gasrem_4231", 1 + store i64 %"$consume_4235", i64* @_gasrem, align 8 + %"$accounting_tests.one_msg_46" = alloca %TName_List_Message*, align 8 + %"$accounting_tests.one_msg_4236" = load { %TName_List_Message* (i8*, i8*)*, i8* }, { %TName_List_Message* (i8*, i8*)*, i8* }* @accounting_tests.one_msg, align 8 + %"$accounting_tests.one_msg_fptr_4237" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_4236", 0 + %"$accounting_tests.one_msg_envptr_4238" = extractvalue { %TName_List_Message* (i8*, i8*)*, i8* } %"$accounting_tests.one_msg_4236", 1 + %"$msg1_4239" = load i8*, i8** %msg1, align 8 + %"$accounting_tests.one_msg_call_4240" = call %TName_List_Message* %"$accounting_tests.one_msg_fptr_4237"(i8* %"$accounting_tests.one_msg_envptr_4238", i8* %"$msg1_4239") + store %TName_List_Message* %"$accounting_tests.one_msg_call_4240", %TName_List_Message** %"$accounting_tests.one_msg_46", align 8 + %"$$accounting_tests.one_msg_46_4241" = load %TName_List_Message*, %TName_List_Message** %"$accounting_tests.one_msg_46", align 8 + store %TName_List_Message* %"$$accounting_tests.one_msg_46_4241", %TName_List_Message** %msgs, align 8 + %"$msgs_4242" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + %"$$msgs_4242_4243" = bitcast %TName_List_Message* %"$msgs_4242" to i8* + %"$_literal_cost_call_4244" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", i8* %"$$msgs_4242_4243") + %"$gasrem_4245" = load i64, i64* @_gasrem, align 8 + %"$gascmp_4246" = icmp ugt i64 %"$_literal_cost_call_4244", %"$gasrem_4245" + br i1 %"$gascmp_4246", label %"$out_of_gas_4247", label %"$have_gas_4248" + +"$out_of_gas_4247": ; preds = %"$have_gas_4234" + call void @_out_of_gas() + br label %"$have_gas_4248" + +"$have_gas_4248": ; preds = %"$out_of_gas_4247", %"$have_gas_4234" + %"$consume_4249" = sub i64 %"$gasrem_4245", %"$_literal_cost_call_4244" + store i64 %"$consume_4249", i64* @_gasrem, align 8 + %"$execptr_load_4250" = load i8*, i8** @_execptr, align 8 + %"$msgs_4251" = load %TName_List_Message*, %TName_List_Message** %msgs, align 8 + call void @_send(i8* %"$execptr_load_4250", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_121", %TName_List_Message* %"$msgs_4251") + ret void +} + +define void @Test_Send_14(i8* %0) { +entry: + %"$_amount_4253" = getelementptr i8, i8* %0, i32 0 + %"$_amount_4254" = bitcast i8* %"$_amount_4253" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_4254", align 8 + %"$_origin_4255" = getelementptr i8, i8* %0, i32 16 + %"$_origin_4256" = bitcast i8* %"$_origin_4255" to [20 x i8]* + %"$_sender_4257" = getelementptr i8, i8* %0, i32 36 + %"$_sender_4258" = bitcast i8* %"$_sender_4257" to [20 x i8]* + call void @"$Test_Send_14_4165"(%Uint128 %_amount, [20 x i8]* %"$_origin_4256", [20 x i8]* %"$_sender_4258") + ret void +} diff --git a/tests/codegen/contr/gold/accounting_tests_support.scilla.gold b/tests/codegen/contr/gold/accounting_tests_support.scilla.gold new file mode 100644 index 00000000..e5e7b36a --- /dev/null +++ b/tests/codegen/contr/gold/accounting_tests_support.scilla.gold @@ -0,0 +1,1058 @@ + + +; gas_remaining: 4002000 +; ModuleID = 'AccountingTestsSupport' +source_filename = "AccountingTestsSupport" +target datalayout = "e-m:e-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" +target triple = "x86_64-unknown-linux-gnu" + +%"$TyDescrTy_PrimTyp_1" = type { i32, i32 } +%_TyDescrTy_Typ = type { i32, i8* } +%"$TyDescrTy_ADTTyp_33" = type { %TyDescrString, i32, i32, i32, %"$TyDescrTy_ADTTyp_Specl_32"** } +%TyDescrString = type { i8*, i32 } +%"$TyDescrTy_ADTTyp_Specl_32" = type { %_TyDescrTy_Typ**, %"$TyDescrTy_ADTTyp_Constr_34"**, %"$TyDescrTy_ADTTyp_33"* } +%"$TyDescrTy_ADTTyp_Constr_34" = type { %TyDescrString, i32, %_TyDescrTy_Typ** } +%"$TyDescr_AddrTyp_39" = type { i32, %"$TyDescr_AddrFieldTyp_38"* } +%"$TyDescr_AddrFieldTyp_38" = type { %TyDescrString, %_TyDescrTy_Typ* } +%Uint32 = type { i32 } +%"$ParamDescr_533" = type { %ParamDescrString, %_TyDescrTy_Typ* } +%ParamDescrString = type { i8*, i32 } +%"$TransDescr_534" = type { %ParamDescrString, i32, %"$ParamDescr_533"* } +%TName_List_String = type { i8, %CName_Cons_String*, %CName_Nil_String* } +%CName_Cons_String = type <{ i8, %String, %TName_List_String* }> +%String = type { i8*, i32 } +%CName_Nil_String = type <{ i8 }> +%Uint128 = type { i128 } +%TName_Bool = type { i8, %CName_True*, %CName_False* } +%CName_True = type <{ i8 }> +%CName_False = type <{ i8 }> + +@_execptr = global i8* null +@_gasrem = global i64 0 +@"$TyDescr_Int32_Prim_2" = global %"$TyDescrTy_PrimTyp_1" zeroinitializer +@"$TyDescr_Int32_3" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Int32_Prim_2" to i8*) } +@"$TyDescr_Uint32_Prim_4" = global %"$TyDescrTy_PrimTyp_1" { i32 1, i32 0 } +@"$TyDescr_Uint32_5" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Uint32_Prim_4" to i8*) } +@"$TyDescr_Int64_Prim_6" = global %"$TyDescrTy_PrimTyp_1" { i32 0, i32 1 } +@"$TyDescr_Int64_7" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Int64_Prim_6" to i8*) } +@"$TyDescr_Uint64_Prim_8" = global %"$TyDescrTy_PrimTyp_1" { i32 1, i32 1 } +@"$TyDescr_Uint64_9" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Uint64_Prim_8" to i8*) } +@"$TyDescr_Int128_Prim_10" = global %"$TyDescrTy_PrimTyp_1" { i32 0, i32 2 } +@"$TyDescr_Int128_11" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Int128_Prim_10" to i8*) } +@"$TyDescr_Uint128_Prim_12" = global %"$TyDescrTy_PrimTyp_1" { i32 1, i32 2 } +@"$TyDescr_Uint128_13" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Uint128_Prim_12" to i8*) } +@"$TyDescr_Int256_Prim_14" = global %"$TyDescrTy_PrimTyp_1" { i32 0, i32 3 } +@"$TyDescr_Int256_15" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Int256_Prim_14" to i8*) } +@"$TyDescr_Uint256_Prim_16" = global %"$TyDescrTy_PrimTyp_1" { i32 1, i32 3 } +@"$TyDescr_Uint256_17" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Uint256_Prim_16" to i8*) } +@"$TyDescr_String_Prim_18" = global %"$TyDescrTy_PrimTyp_1" { i32 2, i32 0 } +@"$TyDescr_String_19" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_String_Prim_18" to i8*) } +@"$TyDescr_Bnum_Prim_20" = global %"$TyDescrTy_PrimTyp_1" { i32 3, i32 0 } +@"$TyDescr_Bnum_21" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Bnum_Prim_20" to i8*) } +@"$TyDescr_Message_Prim_22" = global %"$TyDescrTy_PrimTyp_1" { i32 4, i32 0 } +@"$TyDescr_Message_23" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Message_Prim_22" to i8*) } +@"$TyDescr_Event_Prim_24" = global %"$TyDescrTy_PrimTyp_1" { i32 5, i32 0 } +@"$TyDescr_Event_25" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Event_Prim_24" to i8*) } +@"$TyDescr_Exception_Prim_26" = global %"$TyDescrTy_PrimTyp_1" { i32 6, i32 0 } +@"$TyDescr_Exception_27" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Exception_Prim_26" to i8*) } +@"$TyDescr_Bystr_Prim_28" = global %"$TyDescrTy_PrimTyp_1" { i32 7, i32 0 } +@"$TyDescr_Bystr_29" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Bystr_Prim_28" to i8*) } +@"$TyDescr_Bystr20_Prim_30" = global %"$TyDescrTy_PrimTyp_1" { i32 8, i32 20 } +@"$TyDescr_Bystr20_31" = global %_TyDescrTy_Typ { i32 0, i8* bitcast (%"$TyDescrTy_PrimTyp_1"* @"$TyDescr_Bystr20_Prim_30" to i8*) } +@"$TyDescr_ADT_Bool_35" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_32"* @"$TyDescr_Bool_ADTTyp_Specl_50" to i8*) } +@"$TyDescr_ADT_List_String_36" = unnamed_addr constant %_TyDescrTy_Typ { i32 1, i8* bitcast (%"$TyDescrTy_ADTTyp_Specl_32"* @"$TyDescr_List_String_ADTTyp_Specl_62" to i8*) } +@"$TyDescr_Addr_40" = unnamed_addr constant %_TyDescrTy_Typ { i32 3, i8* bitcast (%"$TyDescr_AddrTyp_39"* @"$TyDescr_AddrFields_65" to i8*) } +@"$TyDescr_Bool_ADTTyp_41" = unnamed_addr constant %"$TyDescrTy_ADTTyp_33" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Bool_52", i32 0, i32 0), i32 4 }, i32 0, i32 2, i32 1, %"$TyDescrTy_ADTTyp_Specl_32"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_32"*], [1 x %"$TyDescrTy_ADTTyp_Specl_32"*]* @"$TyDescr_Bool_ADTTyp_m_specls_51", i32 0, i32 0) } +@"$TyDescr_Bool_True_Constr_m_args_42" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_True_43" = unnamed_addr constant [4 x i8] c"True" +@"$TyDescr_Bool_True_ADTTyp_Constr_44" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_34" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_True_43", i32 0, i32 0), i32 4 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_True_Constr_m_args_42", i32 0, i32 0) } +@"$TyDescr_Bool_False_Constr_m_args_45" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_False_46" = unnamed_addr constant [5 x i8] c"False" +@"$TyDescr_Bool_False_ADTTyp_Constr_47" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_34" { %TyDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$TyDescr_ADT_False_46", i32 0, i32 0), i32 5 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_False_Constr_m_args_45", i32 0, i32 0) } +@"$TyDescr_Bool_ADTTyp_Specl_m_constrs_48" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_34"*] [%"$TyDescrTy_ADTTyp_Constr_34"* @"$TyDescr_Bool_True_ADTTyp_Constr_44", %"$TyDescrTy_ADTTyp_Constr_34"* @"$TyDescr_Bool_False_ADTTyp_Constr_47"] +@"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_49" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_Bool_ADTTyp_Specl_50" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_32" { %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_Bool_ADTTyp_Specl_m_TArgs_49", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_34"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_34"*], [2 x %"$TyDescrTy_ADTTyp_Constr_34"*]* @"$TyDescr_Bool_ADTTyp_Specl_m_constrs_48", i32 0, i32 0), %"$TyDescrTy_ADTTyp_33"* @"$TyDescr_Bool_ADTTyp_41" } +@"$TyDescr_Bool_ADTTyp_m_specls_51" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_32"*] [%"$TyDescrTy_ADTTyp_Specl_32"* @"$TyDescr_Bool_ADTTyp_Specl_50"] +@"$TyDescr_ADT_Bool_52" = unnamed_addr constant [4 x i8] c"Bool" +@"$TyDescr_List_ADTTyp_53" = unnamed_addr constant %"$TyDescrTy_ADTTyp_33" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_List_64", i32 0, i32 0), i32 4 }, i32 1, i32 2, i32 1, %"$TyDescrTy_ADTTyp_Specl_32"** getelementptr inbounds ([1 x %"$TyDescrTy_ADTTyp_Specl_32"*], [1 x %"$TyDescrTy_ADTTyp_Specl_32"*]* @"$TyDescr_List_ADTTyp_m_specls_63", i32 0, i32 0) } +@"$TyDescr_List_Cons_String_Constr_m_args_54" = unnamed_addr constant [2 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_19", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36"] +@"$TyDescr_ADT_Cons_55" = unnamed_addr constant [4 x i8] c"Cons" +@"$TyDescr_List_Cons_String_ADTTyp_Constr_56" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_34" { %TyDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$TyDescr_ADT_Cons_55", i32 0, i32 0), i32 4 }, i32 2, %_TyDescrTy_Typ** getelementptr inbounds ([2 x %_TyDescrTy_Typ*], [2 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Cons_String_Constr_m_args_54", i32 0, i32 0) } +@"$TyDescr_List_Nil_String_Constr_m_args_57" = unnamed_addr constant [0 x %_TyDescrTy_Typ*] zeroinitializer +@"$TyDescr_ADT_Nil_58" = unnamed_addr constant [3 x i8] c"Nil" +@"$TyDescr_List_Nil_String_ADTTyp_Constr_59" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Constr_34" { %TyDescrString { i8* getelementptr inbounds ([3 x i8], [3 x i8]* @"$TyDescr_ADT_Nil_58", i32 0, i32 0), i32 3 }, i32 0, %_TyDescrTy_Typ** getelementptr inbounds ([0 x %_TyDescrTy_Typ*], [0 x %_TyDescrTy_Typ*]* @"$TyDescr_List_Nil_String_Constr_m_args_57", i32 0, i32 0) } +@"$TyDescr_List_String_ADTTyp_Specl_m_constrs_60" = unnamed_addr constant [2 x %"$TyDescrTy_ADTTyp_Constr_34"*] [%"$TyDescrTy_ADTTyp_Constr_34"* @"$TyDescr_List_Cons_String_ADTTyp_Constr_56", %"$TyDescrTy_ADTTyp_Constr_34"* @"$TyDescr_List_Nil_String_ADTTyp_Constr_59"] +@"$TyDescr_List_String_ADTTyp_Specl_m_TArgs_61" = unnamed_addr constant [1 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_String_19"] +@"$TyDescr_List_String_ADTTyp_Specl_62" = unnamed_addr constant %"$TyDescrTy_ADTTyp_Specl_32" { %_TyDescrTy_Typ** getelementptr inbounds ([1 x %_TyDescrTy_Typ*], [1 x %_TyDescrTy_Typ*]* @"$TyDescr_List_String_ADTTyp_Specl_m_TArgs_61", i32 0, i32 0), %"$TyDescrTy_ADTTyp_Constr_34"** getelementptr inbounds ([2 x %"$TyDescrTy_ADTTyp_Constr_34"*], [2 x %"$TyDescrTy_ADTTyp_Constr_34"*]* @"$TyDescr_List_String_ADTTyp_Specl_m_constrs_60", i32 0, i32 0), %"$TyDescrTy_ADTTyp_33"* @"$TyDescr_List_ADTTyp_53" } +@"$TyDescr_List_ADTTyp_m_specls_63" = unnamed_addr constant [1 x %"$TyDescrTy_ADTTyp_Specl_32"*] [%"$TyDescrTy_ADTTyp_Specl_32"* @"$TyDescr_List_String_ADTTyp_Specl_62"] +@"$TyDescr_ADT_List_64" = unnamed_addr constant [4 x i8] c"List" +@"$TyDescr_AddrFields_65" = unnamed_addr constant %"$TyDescr_AddrTyp_39" { i32 -1, %"$TyDescr_AddrFieldTyp_38"* null } +@_cparam__scilla_version = global %Uint32 zeroinitializer +@_cparam__this_address = global [20 x i8] zeroinitializer +@_cparam__creation_block = global i8* null +@"$stored_strings_75" = unnamed_addr constant [15 x i8] c"stored_strings\00" +@"$stored_strings_103" = unnamed_addr constant [15 x i8] c"stored_strings\00" +@"$stored_strings_116" = unnamed_addr constant [15 x i8] c"stored_strings\00" +@"$stored_strings_154" = unnamed_addr constant [15 x i8] c"stored_strings\00" +@"$_balance_217" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_266" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_271" = unnamed_addr constant [38 x i8] c"Unexpected balance at support contract" +@"$stringlit_274" = unnamed_addr constant [8 x i8] c"expected" +@"$stringlit_281" = unnamed_addr constant [6 x i8] c"actual" +@"$_balance_303" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$stringlit_353" = unnamed_addr constant [10 x i8] c"_exception" +@"$stringlit_358" = unnamed_addr constant [50 x i8] c"Unexpected sender balance read by support contract" +@"$stringlit_361" = unnamed_addr constant [8 x i8] c"expected" +@"$stringlit_368" = unnamed_addr constant [6 x i8] c"actual" +@"$_balance_390" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$_balance_436" = unnamed_addr constant [9 x i8] c"_balance\00" +@"$_balance_496" = unnamed_addr constant [9 x i8] c"_balance\00" +@_tydescr_table = constant [18 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Event_25", %_TyDescrTy_Typ* @"$TyDescr_Int64_7", %_TyDescrTy_Typ* @"$TyDescr_Addr_40", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_35", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_31", %_TyDescrTy_Typ* @"$TyDescr_Uint256_17", %_TyDescrTy_Typ* @"$TyDescr_Uint32_5", %_TyDescrTy_Typ* @"$TyDescr_Uint64_9", %_TyDescrTy_Typ* @"$TyDescr_Bnum_21", %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", %_TyDescrTy_Typ* @"$TyDescr_Exception_27", %_TyDescrTy_Typ* @"$TyDescr_String_19", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", %_TyDescrTy_Typ* @"$TyDescr_Int256_15", %_TyDescrTy_Typ* @"$TyDescr_Int128_11", %_TyDescrTy_Typ* @"$TyDescr_Bystr_29", %_TyDescrTy_Typ* @"$TyDescr_Message_23", %_TyDescrTy_Typ* @"$TyDescr_Int32_3"] +@_tydescr_table_length = constant i32 18 +@"$pname__scilla_version_535" = unnamed_addr constant [15 x i8] c"_scilla_version" +@"$pname__this_address_536" = unnamed_addr constant [13 x i8] c"_this_address" +@"$pname__creation_block_537" = unnamed_addr constant [15 x i8] c"_creation_block" +@_contract_parameters = constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__scilla_version_535", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Uint32_5" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$pname__this_address_536", i32 0, i32 0), i32 13 }, %_TyDescrTy_Typ* @"$TyDescr_Bystr20_31" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__creation_block_537", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Bnum_21" }] +@_contract_parameters_length = constant i32 3 +@"$tpname__amount_538" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_539" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_540" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Reset_541" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_538", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_539", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_540", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_Reset_542" = unnamed_addr constant [5 x i8] c"Reset" +@"$tpname__amount_543" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_544" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_545" = unnamed_addr constant [7 x i8] c"_sender" +@"$tpname_s_546" = unnamed_addr constant [1 x i8] c"s" +@"$tparams_StoreString_547" = unnamed_addr constant [4 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_543", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_544", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_545", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([1 x i8], [1 x i8]* @"$tpname_s_546", i32 0, i32 0), i32 1 }, %_TyDescrTy_Typ* @"$TyDescr_String_19" }] +@"$tname_StoreString_548" = unnamed_addr constant [11 x i8] c"StoreString" +@"$tpname__amount_549" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_550" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_551" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_Accept_552" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_549", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_550", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_551", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_Accept_553" = unnamed_addr constant [6 x i8] c"Accept" +@"$tpname__amount_554" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_555" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_556" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_AcceptTwice_557" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_554", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_555", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_556", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_AcceptTwice_558" = unnamed_addr constant [11 x i8] c"AcceptTwice" +@"$tpname__amount_559" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_560" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_561" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_NonAccept_562" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_559", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_560", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_561", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_NonAccept_563" = unnamed_addr constant [9 x i8] c"NonAccept" +@"$tpname__amount_564" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_565" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_566" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_AcceptAndCheckBalance_567" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_564", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_565", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_566", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_AcceptAndCheckBalance_568" = unnamed_addr constant [21 x i8] c"AcceptAndCheckBalance" +@"$tpname__amount_569" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_570" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_571" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_AcceptTwiceAndCheckBalance_572" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_569", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_570", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_571", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_AcceptTwiceAndCheckBalance_573" = unnamed_addr constant [26 x i8] c"AcceptTwiceAndCheckBalance" +@"$tpname__amount_574" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_575" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_576" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_AcceptAndCheckSenderBalance_577" = unnamed_addr constant [3 x %"$ParamDescr_533"] [%"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_574", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_13" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_575", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }, %"$ParamDescr_533" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_576", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_40" }] +@"$tname_AcceptAndCheckSenderBalance_578" = unnamed_addr constant [27 x i8] c"AcceptAndCheckSenderBalance" +@_transition_parameters = constant [8 x %"$TransDescr_534"] [%"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tname_Reset_542", i32 0, i32 0), i32 5 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_Reset_541", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_StoreString_548", i32 0, i32 0), i32 11 }, i32 4, %"$ParamDescr_533"* getelementptr inbounds ([4 x %"$ParamDescr_533"], [4 x %"$ParamDescr_533"]* @"$tparams_StoreString_547", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$tname_Accept_553", i32 0, i32 0), i32 6 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_Accept_552", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([11 x i8], [11 x i8]* @"$tname_AcceptTwice_558", i32 0, i32 0), i32 11 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_AcceptTwice_557", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$tname_NonAccept_563", i32 0, i32 0), i32 9 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_NonAccept_562", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([21 x i8], [21 x i8]* @"$tname_AcceptAndCheckBalance_568", i32 0, i32 0), i32 21 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_AcceptAndCheckBalance_567", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([26 x i8], [26 x i8]* @"$tname_AcceptTwiceAndCheckBalance_573", i32 0, i32 0), i32 26 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_AcceptTwiceAndCheckBalance_572", i32 0, i32 0) }, %"$TransDescr_534" { %ParamDescrString { i8* getelementptr inbounds ([27 x i8], [27 x i8]* @"$tname_AcceptAndCheckSenderBalance_578", i32 0, i32 0), i32 27 }, i32 3, %"$ParamDescr_533"* getelementptr inbounds ([3 x %"$ParamDescr_533"], [3 x %"$ParamDescr_533"]* @"$tparams_AcceptAndCheckSenderBalance_577", i32 0, i32 0) }] +@_transition_parameters_length = constant i32 8 + +define void @_init_libs() { +entry: + ret void +} + +define void @_init_state() { +entry: + %"$stored_strings_0" = alloca %TName_List_String*, align 8 + %"$gasrem_66" = load i64, i64* @_gasrem, align 8 + %"$gascmp_67" = icmp ugt i64 1, %"$gasrem_66" + br i1 %"$gascmp_67", label %"$out_of_gas_68", label %"$have_gas_69" + +"$out_of_gas_68": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_69" + +"$have_gas_69": ; preds = %"$out_of_gas_68", %entry + %"$consume_70" = sub i64 %"$gasrem_66", 1 + store i64 %"$consume_70", i64* @_gasrem, align 8 + %"$adtval_71_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_71_salloc" = call i8* @_salloc(i8* %"$adtval_71_load", i64 1) + %"$adtval_71" = bitcast i8* %"$adtval_71_salloc" to %CName_Nil_String* + %"$adtgep_72" = getelementptr inbounds %CName_Nil_String, %CName_Nil_String* %"$adtval_71", i32 0, i32 0 + store i8 1, i8* %"$adtgep_72", align 1 + %"$adtptr_73" = bitcast %CName_Nil_String* %"$adtval_71" to %TName_List_String* + store %TName_List_String* %"$adtptr_73", %TName_List_String** %"$stored_strings_0", align 8 + %"$execptr_load_74" = load i8*, i8** @_execptr, align 8 + %"$$stored_strings_0_76" = load %TName_List_String*, %TName_List_String** %"$stored_strings_0", align 8 + %"$update_value_77" = bitcast %TName_List_String* %"$$stored_strings_0_76" to i8* + call void @_update_field(i8* %"$execptr_load_74", i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stored_strings_75", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i32 0, i8* null, i8* %"$update_value_77") + ret void +} + +declare void @_out_of_gas() + +declare i8* @_salloc(i8*, i64) + +declare void @_update_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i8*) + +define internal void @"$Reset_78"(%Uint128 %_amount, [20 x i8]* %"$_origin_79", [20 x i8]* %"$_sender_80") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_79", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_80", align 1 + %"$gasrem_81" = load i64, i64* @_gasrem, align 8 + %"$gascmp_82" = icmp ugt i64 1, %"$gasrem_81" + br i1 %"$gascmp_82", label %"$out_of_gas_83", label %"$have_gas_84" + +"$out_of_gas_83": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_84" + +"$have_gas_84": ; preds = %"$out_of_gas_83", %entry + %"$consume_85" = sub i64 %"$gasrem_81", 1 + store i64 %"$consume_85", i64* @_gasrem, align 8 + %new_strings = alloca %TName_List_String*, align 8 + %"$gasrem_86" = load i64, i64* @_gasrem, align 8 + %"$gascmp_87" = icmp ugt i64 1, %"$gasrem_86" + br i1 %"$gascmp_87", label %"$out_of_gas_88", label %"$have_gas_89" + +"$out_of_gas_88": ; preds = %"$have_gas_84" + call void @_out_of_gas() + br label %"$have_gas_89" + +"$have_gas_89": ; preds = %"$out_of_gas_88", %"$have_gas_84" + %"$consume_90" = sub i64 %"$gasrem_86", 1 + store i64 %"$consume_90", i64* @_gasrem, align 8 + %"$adtval_91_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_91_salloc" = call i8* @_salloc(i8* %"$adtval_91_load", i64 1) + %"$adtval_91" = bitcast i8* %"$adtval_91_salloc" to %CName_Nil_String* + %"$adtgep_92" = getelementptr inbounds %CName_Nil_String, %CName_Nil_String* %"$adtval_91", i32 0, i32 0 + store i8 1, i8* %"$adtgep_92", align 1 + %"$adtptr_93" = bitcast %CName_Nil_String* %"$adtval_91" to %TName_List_String* + store %TName_List_String* %"$adtptr_93", %TName_List_String** %new_strings, align 8 + %"$new_strings_94" = load %TName_List_String*, %TName_List_String** %new_strings, align 8 + %"$$new_strings_94_95" = bitcast %TName_List_String* %"$new_strings_94" to i8* + %"$_literal_cost_call_96" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i8* %"$$new_strings_94_95") + %"$gasrem_97" = load i64, i64* @_gasrem, align 8 + %"$gascmp_98" = icmp ugt i64 %"$_literal_cost_call_96", %"$gasrem_97" + br i1 %"$gascmp_98", label %"$out_of_gas_99", label %"$have_gas_100" + +"$out_of_gas_99": ; preds = %"$have_gas_89" + call void @_out_of_gas() + br label %"$have_gas_100" + +"$have_gas_100": ; preds = %"$out_of_gas_99", %"$have_gas_89" + %"$consume_101" = sub i64 %"$gasrem_97", %"$_literal_cost_call_96" + store i64 %"$consume_101", i64* @_gasrem, align 8 + %"$execptr_load_102" = load i8*, i8** @_execptr, align 8 + %"$new_strings_104" = load %TName_List_String*, %TName_List_String** %new_strings, align 8 + %"$update_value_105" = bitcast %TName_List_String* %"$new_strings_104" to i8* + call void @_update_field(i8* %"$execptr_load_102", i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stored_strings_103", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i32 0, i8* null, i8* %"$update_value_105") + ret void +} + +declare i64 @_literal_cost(%_TyDescrTy_Typ*, i8*) + +define void @Reset(i8* %0) { +entry: + %"$_amount_107" = getelementptr i8, i8* %0, i32 0 + %"$_amount_108" = bitcast i8* %"$_amount_107" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_108", align 8 + %"$_origin_109" = getelementptr i8, i8* %0, i32 16 + %"$_origin_110" = bitcast i8* %"$_origin_109" to [20 x i8]* + %"$_sender_111" = getelementptr i8, i8* %0, i32 36 + %"$_sender_112" = bitcast i8* %"$_sender_111" to [20 x i8]* + call void @"$Reset_78"(%Uint128 %_amount, [20 x i8]* %"$_origin_110", [20 x i8]* %"$_sender_112") + ret void +} + +define internal void @"$StoreString_113"(%Uint128 %_amount, [20 x i8]* %"$_origin_114", [20 x i8]* %"$_sender_115", %String %s) { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_114", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_115", align 1 + %old_strings = alloca %TName_List_String*, align 8 + %"$execptr_load_117" = load i8*, i8** @_execptr, align 8 + %"$old_strings_call_118" = call i8* @_fetch_field(i8* %"$execptr_load_117", i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stored_strings_116", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i32 0, i8* null, i32 1) + %"$old_strings_119" = bitcast i8* %"$old_strings_call_118" to %TName_List_String* + store %TName_List_String* %"$old_strings_119", %TName_List_String** %old_strings, align 8 + %"$old_strings_120" = load %TName_List_String*, %TName_List_String** %old_strings, align 8 + %"$$old_strings_120_121" = bitcast %TName_List_String* %"$old_strings_120" to i8* + %"$_literal_cost_call_122" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i8* %"$$old_strings_120_121") + %"$gasadd_123" = add i64 %"$_literal_cost_call_122", 0 + %"$gasrem_124" = load i64, i64* @_gasrem, align 8 + %"$gascmp_125" = icmp ugt i64 %"$gasadd_123", %"$gasrem_124" + br i1 %"$gascmp_125", label %"$out_of_gas_126", label %"$have_gas_127" + +"$out_of_gas_126": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_127" + +"$have_gas_127": ; preds = %"$out_of_gas_126", %entry + %"$consume_128" = sub i64 %"$gasrem_124", %"$gasadd_123" + store i64 %"$consume_128", i64* @_gasrem, align 8 + %"$gasrem_129" = load i64, i64* @_gasrem, align 8 + %"$gascmp_130" = icmp ugt i64 1, %"$gasrem_129" + br i1 %"$gascmp_130", label %"$out_of_gas_131", label %"$have_gas_132" + +"$out_of_gas_131": ; preds = %"$have_gas_127" + call void @_out_of_gas() + br label %"$have_gas_132" + +"$have_gas_132": ; preds = %"$out_of_gas_131", %"$have_gas_127" + %"$consume_133" = sub i64 %"$gasrem_129", 1 + store i64 %"$consume_133", i64* @_gasrem, align 8 + %new_strings = alloca %TName_List_String*, align 8 + %"$gasrem_134" = load i64, i64* @_gasrem, align 8 + %"$gascmp_135" = icmp ugt i64 1, %"$gasrem_134" + br i1 %"$gascmp_135", label %"$out_of_gas_136", label %"$have_gas_137" + +"$out_of_gas_136": ; preds = %"$have_gas_132" + call void @_out_of_gas() + br label %"$have_gas_137" + +"$have_gas_137": ; preds = %"$out_of_gas_136", %"$have_gas_132" + %"$consume_138" = sub i64 %"$gasrem_134", 1 + store i64 %"$consume_138", i64* @_gasrem, align 8 + %"$old_strings_139" = load %TName_List_String*, %TName_List_String** %old_strings, align 8 + %"$adtval_140_load" = load i8*, i8** @_execptr, align 8 + %"$adtval_140_salloc" = call i8* @_salloc(i8* %"$adtval_140_load", i64 25) + %"$adtval_140" = bitcast i8* %"$adtval_140_salloc" to %CName_Cons_String* + %"$adtgep_141" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_140", i32 0, i32 0 + store i8 0, i8* %"$adtgep_141", align 1 + %"$adtgep_142" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_140", i32 0, i32 1 + store %String %s, %String* %"$adtgep_142", align 8 + %"$adtgep_143" = getelementptr inbounds %CName_Cons_String, %CName_Cons_String* %"$adtval_140", i32 0, i32 2 + store %TName_List_String* %"$old_strings_139", %TName_List_String** %"$adtgep_143", align 8 + %"$adtptr_144" = bitcast %CName_Cons_String* %"$adtval_140" to %TName_List_String* + store %TName_List_String* %"$adtptr_144", %TName_List_String** %new_strings, align 8 + %"$new_strings_145" = load %TName_List_String*, %TName_List_String** %new_strings, align 8 + %"$$new_strings_145_146" = bitcast %TName_List_String* %"$new_strings_145" to i8* + %"$_literal_cost_call_147" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i8* %"$$new_strings_145_146") + %"$gasrem_148" = load i64, i64* @_gasrem, align 8 + %"$gascmp_149" = icmp ugt i64 %"$_literal_cost_call_147", %"$gasrem_148" + br i1 %"$gascmp_149", label %"$out_of_gas_150", label %"$have_gas_151" + +"$out_of_gas_150": ; preds = %"$have_gas_137" + call void @_out_of_gas() + br label %"$have_gas_151" + +"$have_gas_151": ; preds = %"$out_of_gas_150", %"$have_gas_137" + %"$consume_152" = sub i64 %"$gasrem_148", %"$_literal_cost_call_147" + store i64 %"$consume_152", i64* @_gasrem, align 8 + %"$execptr_load_153" = load i8*, i8** @_execptr, align 8 + %"$new_strings_155" = load %TName_List_String*, %TName_List_String** %new_strings, align 8 + %"$update_value_156" = bitcast %TName_List_String* %"$new_strings_155" to i8* + call void @_update_field(i8* %"$execptr_load_153", i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$stored_strings_154", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_ADT_List_String_36", i32 0, i8* null, i8* %"$update_value_156") + ret void +} + +declare i8* @_fetch_field(i8*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) + +define void @StoreString(i8* %0) { +entry: + %"$_amount_158" = getelementptr i8, i8* %0, i32 0 + %"$_amount_159" = bitcast i8* %"$_amount_158" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_159", align 8 + %"$_origin_160" = getelementptr i8, i8* %0, i32 16 + %"$_origin_161" = bitcast i8* %"$_origin_160" to [20 x i8]* + %"$_sender_162" = getelementptr i8, i8* %0, i32 36 + %"$_sender_163" = bitcast i8* %"$_sender_162" to [20 x i8]* + %"$s_164" = getelementptr i8, i8* %0, i32 56 + %"$s_165" = bitcast i8* %"$s_164" to %String* + %s = load %String, %String* %"$s_165", align 8 + call void @"$StoreString_113"(%Uint128 %_amount, [20 x i8]* %"$_origin_161", [20 x i8]* %"$_sender_163", %String %s) + ret void +} + +define internal void @"$Accept_166"(%Uint128 %_amount, [20 x i8]* %"$_origin_167", [20 x i8]* %"$_sender_168") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_167", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_168", align 1 + %"$gasrem_169" = load i64, i64* @_gasrem, align 8 + %"$gascmp_170" = icmp ugt i64 1, %"$gasrem_169" + br i1 %"$gascmp_170", label %"$out_of_gas_171", label %"$have_gas_172" + +"$out_of_gas_171": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_172" + +"$have_gas_172": ; preds = %"$out_of_gas_171", %entry + %"$consume_173" = sub i64 %"$gasrem_169", 1 + store i64 %"$consume_173", i64* @_gasrem, align 8 + %"$execptr_load_174" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_174") + ret void +} + +declare void @_accept(i8*) + +define void @Accept(i8* %0) { +entry: + %"$_amount_176" = getelementptr i8, i8* %0, i32 0 + %"$_amount_177" = bitcast i8* %"$_amount_176" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_177", align 8 + %"$_origin_178" = getelementptr i8, i8* %0, i32 16 + %"$_origin_179" = bitcast i8* %"$_origin_178" to [20 x i8]* + %"$_sender_180" = getelementptr i8, i8* %0, i32 36 + %"$_sender_181" = bitcast i8* %"$_sender_180" to [20 x i8]* + call void @"$Accept_166"(%Uint128 %_amount, [20 x i8]* %"$_origin_179", [20 x i8]* %"$_sender_181") + ret void +} + +define internal void @"$AcceptTwice_182"(%Uint128 %_amount, [20 x i8]* %"$_origin_183", [20 x i8]* %"$_sender_184") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_183", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_184", align 1 + %"$gasrem_185" = load i64, i64* @_gasrem, align 8 + %"$gascmp_186" = icmp ugt i64 1, %"$gasrem_185" + br i1 %"$gascmp_186", label %"$out_of_gas_187", label %"$have_gas_188" + +"$out_of_gas_187": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_188" + +"$have_gas_188": ; preds = %"$out_of_gas_187", %entry + %"$consume_189" = sub i64 %"$gasrem_185", 1 + store i64 %"$consume_189", i64* @_gasrem, align 8 + %"$execptr_load_190" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_190") + %"$gasrem_191" = load i64, i64* @_gasrem, align 8 + %"$gascmp_192" = icmp ugt i64 1, %"$gasrem_191" + br i1 %"$gascmp_192", label %"$out_of_gas_193", label %"$have_gas_194" + +"$out_of_gas_193": ; preds = %"$have_gas_188" + call void @_out_of_gas() + br label %"$have_gas_194" + +"$have_gas_194": ; preds = %"$out_of_gas_193", %"$have_gas_188" + %"$consume_195" = sub i64 %"$gasrem_191", 1 + store i64 %"$consume_195", i64* @_gasrem, align 8 + %"$execptr_load_196" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_196") + ret void +} + +define void @AcceptTwice(i8* %0) { +entry: + %"$_amount_198" = getelementptr i8, i8* %0, i32 0 + %"$_amount_199" = bitcast i8* %"$_amount_198" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_199", align 8 + %"$_origin_200" = getelementptr i8, i8* %0, i32 16 + %"$_origin_201" = bitcast i8* %"$_origin_200" to [20 x i8]* + %"$_sender_202" = getelementptr i8, i8* %0, i32 36 + %"$_sender_203" = bitcast i8* %"$_sender_202" to [20 x i8]* + call void @"$AcceptTwice_182"(%Uint128 %_amount, [20 x i8]* %"$_origin_201", [20 x i8]* %"$_sender_203") + ret void +} + +define internal void @"$NonAccept_204"(%Uint128 %_amount, [20 x i8]* %"$_origin_205", [20 x i8]* %"$_sender_206") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_205", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_206", align 1 + ret void +} + +define void @NonAccept(i8* %0) { +entry: + %"$_amount_208" = getelementptr i8, i8* %0, i32 0 + %"$_amount_209" = bitcast i8* %"$_amount_208" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_209", align 8 + %"$_origin_210" = getelementptr i8, i8* %0, i32 16 + %"$_origin_211" = bitcast i8* %"$_origin_210" to [20 x i8]* + %"$_sender_212" = getelementptr i8, i8* %0, i32 36 + %"$_sender_213" = bitcast i8* %"$_sender_212" to [20 x i8]* + call void @"$NonAccept_204"(%Uint128 %_amount, [20 x i8]* %"$_origin_211", [20 x i8]* %"$_sender_213") + ret void +} + +define internal void @"$CheckBalance_214"(%Uint128 %_amount, [20 x i8]* %"$_origin_215", [20 x i8]* %"$_sender_216", %Uint128 %expected_balance) { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_215", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_216", align 1 + %cur_balance = alloca %Uint128, align 8 + %"$execptr_load_218" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_call_219" = call i8* @_fetch_field(i8* %"$execptr_load_218", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_217", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i32 0, i8* null, i32 1) + %"$cur_balance_220" = bitcast i8* %"$cur_balance_call_219" to %Uint128* + %"$cur_balance_221" = load %Uint128, %Uint128* %"$cur_balance_220", align 8 + store %Uint128 %"$cur_balance_221", %Uint128* %cur_balance, align 8 + %"$_literal_cost_cur_balance_222" = alloca %Uint128, align 8 + %"$cur_balance_223" = load %Uint128, %Uint128* %cur_balance, align 8 + store %Uint128 %"$cur_balance_223", %Uint128* %"$_literal_cost_cur_balance_222", align 8 + %"$$_literal_cost_cur_balance_222_224" = bitcast %Uint128* %"$_literal_cost_cur_balance_222" to i8* + %"$_literal_cost_call_225" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i8* %"$$_literal_cost_cur_balance_222_224") + %"$gasadd_226" = add i64 %"$_literal_cost_call_225", 0 + %"$gasrem_227" = load i64, i64* @_gasrem, align 8 + %"$gascmp_228" = icmp ugt i64 %"$gasadd_226", %"$gasrem_227" + br i1 %"$gascmp_228", label %"$out_of_gas_229", label %"$have_gas_230" + +"$out_of_gas_229": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_230" + +"$have_gas_230": ; preds = %"$out_of_gas_229", %entry + %"$consume_231" = sub i64 %"$gasrem_227", %"$gasadd_226" + store i64 %"$consume_231", i64* @_gasrem, align 8 + %"$gasrem_232" = load i64, i64* @_gasrem, align 8 + %"$gascmp_233" = icmp ugt i64 1, %"$gasrem_232" + br i1 %"$gascmp_233", label %"$out_of_gas_234", label %"$have_gas_235" + +"$out_of_gas_234": ; preds = %"$have_gas_230" + call void @_out_of_gas() + br label %"$have_gas_235" + +"$have_gas_235": ; preds = %"$out_of_gas_234", %"$have_gas_230" + %"$consume_236" = sub i64 %"$gasrem_232", 1 + store i64 %"$consume_236", i64* @_gasrem, align 8 + %is_expected = alloca %TName_Bool*, align 8 + %"$execptr_load_237" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_238" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$eq_call_239" = call %TName_Bool* @_eq_Uint128(i8* %"$execptr_load_237", %Uint128 %expected_balance, %Uint128 %"$cur_balance_238") + store %TName_Bool* %"$eq_call_239", %TName_Bool** %is_expected, align 8 + %"$gasrem_241" = load i64, i64* @_gasrem, align 8 + %"$gascmp_242" = icmp ugt i64 2, %"$gasrem_241" + br i1 %"$gascmp_242", label %"$out_of_gas_243", label %"$have_gas_244" + +"$out_of_gas_243": ; preds = %"$have_gas_235" + call void @_out_of_gas() + br label %"$have_gas_244" + +"$have_gas_244": ; preds = %"$out_of_gas_243", %"$have_gas_235" + %"$consume_245" = sub i64 %"$gasrem_241", 2 + store i64 %"$consume_245", i64* @_gasrem, align 8 + %"$is_expected_247" = load %TName_Bool*, %TName_Bool** %is_expected, align 8 + %"$is_expected_tag_248" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_expected_247", i32 0, i32 0 + %"$is_expected_tag_249" = load i8, i8* %"$is_expected_tag_248", align 1 + switch i8 %"$is_expected_tag_249", label %"$empty_default_250" [ + i8 0, label %"$True_251" + i8 1, label %"$False_253" + ] + +"$True_251": ; preds = %"$have_gas_244" + %"$is_expected_252" = bitcast %TName_Bool* %"$is_expected_247" to %CName_True* + br label %"$matchsucc_246" + +"$False_253": ; preds = %"$have_gas_244" + %"$is_expected_254" = bitcast %TName_Bool* %"$is_expected_247" to %CName_False* + %"$gasrem_255" = load i64, i64* @_gasrem, align 8 + %"$gascmp_256" = icmp ugt i64 1, %"$gasrem_255" + br i1 %"$gascmp_256", label %"$out_of_gas_257", label %"$have_gas_258" + +"$out_of_gas_257": ; preds = %"$False_253" + call void @_out_of_gas() + br label %"$have_gas_258" + +"$have_gas_258": ; preds = %"$out_of_gas_257", %"$False_253" + %"$consume_259" = sub i64 %"$gasrem_255", 1 + store i64 %"$consume_259", i64* @_gasrem, align 8 + %e = alloca i8*, align 8 + %"$gasrem_260" = load i64, i64* @_gasrem, align 8 + %"$gascmp_261" = icmp ugt i64 1, %"$gasrem_260" + br i1 %"$gascmp_261", label %"$out_of_gas_262", label %"$have_gas_263" + +"$out_of_gas_262": ; preds = %"$have_gas_258" + call void @_out_of_gas() + br label %"$have_gas_263" + +"$have_gas_263": ; preds = %"$out_of_gas_262", %"$have_gas_258" + %"$consume_264" = sub i64 %"$gasrem_260", 1 + store i64 %"$consume_264", i64* @_gasrem, align 8 + %"$msgobj_265_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_265_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_265_salloc_load", i64 121) + %"$msgobj_265_salloc" = bitcast i8* %"$msgobj_265_salloc_salloc" to [121 x i8]* + %"$msgobj_265" = bitcast [121 x i8]* %"$msgobj_265_salloc" to i8* + store i8 3, i8* %"$msgobj_265", align 1 + %"$msgobj_fname_267" = getelementptr i8, i8* %"$msgobj_265", i32 1 + %"$msgobj_fname_268" = bitcast i8* %"$msgobj_fname_267" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_266", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_268", align 8 + %"$msgobj_td_269" = getelementptr i8, i8* %"$msgobj_265", i32 17 + %"$msgobj_td_270" = bitcast i8* %"$msgobj_td_269" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_19", %_TyDescrTy_Typ** %"$msgobj_td_270", align 8 + %"$msgobj_v_272" = getelementptr i8, i8* %"$msgobj_265", i32 25 + %"$msgobj_v_273" = bitcast i8* %"$msgobj_v_272" to %String* + store %String { i8* getelementptr inbounds ([38 x i8], [38 x i8]* @"$stringlit_271", i32 0, i32 0), i32 38 }, %String* %"$msgobj_v_273", align 8 + %"$msgobj_fname_275" = getelementptr i8, i8* %"$msgobj_265", i32 41 + %"$msgobj_fname_276" = bitcast i8* %"$msgobj_fname_275" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_274", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_276", align 8 + %"$msgobj_td_277" = getelementptr i8, i8* %"$msgobj_265", i32 57 + %"$msgobj_td_278" = bitcast i8* %"$msgobj_td_277" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", %_TyDescrTy_Typ** %"$msgobj_td_278", align 8 + %"$msgobj_v_279" = getelementptr i8, i8* %"$msgobj_265", i32 65 + %"$msgobj_v_280" = bitcast i8* %"$msgobj_v_279" to %Uint128* + store %Uint128 %expected_balance, %Uint128* %"$msgobj_v_280", align 8 + %"$msgobj_fname_282" = getelementptr i8, i8* %"$msgobj_265", i32 81 + %"$msgobj_fname_283" = bitcast i8* %"$msgobj_fname_282" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_281", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_283", align 8 + %"$msgobj_td_284" = getelementptr i8, i8* %"$msgobj_265", i32 97 + %"$msgobj_td_285" = bitcast i8* %"$msgobj_td_284" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", %_TyDescrTy_Typ** %"$msgobj_td_285", align 8 + %"$cur_balance_286" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$msgobj_v_287" = getelementptr i8, i8* %"$msgobj_265", i32 105 + %"$msgobj_v_288" = bitcast i8* %"$msgobj_v_287" to %Uint128* + store %Uint128 %"$cur_balance_286", %Uint128* %"$msgobj_v_288", align 8 + store i8* %"$msgobj_265", i8** %e, align 8 + %"$e_290" = load i8*, i8** %e, align 8 + %"$_literal_cost_call_292" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_27", i8* %"$e_290") + %"$gasrem_293" = load i64, i64* @_gasrem, align 8 + %"$gascmp_294" = icmp ugt i64 %"$_literal_cost_call_292", %"$gasrem_293" + br i1 %"$gascmp_294", label %"$out_of_gas_295", label %"$have_gas_296" + +"$out_of_gas_295": ; preds = %"$have_gas_263" + call void @_out_of_gas() + br label %"$have_gas_296" + +"$have_gas_296": ; preds = %"$out_of_gas_295", %"$have_gas_263" + %"$consume_297" = sub i64 %"$gasrem_293", %"$_literal_cost_call_292" + store i64 %"$consume_297", i64* @_gasrem, align 8 + %"$execptr_load_298" = load i8*, i8** @_execptr, align 8 + %"$e_299" = load i8*, i8** %e, align 8 + call void @_throw(i8* %"$execptr_load_298", %_TyDescrTy_Typ* @"$TyDescr_Exception_27", i8* %"$e_299") + br label %"$matchsucc_246" + +"$empty_default_250": ; preds = %"$have_gas_244" + br label %"$matchsucc_246" + +"$matchsucc_246": ; preds = %"$have_gas_296", %"$True_251", %"$empty_default_250" + ret void +} + +declare %TName_Bool* @_eq_Uint128(i8*, %Uint128, %Uint128) + +declare void @_throw(i8*, %_TyDescrTy_Typ*, i8*) + +define internal void @"$CheckSenderBalance_300"(%Uint128 %_amount, [20 x i8]* %"$_origin_301", [20 x i8]* %"$_sender_302", %Uint128 %expected_balance) { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_301", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_302", align 1 + %cur_balance = alloca %Uint128, align 8 + %"$execptr_load_304" = load i8*, i8** @_execptr, align 8 + %"$cur_balance__sender_305" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$cur_balance__sender_305", align 1 + %"$cur_balance_call_306" = call i8* @_fetch_remote_field(i8* %"$execptr_load_304", [20 x i8]* %"$cur_balance__sender_305", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_303", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i32 0, i8* null, i32 1) + %"$cur_balance_307" = bitcast i8* %"$cur_balance_call_306" to %Uint128* + %"$cur_balance_308" = load %Uint128, %Uint128* %"$cur_balance_307", align 8 + store %Uint128 %"$cur_balance_308", %Uint128* %cur_balance, align 8 + %"$_literal_cost_cur_balance_309" = alloca %Uint128, align 8 + %"$cur_balance_310" = load %Uint128, %Uint128* %cur_balance, align 8 + store %Uint128 %"$cur_balance_310", %Uint128* %"$_literal_cost_cur_balance_309", align 8 + %"$$_literal_cost_cur_balance_309_311" = bitcast %Uint128* %"$_literal_cost_cur_balance_309" to i8* + %"$_literal_cost_call_312" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i8* %"$$_literal_cost_cur_balance_309_311") + %"$gasadd_313" = add i64 %"$_literal_cost_call_312", 0 + %"$gasrem_314" = load i64, i64* @_gasrem, align 8 + %"$gascmp_315" = icmp ugt i64 %"$gasadd_313", %"$gasrem_314" + br i1 %"$gascmp_315", label %"$out_of_gas_316", label %"$have_gas_317" + +"$out_of_gas_316": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_317" + +"$have_gas_317": ; preds = %"$out_of_gas_316", %entry + %"$consume_318" = sub i64 %"$gasrem_314", %"$gasadd_313" + store i64 %"$consume_318", i64* @_gasrem, align 8 + %"$gasrem_319" = load i64, i64* @_gasrem, align 8 + %"$gascmp_320" = icmp ugt i64 1, %"$gasrem_319" + br i1 %"$gascmp_320", label %"$out_of_gas_321", label %"$have_gas_322" + +"$out_of_gas_321": ; preds = %"$have_gas_317" + call void @_out_of_gas() + br label %"$have_gas_322" + +"$have_gas_322": ; preds = %"$out_of_gas_321", %"$have_gas_317" + %"$consume_323" = sub i64 %"$gasrem_319", 1 + store i64 %"$consume_323", i64* @_gasrem, align 8 + %is_expected = alloca %TName_Bool*, align 8 + %"$execptr_load_324" = load i8*, i8** @_execptr, align 8 + %"$cur_balance_325" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$eq_call_326" = call %TName_Bool* @_eq_Uint128(i8* %"$execptr_load_324", %Uint128 %expected_balance, %Uint128 %"$cur_balance_325") + store %TName_Bool* %"$eq_call_326", %TName_Bool** %is_expected, align 8 + %"$gasrem_328" = load i64, i64* @_gasrem, align 8 + %"$gascmp_329" = icmp ugt i64 2, %"$gasrem_328" + br i1 %"$gascmp_329", label %"$out_of_gas_330", label %"$have_gas_331" + +"$out_of_gas_330": ; preds = %"$have_gas_322" + call void @_out_of_gas() + br label %"$have_gas_331" + +"$have_gas_331": ; preds = %"$out_of_gas_330", %"$have_gas_322" + %"$consume_332" = sub i64 %"$gasrem_328", 2 + store i64 %"$consume_332", i64* @_gasrem, align 8 + %"$is_expected_334" = load %TName_Bool*, %TName_Bool** %is_expected, align 8 + %"$is_expected_tag_335" = getelementptr inbounds %TName_Bool, %TName_Bool* %"$is_expected_334", i32 0, i32 0 + %"$is_expected_tag_336" = load i8, i8* %"$is_expected_tag_335", align 1 + switch i8 %"$is_expected_tag_336", label %"$empty_default_337" [ + i8 0, label %"$True_338" + i8 1, label %"$False_340" + ] + +"$True_338": ; preds = %"$have_gas_331" + %"$is_expected_339" = bitcast %TName_Bool* %"$is_expected_334" to %CName_True* + br label %"$matchsucc_333" + +"$False_340": ; preds = %"$have_gas_331" + %"$is_expected_341" = bitcast %TName_Bool* %"$is_expected_334" to %CName_False* + %"$gasrem_342" = load i64, i64* @_gasrem, align 8 + %"$gascmp_343" = icmp ugt i64 1, %"$gasrem_342" + br i1 %"$gascmp_343", label %"$out_of_gas_344", label %"$have_gas_345" + +"$out_of_gas_344": ; preds = %"$False_340" + call void @_out_of_gas() + br label %"$have_gas_345" + +"$have_gas_345": ; preds = %"$out_of_gas_344", %"$False_340" + %"$consume_346" = sub i64 %"$gasrem_342", 1 + store i64 %"$consume_346", i64* @_gasrem, align 8 + %e = alloca i8*, align 8 + %"$gasrem_347" = load i64, i64* @_gasrem, align 8 + %"$gascmp_348" = icmp ugt i64 1, %"$gasrem_347" + br i1 %"$gascmp_348", label %"$out_of_gas_349", label %"$have_gas_350" + +"$out_of_gas_349": ; preds = %"$have_gas_345" + call void @_out_of_gas() + br label %"$have_gas_350" + +"$have_gas_350": ; preds = %"$out_of_gas_349", %"$have_gas_345" + %"$consume_351" = sub i64 %"$gasrem_347", 1 + store i64 %"$consume_351", i64* @_gasrem, align 8 + %"$msgobj_352_salloc_load" = load i8*, i8** @_execptr, align 8 + %"$msgobj_352_salloc_salloc" = call i8* @_salloc(i8* %"$msgobj_352_salloc_load", i64 121) + %"$msgobj_352_salloc" = bitcast i8* %"$msgobj_352_salloc_salloc" to [121 x i8]* + %"$msgobj_352" = bitcast [121 x i8]* %"$msgobj_352_salloc" to i8* + store i8 3, i8* %"$msgobj_352", align 1 + %"$msgobj_fname_354" = getelementptr i8, i8* %"$msgobj_352", i32 1 + %"$msgobj_fname_355" = bitcast i8* %"$msgobj_fname_354" to %String* + store %String { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$stringlit_353", i32 0, i32 0), i32 10 }, %String* %"$msgobj_fname_355", align 8 + %"$msgobj_td_356" = getelementptr i8, i8* %"$msgobj_352", i32 17 + %"$msgobj_td_357" = bitcast i8* %"$msgobj_td_356" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_String_19", %_TyDescrTy_Typ** %"$msgobj_td_357", align 8 + %"$msgobj_v_359" = getelementptr i8, i8* %"$msgobj_352", i32 25 + %"$msgobj_v_360" = bitcast i8* %"$msgobj_v_359" to %String* + store %String { i8* getelementptr inbounds ([50 x i8], [50 x i8]* @"$stringlit_358", i32 0, i32 0), i32 50 }, %String* %"$msgobj_v_360", align 8 + %"$msgobj_fname_362" = getelementptr i8, i8* %"$msgobj_352", i32 41 + %"$msgobj_fname_363" = bitcast i8* %"$msgobj_fname_362" to %String* + store %String { i8* getelementptr inbounds ([8 x i8], [8 x i8]* @"$stringlit_361", i32 0, i32 0), i32 8 }, %String* %"$msgobj_fname_363", align 8 + %"$msgobj_td_364" = getelementptr i8, i8* %"$msgobj_352", i32 57 + %"$msgobj_td_365" = bitcast i8* %"$msgobj_td_364" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", %_TyDescrTy_Typ** %"$msgobj_td_365", align 8 + %"$msgobj_v_366" = getelementptr i8, i8* %"$msgobj_352", i32 65 + %"$msgobj_v_367" = bitcast i8* %"$msgobj_v_366" to %Uint128* + store %Uint128 %expected_balance, %Uint128* %"$msgobj_v_367", align 8 + %"$msgobj_fname_369" = getelementptr i8, i8* %"$msgobj_352", i32 81 + %"$msgobj_fname_370" = bitcast i8* %"$msgobj_fname_369" to %String* + store %String { i8* getelementptr inbounds ([6 x i8], [6 x i8]* @"$stringlit_368", i32 0, i32 0), i32 6 }, %String* %"$msgobj_fname_370", align 8 + %"$msgobj_td_371" = getelementptr i8, i8* %"$msgobj_352", i32 97 + %"$msgobj_td_372" = bitcast i8* %"$msgobj_td_371" to %_TyDescrTy_Typ** + store %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", %_TyDescrTy_Typ** %"$msgobj_td_372", align 8 + %"$cur_balance_373" = load %Uint128, %Uint128* %cur_balance, align 8 + %"$msgobj_v_374" = getelementptr i8, i8* %"$msgobj_352", i32 105 + %"$msgobj_v_375" = bitcast i8* %"$msgobj_v_374" to %Uint128* + store %Uint128 %"$cur_balance_373", %Uint128* %"$msgobj_v_375", align 8 + store i8* %"$msgobj_352", i8** %e, align 8 + %"$e_377" = load i8*, i8** %e, align 8 + %"$_literal_cost_call_379" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Exception_27", i8* %"$e_377") + %"$gasrem_380" = load i64, i64* @_gasrem, align 8 + %"$gascmp_381" = icmp ugt i64 %"$_literal_cost_call_379", %"$gasrem_380" + br i1 %"$gascmp_381", label %"$out_of_gas_382", label %"$have_gas_383" + +"$out_of_gas_382": ; preds = %"$have_gas_350" + call void @_out_of_gas() + br label %"$have_gas_383" + +"$have_gas_383": ; preds = %"$out_of_gas_382", %"$have_gas_350" + %"$consume_384" = sub i64 %"$gasrem_380", %"$_literal_cost_call_379" + store i64 %"$consume_384", i64* @_gasrem, align 8 + %"$execptr_load_385" = load i8*, i8** @_execptr, align 8 + %"$e_386" = load i8*, i8** %e, align 8 + call void @_throw(i8* %"$execptr_load_385", %_TyDescrTy_Typ* @"$TyDescr_Exception_27", i8* %"$e_386") + br label %"$matchsucc_333" + +"$empty_default_337": ; preds = %"$have_gas_331" + br label %"$matchsucc_333" + +"$matchsucc_333": ; preds = %"$have_gas_383", %"$True_338", %"$empty_default_337" + ret void +} + +declare i8* @_fetch_remote_field(i8*, [20 x i8]*, i8*, %_TyDescrTy_Typ*, i32, i8*, i32) + +define internal void @"$AcceptAndCheckBalance_387"(%Uint128 %_amount, [20 x i8]* %"$_origin_388", [20 x i8]* %"$_sender_389") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_388", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_389", align 1 + %init_bal = alloca %Uint128, align 8 + %"$execptr_load_391" = load i8*, i8** @_execptr, align 8 + %"$init_bal_call_392" = call i8* @_fetch_field(i8* %"$execptr_load_391", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_390", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i32 0, i8* null, i32 1) + %"$init_bal_393" = bitcast i8* %"$init_bal_call_392" to %Uint128* + %"$init_bal_394" = load %Uint128, %Uint128* %"$init_bal_393", align 8 + store %Uint128 %"$init_bal_394", %Uint128* %init_bal, align 8 + %"$_literal_cost_init_bal_395" = alloca %Uint128, align 8 + %"$init_bal_396" = load %Uint128, %Uint128* %init_bal, align 8 + store %Uint128 %"$init_bal_396", %Uint128* %"$_literal_cost_init_bal_395", align 8 + %"$$_literal_cost_init_bal_395_397" = bitcast %Uint128* %"$_literal_cost_init_bal_395" to i8* + %"$_literal_cost_call_398" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i8* %"$$_literal_cost_init_bal_395_397") + %"$gasadd_399" = add i64 %"$_literal_cost_call_398", 0 + %"$gasrem_400" = load i64, i64* @_gasrem, align 8 + %"$gascmp_401" = icmp ugt i64 %"$gasadd_399", %"$gasrem_400" + br i1 %"$gascmp_401", label %"$out_of_gas_402", label %"$have_gas_403" + +"$out_of_gas_402": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_403" + +"$have_gas_403": ; preds = %"$out_of_gas_402", %entry + %"$consume_404" = sub i64 %"$gasrem_400", %"$gasadd_399" + store i64 %"$consume_404", i64* @_gasrem, align 8 + %"$gasrem_405" = load i64, i64* @_gasrem, align 8 + %"$gascmp_406" = icmp ugt i64 1, %"$gasrem_405" + br i1 %"$gascmp_406", label %"$out_of_gas_407", label %"$have_gas_408" + +"$out_of_gas_407": ; preds = %"$have_gas_403" + call void @_out_of_gas() + br label %"$have_gas_408" + +"$have_gas_408": ; preds = %"$out_of_gas_407", %"$have_gas_403" + %"$consume_409" = sub i64 %"$gasrem_405", 1 + store i64 %"$consume_409", i64* @_gasrem, align 8 + %"$execptr_load_410" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_410") + %"$gasrem_411" = load i64, i64* @_gasrem, align 8 + %"$gascmp_412" = icmp ugt i64 1, %"$gasrem_411" + br i1 %"$gascmp_412", label %"$out_of_gas_413", label %"$have_gas_414" + +"$out_of_gas_413": ; preds = %"$have_gas_408" + call void @_out_of_gas() + br label %"$have_gas_414" + +"$have_gas_414": ; preds = %"$out_of_gas_413", %"$have_gas_408" + %"$consume_415" = sub i64 %"$gasrem_411", 1 + store i64 %"$consume_415", i64* @_gasrem, align 8 + %expected_balance = alloca %Uint128, align 8 + %"$init_bal_416" = load %Uint128, %Uint128* %init_bal, align 8 + %"$add_call_417" = call %Uint128 @_add_Uint128(%Uint128 %"$init_bal_416", %Uint128 %_amount) + store %Uint128 %"$add_call_417", %Uint128* %expected_balance, align 8 + %"$gasrem_418" = load i64, i64* @_gasrem, align 8 + %"$gascmp_419" = icmp ugt i64 1, %"$gasrem_418" + br i1 %"$gascmp_419", label %"$out_of_gas_420", label %"$have_gas_421" + +"$out_of_gas_420": ; preds = %"$have_gas_414" + call void @_out_of_gas() + br label %"$have_gas_421" + +"$have_gas_421": ; preds = %"$out_of_gas_420", %"$have_gas_414" + %"$consume_422" = sub i64 %"$gasrem_418", 1 + store i64 %"$consume_422", i64* @_gasrem, align 8 + %"$CheckBalance__origin_423" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_423", align 1 + %"$CheckBalance__sender_424" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_424", align 1 + %"$expected_balance_425" = load %Uint128, %Uint128* %expected_balance, align 8 + call void @"$CheckBalance_214"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_423", [20 x i8]* %"$CheckBalance__sender_424", %Uint128 %"$expected_balance_425") + ret void +} + +declare %Uint128 @_add_Uint128(%Uint128, %Uint128) + +define void @AcceptAndCheckBalance(i8* %0) { +entry: + %"$_amount_427" = getelementptr i8, i8* %0, i32 0 + %"$_amount_428" = bitcast i8* %"$_amount_427" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_428", align 8 + %"$_origin_429" = getelementptr i8, i8* %0, i32 16 + %"$_origin_430" = bitcast i8* %"$_origin_429" to [20 x i8]* + %"$_sender_431" = getelementptr i8, i8* %0, i32 36 + %"$_sender_432" = bitcast i8* %"$_sender_431" to [20 x i8]* + call void @"$AcceptAndCheckBalance_387"(%Uint128 %_amount, [20 x i8]* %"$_origin_430", [20 x i8]* %"$_sender_432") + ret void +} + +define internal void @"$AcceptTwiceAndCheckBalance_433"(%Uint128 %_amount, [20 x i8]* %"$_origin_434", [20 x i8]* %"$_sender_435") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_434", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_435", align 1 + %init_bal = alloca %Uint128, align 8 + %"$execptr_load_437" = load i8*, i8** @_execptr, align 8 + %"$init_bal_call_438" = call i8* @_fetch_field(i8* %"$execptr_load_437", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_436", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i32 0, i8* null, i32 1) + %"$init_bal_439" = bitcast i8* %"$init_bal_call_438" to %Uint128* + %"$init_bal_440" = load %Uint128, %Uint128* %"$init_bal_439", align 8 + store %Uint128 %"$init_bal_440", %Uint128* %init_bal, align 8 + %"$_literal_cost_init_bal_441" = alloca %Uint128, align 8 + %"$init_bal_442" = load %Uint128, %Uint128* %init_bal, align 8 + store %Uint128 %"$init_bal_442", %Uint128* %"$_literal_cost_init_bal_441", align 8 + %"$$_literal_cost_init_bal_441_443" = bitcast %Uint128* %"$_literal_cost_init_bal_441" to i8* + %"$_literal_cost_call_444" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i8* %"$$_literal_cost_init_bal_441_443") + %"$gasadd_445" = add i64 %"$_literal_cost_call_444", 0 + %"$gasrem_446" = load i64, i64* @_gasrem, align 8 + %"$gascmp_447" = icmp ugt i64 %"$gasadd_445", %"$gasrem_446" + br i1 %"$gascmp_447", label %"$out_of_gas_448", label %"$have_gas_449" + +"$out_of_gas_448": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_449" + +"$have_gas_449": ; preds = %"$out_of_gas_448", %entry + %"$consume_450" = sub i64 %"$gasrem_446", %"$gasadd_445" + store i64 %"$consume_450", i64* @_gasrem, align 8 + %"$gasrem_451" = load i64, i64* @_gasrem, align 8 + %"$gascmp_452" = icmp ugt i64 1, %"$gasrem_451" + br i1 %"$gascmp_452", label %"$out_of_gas_453", label %"$have_gas_454" + +"$out_of_gas_453": ; preds = %"$have_gas_449" + call void @_out_of_gas() + br label %"$have_gas_454" + +"$have_gas_454": ; preds = %"$out_of_gas_453", %"$have_gas_449" + %"$consume_455" = sub i64 %"$gasrem_451", 1 + store i64 %"$consume_455", i64* @_gasrem, align 8 + %"$execptr_load_456" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_456") + %"$gasrem_457" = load i64, i64* @_gasrem, align 8 + %"$gascmp_458" = icmp ugt i64 1, %"$gasrem_457" + br i1 %"$gascmp_458", label %"$out_of_gas_459", label %"$have_gas_460" + +"$out_of_gas_459": ; preds = %"$have_gas_454" + call void @_out_of_gas() + br label %"$have_gas_460" + +"$have_gas_460": ; preds = %"$out_of_gas_459", %"$have_gas_454" + %"$consume_461" = sub i64 %"$gasrem_457", 1 + store i64 %"$consume_461", i64* @_gasrem, align 8 + %expected_balance = alloca %Uint128, align 8 + %"$init_bal_462" = load %Uint128, %Uint128* %init_bal, align 8 + %"$add_call_463" = call %Uint128 @_add_Uint128(%Uint128 %"$init_bal_462", %Uint128 %_amount) + store %Uint128 %"$add_call_463", %Uint128* %expected_balance, align 8 + %"$gasrem_464" = load i64, i64* @_gasrem, align 8 + %"$gascmp_465" = icmp ugt i64 1, %"$gasrem_464" + br i1 %"$gascmp_465", label %"$out_of_gas_466", label %"$have_gas_467" + +"$out_of_gas_466": ; preds = %"$have_gas_460" + call void @_out_of_gas() + br label %"$have_gas_467" + +"$have_gas_467": ; preds = %"$out_of_gas_466", %"$have_gas_460" + %"$consume_468" = sub i64 %"$gasrem_464", 1 + store i64 %"$consume_468", i64* @_gasrem, align 8 + %"$CheckBalance__origin_469" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_469", align 1 + %"$CheckBalance__sender_470" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_470", align 1 + %"$expected_balance_471" = load %Uint128, %Uint128* %expected_balance, align 8 + call void @"$CheckBalance_214"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_469", [20 x i8]* %"$CheckBalance__sender_470", %Uint128 %"$expected_balance_471") + %"$gasrem_472" = load i64, i64* @_gasrem, align 8 + %"$gascmp_473" = icmp ugt i64 1, %"$gasrem_472" + br i1 %"$gascmp_473", label %"$out_of_gas_474", label %"$have_gas_475" + +"$out_of_gas_474": ; preds = %"$have_gas_467" + call void @_out_of_gas() + br label %"$have_gas_475" + +"$have_gas_475": ; preds = %"$out_of_gas_474", %"$have_gas_467" + %"$consume_476" = sub i64 %"$gasrem_472", 1 + store i64 %"$consume_476", i64* @_gasrem, align 8 + %"$execptr_load_477" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_477") + %"$gasrem_478" = load i64, i64* @_gasrem, align 8 + %"$gascmp_479" = icmp ugt i64 1, %"$gasrem_478" + br i1 %"$gascmp_479", label %"$out_of_gas_480", label %"$have_gas_481" + +"$out_of_gas_480": ; preds = %"$have_gas_475" + call void @_out_of_gas() + br label %"$have_gas_481" + +"$have_gas_481": ; preds = %"$out_of_gas_480", %"$have_gas_475" + %"$consume_482" = sub i64 %"$gasrem_478", 1 + store i64 %"$consume_482", i64* @_gasrem, align 8 + %"$CheckBalance__origin_483" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckBalance__origin_483", align 1 + %"$CheckBalance__sender_484" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckBalance__sender_484", align 1 + %"$expected_balance_485" = load %Uint128, %Uint128* %expected_balance, align 8 + call void @"$CheckBalance_214"(%Uint128 %_amount, [20 x i8]* %"$CheckBalance__origin_483", [20 x i8]* %"$CheckBalance__sender_484", %Uint128 %"$expected_balance_485") + ret void +} + +define void @AcceptTwiceAndCheckBalance(i8* %0) { +entry: + %"$_amount_487" = getelementptr i8, i8* %0, i32 0 + %"$_amount_488" = bitcast i8* %"$_amount_487" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_488", align 8 + %"$_origin_489" = getelementptr i8, i8* %0, i32 16 + %"$_origin_490" = bitcast i8* %"$_origin_489" to [20 x i8]* + %"$_sender_491" = getelementptr i8, i8* %0, i32 36 + %"$_sender_492" = bitcast i8* %"$_sender_491" to [20 x i8]* + call void @"$AcceptTwiceAndCheckBalance_433"(%Uint128 %_amount, [20 x i8]* %"$_origin_490", [20 x i8]* %"$_sender_492") + ret void +} + +define internal void @"$AcceptAndCheckSenderBalance_493"(%Uint128 %_amount, [20 x i8]* %"$_origin_494", [20 x i8]* %"$_sender_495") { +entry: + %_origin = load [20 x i8], [20 x i8]* %"$_origin_494", align 1 + %_sender = load [20 x i8], [20 x i8]* %"$_sender_495", align 1 + %init_bal = alloca %Uint128, align 8 + %"$execptr_load_497" = load i8*, i8** @_execptr, align 8 + %"$init_bal__sender_498" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$init_bal__sender_498", align 1 + %"$init_bal_call_499" = call i8* @_fetch_remote_field(i8* %"$execptr_load_497", [20 x i8]* %"$init_bal__sender_498", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_496", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i32 0, i8* null, i32 1) + %"$init_bal_500" = bitcast i8* %"$init_bal_call_499" to %Uint128* + %"$init_bal_501" = load %Uint128, %Uint128* %"$init_bal_500", align 8 + store %Uint128 %"$init_bal_501", %Uint128* %init_bal, align 8 + %"$_literal_cost_init_bal_502" = alloca %Uint128, align 8 + %"$init_bal_503" = load %Uint128, %Uint128* %init_bal, align 8 + store %Uint128 %"$init_bal_503", %Uint128* %"$_literal_cost_init_bal_502", align 8 + %"$$_literal_cost_init_bal_502_504" = bitcast %Uint128* %"$_literal_cost_init_bal_502" to i8* + %"$_literal_cost_call_505" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_13", i8* %"$$_literal_cost_init_bal_502_504") + %"$gasadd_506" = add i64 %"$_literal_cost_call_505", 0 + %"$gasrem_507" = load i64, i64* @_gasrem, align 8 + %"$gascmp_508" = icmp ugt i64 %"$gasadd_506", %"$gasrem_507" + br i1 %"$gascmp_508", label %"$out_of_gas_509", label %"$have_gas_510" + +"$out_of_gas_509": ; preds = %entry + call void @_out_of_gas() + br label %"$have_gas_510" + +"$have_gas_510": ; preds = %"$out_of_gas_509", %entry + %"$consume_511" = sub i64 %"$gasrem_507", %"$gasadd_506" + store i64 %"$consume_511", i64* @_gasrem, align 8 + %"$gasrem_512" = load i64, i64* @_gasrem, align 8 + %"$gascmp_513" = icmp ugt i64 1, %"$gasrem_512" + br i1 %"$gascmp_513", label %"$out_of_gas_514", label %"$have_gas_515" + +"$out_of_gas_514": ; preds = %"$have_gas_510" + call void @_out_of_gas() + br label %"$have_gas_515" + +"$have_gas_515": ; preds = %"$out_of_gas_514", %"$have_gas_510" + %"$consume_516" = sub i64 %"$gasrem_512", 1 + store i64 %"$consume_516", i64* @_gasrem, align 8 + %"$execptr_load_517" = load i8*, i8** @_execptr, align 8 + call void @_accept(i8* %"$execptr_load_517") + %"$gasrem_518" = load i64, i64* @_gasrem, align 8 + %"$gascmp_519" = icmp ugt i64 1, %"$gasrem_518" + br i1 %"$gascmp_519", label %"$out_of_gas_520", label %"$have_gas_521" + +"$out_of_gas_520": ; preds = %"$have_gas_515" + call void @_out_of_gas() + br label %"$have_gas_521" + +"$have_gas_521": ; preds = %"$out_of_gas_520", %"$have_gas_515" + %"$consume_522" = sub i64 %"$gasrem_518", 1 + store i64 %"$consume_522", i64* @_gasrem, align 8 + %"$CheckSenderBalance__origin_523" = alloca [20 x i8], align 1 + store [20 x i8] %_origin, [20 x i8]* %"$CheckSenderBalance__origin_523", align 1 + %"$CheckSenderBalance__sender_524" = alloca [20 x i8], align 1 + store [20 x i8] %_sender, [20 x i8]* %"$CheckSenderBalance__sender_524", align 1 + %"$init_bal_525" = load %Uint128, %Uint128* %init_bal, align 8 + call void @"$CheckSenderBalance_300"(%Uint128 %_amount, [20 x i8]* %"$CheckSenderBalance__origin_523", [20 x i8]* %"$CheckSenderBalance__sender_524", %Uint128 %"$init_bal_525") + ret void +} + +define void @AcceptAndCheckSenderBalance(i8* %0) { +entry: + %"$_amount_527" = getelementptr i8, i8* %0, i32 0 + %"$_amount_528" = bitcast i8* %"$_amount_527" to %Uint128* + %_amount = load %Uint128, %Uint128* %"$_amount_528", align 8 + %"$_origin_529" = getelementptr i8, i8* %0, i32 16 + %"$_origin_530" = bitcast i8* %"$_origin_529" to [20 x i8]* + %"$_sender_531" = getelementptr i8, i8* %0, i32 36 + %"$_sender_532" = bitcast i8* %"$_sender_531" to [20 x i8]* + call void @"$AcceptAndCheckSenderBalance_493"(%Uint128 %_amount, [20 x i8]* %"$_origin_530", [20 x i8]* %"$_sender_532") + ret void +} diff --git a/tests/codegen/contr/gold/remote_state_reads.scilla.gold b/tests/codegen/contr/gold/remote_state_reads.scilla.gold index 3773df51..77248952 100644 --- a/tests/codegen/contr/gold/remote_state_reads.scilla.gold +++ b/tests/codegen/contr/gold/remote_state_reads.scilla.gold @@ -16,9 +16,9 @@ target triple = "x86_64-unknown-linux-gnu" %"$TyDescr_AddrFieldTyp_85" = type { %TyDescrString, %_TyDescrTy_Typ* } %"$TyDescr_AddrTyp_86" = type { i32, %"$TyDescr_AddrFieldTyp_85"* } %Uint32 = type { i32 } -%"$ParamDescr_1579" = type { %ParamDescrString, %_TyDescrTy_Typ* } +%"$ParamDescr_1467" = type { %ParamDescrString, %_TyDescrTy_Typ* } %ParamDescrString = type { i8*, i32 } -%"$TransDescr_1580" = type { %ParamDescrString, i32, %"$ParamDescr_1579"* } +%"$TransDescr_1468" = type { %ParamDescrString, i32, %"$ParamDescr_1467"* } %TName_0x3620c286757a29985cee194eb90064270fb65414.AddressADT = type { i8, %CName_0x3620c286757a29985cee194eb90064270fb65414.Address1*, %CName_0x3620c286757a29985cee194eb90064270fb65414.Address2* } %CName_0x3620c286757a29985cee194eb90064270fb65414.Address1 = type <{ i8, [20 x i8] }> %CName_0x3620c286757a29985cee194eb90064270fb65414.Address2 = type <{ i8, [20 x i8] }> @@ -367,63 +367,52 @@ target triple = "x86_64-unknown-linux-gnu" @"$assign_test_9_1341" = unnamed_addr constant [14 x i8] c"assign_test_9\00" @"$assign_test_10_1419" = unnamed_addr constant [15 x i8] c"assign_test_10\00" @"$assign_test_10_1457" = unnamed_addr constant [15 x i8] c"assign_test_10\00" -@"$_balance_1470" = unnamed_addr constant [9 x i8] c"_balance\00" -@"$sender_balance_pre_1496" = unnamed_addr constant [19 x i8] c"sender_balance_pre\00" -@"$_balance_1506" = unnamed_addr constant [9 x i8] c"_balance\00" -@"$sender_balance_mid_1532" = unnamed_addr constant [19 x i8] c"sender_balance_mid\00" -@"$_balance_1542" = unnamed_addr constant [9 x i8] c"_balance\00" -@"$sender_balance_post_1568" = unnamed_addr constant [20 x i8] c"sender_balance_post\00" @_tydescr_table = constant [48 x %_TyDescrTy_Typ*] [%_TyDescrTy_Typ* @"$TyDescr_Map_83", %_TyDescrTy_Typ* @"$TyDescr_Event_54", %_TyDescrTy_Typ* @"$TyDescr_Int64_36", %_TyDescrTy_Typ* @"$TyDescr_Addr_95", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_69", %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_ByStr20_with_end_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_70", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_contract_field_g_:_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_end_65", %_TyDescrTy_Typ* @"$TyDescr_Addr_91", %_TyDescrTy_Typ* @"$TyDescr_Addr_88", %_TyDescrTy_Typ* @"$TyDescr_Map_81", %_TyDescrTy_Typ* @"$TyDescr_Exception_56", %_TyDescrTy_Typ* @"$TyDescr_String_48", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Map_(ByStr20_with_end)_(Bool)_72", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_68", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_contract_field_f_:_Uint128_end_66", %_TyDescrTy_Typ* @"$TyDescr_Int256_44", %_TyDescrTy_Typ* @"$TyDescr_Int128_40", %_TyDescrTy_Typ* @"$TyDescr_Addr_97", %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_ByStr20_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_71", %_TyDescrTy_Typ* @"$TyDescr_Bystr_58", %_TyDescrTy_Typ* @"$TyDescr_Addr_93", %_TyDescrTy_Typ* @"$TyDescr_Map_84", %_TyDescrTy_Typ* @"$TyDescr_Map_80", %_TyDescrTy_Typ* @"$TyDescr_Map_78", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_end_67", %_TyDescrTy_Typ* @"$TyDescr_ADT_List_Message_64", %_TyDescrTy_Typ* @"$TyDescr_Map_82", %_TyDescrTy_Typ* @"$TyDescr_ADT_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_74", %_TyDescrTy_Typ* @"$TyDescr_Addr_99", %_TyDescrTy_Typ* @"$TyDescr_ADT_Bool_75", %_TyDescrTy_Typ* @"$TyDescr_Bystr20_60", %_TyDescrTy_Typ* @"$TyDescr_Uint256_46", %_TyDescrTy_Typ* @"$TyDescr_Uint32_34", %_TyDescrTy_Typ* @"$TyDescr_Addr_98", %_TyDescrTy_Typ* @"$TyDescr_Addr_89", %_TyDescrTy_Typ* @"$TyDescr_Addr_87", %_TyDescrTy_Typ* @"$TyDescr_ADT_Option_Bool_73", %_TyDescrTy_Typ* @"$TyDescr_Uint64_38", %_TyDescrTy_Typ* @"$TyDescr_Bnum_50", %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", %_TyDescrTy_Typ* @"$TyDescr_Addr_94", %_TyDescrTy_Typ* @"$TyDescr_Map_79", %_TyDescrTy_Typ* @"$TyDescr_Addr_90", %_TyDescrTy_Typ* @"$TyDescr_Addr_92", %_TyDescrTy_Typ* @"$TyDescr_Map_77", %_TyDescrTy_Typ* @"$TyDescr_Message_52", %_TyDescrTy_Typ* @"$TyDescr_Addr_96", %_TyDescrTy_Typ* @"$TyDescr_Int32_32"] @_tydescr_table_length = constant i32 48 -@"$pname__scilla_version_1581" = unnamed_addr constant [15 x i8] c"_scilla_version" -@"$pname__this_address_1582" = unnamed_addr constant [13 x i8] c"_this_address" -@"$pname__creation_block_1583" = unnamed_addr constant [15 x i8] c"_creation_block" -@"$pname_cparam1_1584" = unnamed_addr constant [7 x i8] c"cparam1" -@"$pname_cparam2_1585" = unnamed_addr constant [7 x i8] c"cparam2" -@"$pname_cparam3_1586" = unnamed_addr constant [7 x i8] c"cparam3" -@_contract_parameters = constant [6 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__scilla_version_1581", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Uint32_34" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$pname__this_address_1582", i32 0, i32 0), i32 13 }, %_TyDescrTy_Typ* @"$TyDescr_Bystr20_60" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__creation_block_1583", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Bnum_50" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$pname_cparam1_1584", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$pname_cparam2_1585", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_98" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$pname_cparam3_1586", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_97" }] +@"$pname__scilla_version_1469" = unnamed_addr constant [15 x i8] c"_scilla_version" +@"$pname__this_address_1470" = unnamed_addr constant [13 x i8] c"_this_address" +@"$pname__creation_block_1471" = unnamed_addr constant [15 x i8] c"_creation_block" +@"$pname_cparam1_1472" = unnamed_addr constant [7 x i8] c"cparam1" +@"$pname_cparam2_1473" = unnamed_addr constant [7 x i8] c"cparam2" +@"$pname_cparam3_1474" = unnamed_addr constant [7 x i8] c"cparam3" +@_contract_parameters = constant [6 x %"$ParamDescr_1467"] [%"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__scilla_version_1469", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Uint32_34" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$pname__this_address_1470", i32 0, i32 0), i32 13 }, %_TyDescrTy_Typ* @"$TyDescr_Bystr20_60" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$pname__creation_block_1471", i32 0, i32 0), i32 15 }, %_TyDescrTy_Typ* @"$TyDescr_Bnum_50" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$pname_cparam1_1472", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$pname_cparam2_1473", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_98" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$pname_cparam3_1474", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_97" }] @_contract_parameters_length = constant i32 6 -@"$tpname__amount_1587" = unnamed_addr constant [7 x i8] c"_amount" -@"$tpname__origin_1588" = unnamed_addr constant [7 x i8] c"_origin" -@"$tpname__sender_1589" = unnamed_addr constant [7 x i8] c"_sender" -@"$tpname_remote1_1590" = unnamed_addr constant [7 x i8] c"remote1" -@"$tpname_remote2_1591" = unnamed_addr constant [7 x i8] c"remote2" -@"$tpname_remote3_1592" = unnamed_addr constant [7 x i8] c"remote3" -@"$tparams_RemoteReadsTest_1593" = unnamed_addr constant [6 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1587", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1588", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1589", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote1_1590", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote2_1591", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_98" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote3_1592", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_90" }] -@"$tname_RemoteReadsTest_1594" = unnamed_addr constant [15 x i8] c"RemoteReadsTest" -@"$tpname__amount_1595" = unnamed_addr constant [7 x i8] c"_amount" -@"$tpname__origin_1596" = unnamed_addr constant [7 x i8] c"_origin" -@"$tpname__sender_1597" = unnamed_addr constant [7 x i8] c"_sender" -@"$tpname_list1_1598" = unnamed_addr constant [5 x i8] c"list1" -@"$tpname_list2_1599" = unnamed_addr constant [5 x i8] c"list2" -@"$tpname_list3_1600" = unnamed_addr constant [5 x i8] c"list3" -@"$tpname_pair1_1601" = unnamed_addr constant [5 x i8] c"pair1" -@"$tpname_adt1_1602" = unnamed_addr constant [4 x i8] c"adt1" -@"$tpname_remote1_1603" = unnamed_addr constant [7 x i8] c"remote1" -@"$tparams_RemoteReadsADTTest_1604" = unnamed_addr constant [9 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1595", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1596", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1597", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_list1_1598", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_end_67" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_list2_1599", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_contract_field_f_:_Uint128_end_66" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_list3_1600", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_contract_field_g_:_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_end_65" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_pair1_1601", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_ByStr20_with_end_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_70" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$tpname_adt1_1602", i32 0, i32 0), i32 4 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_74" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote1_1603", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_87" }] -@"$tname_RemoteReadsADTTest_1605" = unnamed_addr constant [18 x i8] c"RemoteReadsADTTest" -@"$tpname__amount_1606" = unnamed_addr constant [7 x i8] c"_amount" -@"$tpname__origin_1607" = unnamed_addr constant [7 x i8] c"_origin" -@"$tpname__sender_1608" = unnamed_addr constant [7 x i8] c"_sender" -@"$tparams_OutgoingMsgTest_1609" = unnamed_addr constant [3 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1606", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1607", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1608", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] -@"$tname_OutgoingMsgTest_1610" = unnamed_addr constant [15 x i8] c"OutgoingMsgTest" -@"$tpname__amount_1611" = unnamed_addr constant [7 x i8] c"_amount" -@"$tpname__origin_1612" = unnamed_addr constant [7 x i8] c"_origin" -@"$tpname__sender_1613" = unnamed_addr constant [7 x i8] c"_sender" -@"$tparams_ExceptionTest_1614" = unnamed_addr constant [3 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1611", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1612", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1613", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] -@"$tname_ExceptionTest_1615" = unnamed_addr constant [13 x i8] c"ExceptionTest" -@"$tpname__amount_1616" = unnamed_addr constant [7 x i8] c"_amount" -@"$tpname__origin_1617" = unnamed_addr constant [7 x i8] c"_origin" -@"$tpname__sender_1618" = unnamed_addr constant [7 x i8] c"_sender" -@"$tparams_AssignTest_1619" = unnamed_addr constant [3 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1616", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1617", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1618", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] -@"$tname_AssignTest_1620" = unnamed_addr constant [10 x i8] c"AssignTest" -@"$tpname__amount_1621" = unnamed_addr constant [7 x i8] c"_amount" -@"$tpname__origin_1622" = unnamed_addr constant [7 x i8] c"_origin" -@"$tpname__sender_1623" = unnamed_addr constant [7 x i8] c"_sender" -@"$tparams_SenderBalanceTest_1624" = unnamed_addr constant [3 x %"$ParamDescr_1579"] [%"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1621", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1622", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1579" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1623", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] -@"$tname_SenderBalanceTest_1625" = unnamed_addr constant [17 x i8] c"SenderBalanceTest" -@_transition_parameters = constant [6 x %"$TransDescr_1580"] [%"$TransDescr_1580" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$tname_RemoteReadsTest_1594", i32 0, i32 0), i32 15 }, i32 6, %"$ParamDescr_1579"* getelementptr inbounds ([6 x %"$ParamDescr_1579"], [6 x %"$ParamDescr_1579"]* @"$tparams_RemoteReadsTest_1593", i32 0, i32 0) }, %"$TransDescr_1580" { %ParamDescrString { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$tname_RemoteReadsADTTest_1605", i32 0, i32 0), i32 18 }, i32 9, %"$ParamDescr_1579"* getelementptr inbounds ([9 x %"$ParamDescr_1579"], [9 x %"$ParamDescr_1579"]* @"$tparams_RemoteReadsADTTest_1604", i32 0, i32 0) }, %"$TransDescr_1580" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$tname_OutgoingMsgTest_1610", i32 0, i32 0), i32 15 }, i32 3, %"$ParamDescr_1579"* getelementptr inbounds ([3 x %"$ParamDescr_1579"], [3 x %"$ParamDescr_1579"]* @"$tparams_OutgoingMsgTest_1609", i32 0, i32 0) }, %"$TransDescr_1580" { %ParamDescrString { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$tname_ExceptionTest_1615", i32 0, i32 0), i32 13 }, i32 3, %"$ParamDescr_1579"* getelementptr inbounds ([3 x %"$ParamDescr_1579"], [3 x %"$ParamDescr_1579"]* @"$tparams_ExceptionTest_1614", i32 0, i32 0) }, %"$TransDescr_1580" { %ParamDescrString { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$tname_AssignTest_1620", i32 0, i32 0), i32 10 }, i32 3, %"$ParamDescr_1579"* getelementptr inbounds ([3 x %"$ParamDescr_1579"], [3 x %"$ParamDescr_1579"]* @"$tparams_AssignTest_1619", i32 0, i32 0) }, %"$TransDescr_1580" { %ParamDescrString { i8* getelementptr inbounds ([17 x i8], [17 x i8]* @"$tname_SenderBalanceTest_1625", i32 0, i32 0), i32 17 }, i32 3, %"$ParamDescr_1579"* getelementptr inbounds ([3 x %"$ParamDescr_1579"], [3 x %"$ParamDescr_1579"]* @"$tparams_SenderBalanceTest_1624", i32 0, i32 0) }] -@_transition_parameters_length = constant i32 6 +@"$tpname__amount_1475" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_1476" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_1477" = unnamed_addr constant [7 x i8] c"_sender" +@"$tpname_remote1_1478" = unnamed_addr constant [7 x i8] c"remote1" +@"$tpname_remote2_1479" = unnamed_addr constant [7 x i8] c"remote2" +@"$tpname_remote3_1480" = unnamed_addr constant [7 x i8] c"remote3" +@"$tparams_RemoteReadsTest_1481" = unnamed_addr constant [6 x %"$ParamDescr_1467"] [%"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1475", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1476", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1477", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote1_1478", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote2_1479", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_98" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote3_1480", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_90" }] +@"$tname_RemoteReadsTest_1482" = unnamed_addr constant [15 x i8] c"RemoteReadsTest" +@"$tpname__amount_1483" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_1484" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_1485" = unnamed_addr constant [7 x i8] c"_sender" +@"$tpname_list1_1486" = unnamed_addr constant [5 x i8] c"list1" +@"$tpname_list2_1487" = unnamed_addr constant [5 x i8] c"list2" +@"$tpname_list3_1488" = unnamed_addr constant [5 x i8] c"list3" +@"$tpname_pair1_1489" = unnamed_addr constant [5 x i8] c"pair1" +@"$tpname_adt1_1490" = unnamed_addr constant [4 x i8] c"adt1" +@"$tpname_remote1_1491" = unnamed_addr constant [7 x i8] c"remote1" +@"$tparams_RemoteReadsADTTest_1492" = unnamed_addr constant [9 x %"$ParamDescr_1467"] [%"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1483", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1484", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1485", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_list1_1486", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_end_67" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_list2_1487", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_contract_field_f_:_Uint128_end_66" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_list3_1488", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_List_ByStr20_with_contract_field_g_:_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_end_65" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([5 x i8], [5 x i8]* @"$tpname_pair1_1489", i32 0, i32 0), i32 5 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_Pair_ByStr20_with_end_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_70" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([4 x i8], [4 x i8]* @"$tpname_adt1_1490", i32 0, i32 0), i32 4 }, %_TyDescrTy_Typ* @"$TyDescr_ADT_0x3620c286757a29985cee194eb90064270fb65414.AddressADT_74" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname_remote1_1491", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_87" }] +@"$tname_RemoteReadsADTTest_1493" = unnamed_addr constant [18 x i8] c"RemoteReadsADTTest" +@"$tpname__amount_1494" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_1495" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_1496" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_OutgoingMsgTest_1497" = unnamed_addr constant [3 x %"$ParamDescr_1467"] [%"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1494", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1495", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1496", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] +@"$tname_OutgoingMsgTest_1498" = unnamed_addr constant [15 x i8] c"OutgoingMsgTest" +@"$tpname__amount_1499" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_1500" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_1501" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_ExceptionTest_1502" = unnamed_addr constant [3 x %"$ParamDescr_1467"] [%"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1499", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1500", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1501", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] +@"$tname_ExceptionTest_1503" = unnamed_addr constant [13 x i8] c"ExceptionTest" +@"$tpname__amount_1504" = unnamed_addr constant [7 x i8] c"_amount" +@"$tpname__origin_1505" = unnamed_addr constant [7 x i8] c"_origin" +@"$tpname__sender_1506" = unnamed_addr constant [7 x i8] c"_sender" +@"$tparams_AssignTest_1507" = unnamed_addr constant [3 x %"$ParamDescr_1467"] [%"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__amount_1504", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Uint128_42" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__origin_1505", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }, %"$ParamDescr_1467" { %ParamDescrString { i8* getelementptr inbounds ([7 x i8], [7 x i8]* @"$tpname__sender_1506", i32 0, i32 0), i32 7 }, %_TyDescrTy_Typ* @"$TyDescr_Addr_99" }] +@"$tname_AssignTest_1508" = unnamed_addr constant [10 x i8] c"AssignTest" +@_transition_parameters = constant [5 x %"$TransDescr_1468"] [%"$TransDescr_1468" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$tname_RemoteReadsTest_1482", i32 0, i32 0), i32 15 }, i32 6, %"$ParamDescr_1467"* getelementptr inbounds ([6 x %"$ParamDescr_1467"], [6 x %"$ParamDescr_1467"]* @"$tparams_RemoteReadsTest_1481", i32 0, i32 0) }, %"$TransDescr_1468" { %ParamDescrString { i8* getelementptr inbounds ([18 x i8], [18 x i8]* @"$tname_RemoteReadsADTTest_1493", i32 0, i32 0), i32 18 }, i32 9, %"$ParamDescr_1467"* getelementptr inbounds ([9 x %"$ParamDescr_1467"], [9 x %"$ParamDescr_1467"]* @"$tparams_RemoteReadsADTTest_1492", i32 0, i32 0) }, %"$TransDescr_1468" { %ParamDescrString { i8* getelementptr inbounds ([15 x i8], [15 x i8]* @"$tname_OutgoingMsgTest_1498", i32 0, i32 0), i32 15 }, i32 3, %"$ParamDescr_1467"* getelementptr inbounds ([3 x %"$ParamDescr_1467"], [3 x %"$ParamDescr_1467"]* @"$tparams_OutgoingMsgTest_1497", i32 0, i32 0) }, %"$TransDescr_1468" { %ParamDescrString { i8* getelementptr inbounds ([13 x i8], [13 x i8]* @"$tname_ExceptionTest_1503", i32 0, i32 0), i32 13 }, i32 3, %"$ParamDescr_1467"* getelementptr inbounds ([3 x %"$ParamDescr_1467"], [3 x %"$ParamDescr_1467"]* @"$tparams_ExceptionTest_1502", i32 0, i32 0) }, %"$TransDescr_1468" { %ParamDescrString { i8* getelementptr inbounds ([10 x i8], [10 x i8]* @"$tname_AssignTest_1508", i32 0, i32 0), i32 10 }, i32 3, %"$ParamDescr_1467"* getelementptr inbounds ([3 x %"$ParamDescr_1467"], [3 x %"$ParamDescr_1467"]* @"$tparams_AssignTest_1507", i32 0, i32 0) }] +@_transition_parameters_length = constant i32 5 define void @_init_libs() { entry: @@ -2565,192 +2554,3 @@ entry: call void @"$AssignTest_1272"(%Uint128 %_amount, [20 x i8]* %"$_origin_1464", [20 x i8]* %"$_sender_1466") ret void } - -define internal void @"$SenderBalanceTest_1467"(%Uint128 %_amount, [20 x i8]* %"$_origin_1468", [20 x i8]* %"$_sender_1469") { -entry: - %_origin = load [20 x i8], [20 x i8]* %"$_origin_1468", align 1 - %_sender = load [20 x i8], [20 x i8]* %"$_sender_1469", align 1 - %pre = alloca %Uint128, align 8 - %"$execptr_load_1471" = load i8*, i8** @_execptr, align 8 - %"$pre__sender_1472" = alloca [20 x i8], align 1 - store [20 x i8] %_sender, [20 x i8]* %"$pre__sender_1472", align 1 - %"$pre_call_1473" = call i8* @_fetch_remote_field(i8* %"$execptr_load_1471", [20 x i8]* %"$pre__sender_1472", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_1470", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i32 0, i8* null, i32 1) - %"$pre_1474" = bitcast i8* %"$pre_call_1473" to %Uint128* - %"$pre_1475" = load %Uint128, %Uint128* %"$pre_1474", align 8 - store %Uint128 %"$pre_1475", %Uint128* %pre, align 8 - %"$_literal_cost_pre_1476" = alloca %Uint128, align 8 - %"$pre_1477" = load %Uint128, %Uint128* %pre, align 8 - store %Uint128 %"$pre_1477", %Uint128* %"$_literal_cost_pre_1476", align 8 - %"$$_literal_cost_pre_1476_1478" = bitcast %Uint128* %"$_literal_cost_pre_1476" to i8* - %"$_literal_cost_call_1479" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i8* %"$$_literal_cost_pre_1476_1478") - %"$gasadd_1480" = add i64 %"$_literal_cost_call_1479", 0 - %"$gasrem_1481" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1482" = icmp ugt i64 %"$gasadd_1480", %"$gasrem_1481" - br i1 %"$gascmp_1482", label %"$out_of_gas_1483", label %"$have_gas_1484" - -"$out_of_gas_1483": ; preds = %entry - call void @_out_of_gas() - br label %"$have_gas_1484" - -"$have_gas_1484": ; preds = %"$out_of_gas_1483", %entry - %"$consume_1485" = sub i64 %"$gasrem_1481", %"$gasadd_1480" - store i64 %"$consume_1485", i64* @_gasrem, align 8 - %"$_literal_cost_pre_1486" = alloca %Uint128, align 8 - %"$pre_1487" = load %Uint128, %Uint128* %pre, align 8 - store %Uint128 %"$pre_1487", %Uint128* %"$_literal_cost_pre_1486", align 8 - %"$$_literal_cost_pre_1486_1488" = bitcast %Uint128* %"$_literal_cost_pre_1486" to i8* - %"$_literal_cost_call_1489" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i8* %"$$_literal_cost_pre_1486_1488") - %"$gasrem_1490" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1491" = icmp ugt i64 %"$_literal_cost_call_1489", %"$gasrem_1490" - br i1 %"$gascmp_1491", label %"$out_of_gas_1492", label %"$have_gas_1493" - -"$out_of_gas_1492": ; preds = %"$have_gas_1484" - call void @_out_of_gas() - br label %"$have_gas_1493" - -"$have_gas_1493": ; preds = %"$out_of_gas_1492", %"$have_gas_1484" - %"$consume_1494" = sub i64 %"$gasrem_1490", %"$_literal_cost_call_1489" - store i64 %"$consume_1494", i64* @_gasrem, align 8 - %"$execptr_load_1495" = load i8*, i8** @_execptr, align 8 - %"$pre_1497" = load %Uint128, %Uint128* %pre, align 8 - %"$update_value_1498" = alloca %Uint128, align 8 - store %Uint128 %"$pre_1497", %Uint128* %"$update_value_1498", align 8 - %"$update_value_1499" = bitcast %Uint128* %"$update_value_1498" to i8* - call void @_update_field(i8* %"$execptr_load_1495", i8* getelementptr inbounds ([19 x i8], [19 x i8]* @"$sender_balance_pre_1496", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i32 0, i8* null, i8* %"$update_value_1499") - %"$gasrem_1500" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1501" = icmp ugt i64 1, %"$gasrem_1500" - br i1 %"$gascmp_1501", label %"$out_of_gas_1502", label %"$have_gas_1503" - -"$out_of_gas_1502": ; preds = %"$have_gas_1493" - call void @_out_of_gas() - br label %"$have_gas_1503" - -"$have_gas_1503": ; preds = %"$out_of_gas_1502", %"$have_gas_1493" - %"$consume_1504" = sub i64 %"$gasrem_1500", 1 - store i64 %"$consume_1504", i64* @_gasrem, align 8 - %"$execptr_load_1505" = load i8*, i8** @_execptr, align 8 - call void @_accept(i8* %"$execptr_load_1505") - %mid = alloca %Uint128, align 8 - %"$execptr_load_1507" = load i8*, i8** @_execptr, align 8 - %"$mid__sender_1508" = alloca [20 x i8], align 1 - store [20 x i8] %_sender, [20 x i8]* %"$mid__sender_1508", align 1 - %"$mid_call_1509" = call i8* @_fetch_remote_field(i8* %"$execptr_load_1507", [20 x i8]* %"$mid__sender_1508", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_1506", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i32 0, i8* null, i32 1) - %"$mid_1510" = bitcast i8* %"$mid_call_1509" to %Uint128* - %"$mid_1511" = load %Uint128, %Uint128* %"$mid_1510", align 8 - store %Uint128 %"$mid_1511", %Uint128* %mid, align 8 - %"$_literal_cost_mid_1512" = alloca %Uint128, align 8 - %"$mid_1513" = load %Uint128, %Uint128* %mid, align 8 - store %Uint128 %"$mid_1513", %Uint128* %"$_literal_cost_mid_1512", align 8 - %"$$_literal_cost_mid_1512_1514" = bitcast %Uint128* %"$_literal_cost_mid_1512" to i8* - %"$_literal_cost_call_1515" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i8* %"$$_literal_cost_mid_1512_1514") - %"$gasadd_1516" = add i64 %"$_literal_cost_call_1515", 0 - %"$gasrem_1517" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1518" = icmp ugt i64 %"$gasadd_1516", %"$gasrem_1517" - br i1 %"$gascmp_1518", label %"$out_of_gas_1519", label %"$have_gas_1520" - -"$out_of_gas_1519": ; preds = %"$have_gas_1503" - call void @_out_of_gas() - br label %"$have_gas_1520" - -"$have_gas_1520": ; preds = %"$out_of_gas_1519", %"$have_gas_1503" - %"$consume_1521" = sub i64 %"$gasrem_1517", %"$gasadd_1516" - store i64 %"$consume_1521", i64* @_gasrem, align 8 - %"$_literal_cost_mid_1522" = alloca %Uint128, align 8 - %"$mid_1523" = load %Uint128, %Uint128* %mid, align 8 - store %Uint128 %"$mid_1523", %Uint128* %"$_literal_cost_mid_1522", align 8 - %"$$_literal_cost_mid_1522_1524" = bitcast %Uint128* %"$_literal_cost_mid_1522" to i8* - %"$_literal_cost_call_1525" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i8* %"$$_literal_cost_mid_1522_1524") - %"$gasrem_1526" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1527" = icmp ugt i64 %"$_literal_cost_call_1525", %"$gasrem_1526" - br i1 %"$gascmp_1527", label %"$out_of_gas_1528", label %"$have_gas_1529" - -"$out_of_gas_1528": ; preds = %"$have_gas_1520" - call void @_out_of_gas() - br label %"$have_gas_1529" - -"$have_gas_1529": ; preds = %"$out_of_gas_1528", %"$have_gas_1520" - %"$consume_1530" = sub i64 %"$gasrem_1526", %"$_literal_cost_call_1525" - store i64 %"$consume_1530", i64* @_gasrem, align 8 - %"$execptr_load_1531" = load i8*, i8** @_execptr, align 8 - %"$mid_1533" = load %Uint128, %Uint128* %mid, align 8 - %"$update_value_1534" = alloca %Uint128, align 8 - store %Uint128 %"$mid_1533", %Uint128* %"$update_value_1534", align 8 - %"$update_value_1535" = bitcast %Uint128* %"$update_value_1534" to i8* - call void @_update_field(i8* %"$execptr_load_1531", i8* getelementptr inbounds ([19 x i8], [19 x i8]* @"$sender_balance_mid_1532", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i32 0, i8* null, i8* %"$update_value_1535") - %"$gasrem_1536" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1537" = icmp ugt i64 1, %"$gasrem_1536" - br i1 %"$gascmp_1537", label %"$out_of_gas_1538", label %"$have_gas_1539" - -"$out_of_gas_1538": ; preds = %"$have_gas_1529" - call void @_out_of_gas() - br label %"$have_gas_1539" - -"$have_gas_1539": ; preds = %"$out_of_gas_1538", %"$have_gas_1529" - %"$consume_1540" = sub i64 %"$gasrem_1536", 1 - store i64 %"$consume_1540", i64* @_gasrem, align 8 - %"$execptr_load_1541" = load i8*, i8** @_execptr, align 8 - call void @_accept(i8* %"$execptr_load_1541") - %post = alloca %Uint128, align 8 - %"$execptr_load_1543" = load i8*, i8** @_execptr, align 8 - %"$post__sender_1544" = alloca [20 x i8], align 1 - store [20 x i8] %_sender, [20 x i8]* %"$post__sender_1544", align 1 - %"$post_call_1545" = call i8* @_fetch_remote_field(i8* %"$execptr_load_1543", [20 x i8]* %"$post__sender_1544", i8* getelementptr inbounds ([9 x i8], [9 x i8]* @"$_balance_1542", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i32 0, i8* null, i32 1) - %"$post_1546" = bitcast i8* %"$post_call_1545" to %Uint128* - %"$post_1547" = load %Uint128, %Uint128* %"$post_1546", align 8 - store %Uint128 %"$post_1547", %Uint128* %post, align 8 - %"$_literal_cost_post_1548" = alloca %Uint128, align 8 - %"$post_1549" = load %Uint128, %Uint128* %post, align 8 - store %Uint128 %"$post_1549", %Uint128* %"$_literal_cost_post_1548", align 8 - %"$$_literal_cost_post_1548_1550" = bitcast %Uint128* %"$_literal_cost_post_1548" to i8* - %"$_literal_cost_call_1551" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i8* %"$$_literal_cost_post_1548_1550") - %"$gasadd_1552" = add i64 %"$_literal_cost_call_1551", 0 - %"$gasrem_1553" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1554" = icmp ugt i64 %"$gasadd_1552", %"$gasrem_1553" - br i1 %"$gascmp_1554", label %"$out_of_gas_1555", label %"$have_gas_1556" - -"$out_of_gas_1555": ; preds = %"$have_gas_1539" - call void @_out_of_gas() - br label %"$have_gas_1556" - -"$have_gas_1556": ; preds = %"$out_of_gas_1555", %"$have_gas_1539" - %"$consume_1557" = sub i64 %"$gasrem_1553", %"$gasadd_1552" - store i64 %"$consume_1557", i64* @_gasrem, align 8 - %"$_literal_cost_post_1558" = alloca %Uint128, align 8 - %"$post_1559" = load %Uint128, %Uint128* %post, align 8 - store %Uint128 %"$post_1559", %Uint128* %"$_literal_cost_post_1558", align 8 - %"$$_literal_cost_post_1558_1560" = bitcast %Uint128* %"$_literal_cost_post_1558" to i8* - %"$_literal_cost_call_1561" = call i64 @_literal_cost(%_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i8* %"$$_literal_cost_post_1558_1560") - %"$gasrem_1562" = load i64, i64* @_gasrem, align 8 - %"$gascmp_1563" = icmp ugt i64 %"$_literal_cost_call_1561", %"$gasrem_1562" - br i1 %"$gascmp_1563", label %"$out_of_gas_1564", label %"$have_gas_1565" - -"$out_of_gas_1564": ; preds = %"$have_gas_1556" - call void @_out_of_gas() - br label %"$have_gas_1565" - -"$have_gas_1565": ; preds = %"$out_of_gas_1564", %"$have_gas_1556" - %"$consume_1566" = sub i64 %"$gasrem_1562", %"$_literal_cost_call_1561" - store i64 %"$consume_1566", i64* @_gasrem, align 8 - %"$execptr_load_1567" = load i8*, i8** @_execptr, align 8 - %"$post_1569" = load %Uint128, %Uint128* %post, align 8 - %"$update_value_1570" = alloca %Uint128, align 8 - store %Uint128 %"$post_1569", %Uint128* %"$update_value_1570", align 8 - %"$update_value_1571" = bitcast %Uint128* %"$update_value_1570" to i8* - call void @_update_field(i8* %"$execptr_load_1567", i8* getelementptr inbounds ([20 x i8], [20 x i8]* @"$sender_balance_post_1568", i32 0, i32 0), %_TyDescrTy_Typ* @"$TyDescr_Uint128_42", i32 0, i8* null, i8* %"$update_value_1571") - ret void -} - -declare void @_accept(i8*) - -define void @SenderBalanceTest(i8* %0) { -entry: - %"$_amount_1573" = getelementptr i8, i8* %0, i32 0 - %"$_amount_1574" = bitcast i8* %"$_amount_1573" to %Uint128* - %_amount = load %Uint128, %Uint128* %"$_amount_1574", align 8 - %"$_origin_1575" = getelementptr i8, i8* %0, i32 16 - %"$_origin_1576" = bitcast i8* %"$_origin_1575" to [20 x i8]* - %"$_sender_1577" = getelementptr i8, i8* %0, i32 36 - %"$_sender_1578" = bitcast i8* %"$_sender_1577" to [20 x i8]* - call void @"$SenderBalanceTest_1467"(%Uint128 %_amount, [20 x i8]* %"$_origin_1576", [20 x i8]* %"$_sender_1578") - ret void -} diff --git a/tests/codegen/contr/remote_state_reads.scilla b/tests/codegen/contr/remote_state_reads.scilla index 8698f663..f59c2ece 100644 --- a/tests/codegen/contr/remote_state_reads.scilla +++ b/tests/codegen/contr/remote_state_reads.scilla @@ -160,17 +160,3 @@ transition AssignTest() k2 = Uint128 42; assign_test_10[k1][k2] := x end - -(* Check that sender balance is deducted on acceptance *) -transition SenderBalanceTest() - pre <-& _sender._balance; - sender_balance_pre := pre; - (* First accept should cause sender balance to decrease *) - accept; - mid <-& _sender._balance; - sender_balance_mid := mid; - (* Second accept should make no difference *) - accept; - post <-& _sender._balance; - sender_balance_post := post -end